Dropdownfeld durchsuchen

alex130

Erfahrenes Mitglied
Hi
Ich habe eine Frage und zwar, wie kann ich ein Dropdownfeld durchsuchen?
Also ich habe in meiner Datenbank Namen, z.B. Müller, Mustermann, ....
und die will ich auslesen und in ein Dropdownfeld tun, das schaffe ich mit PHP, aber nun will ich, dass daneben ein Suchfeld ist, und wenn ich z.B. Müller eingebe, dann sind in der Dropdownliste nur noch alle Namen mit Müller.
Ich hoffe ihr wisst, was ich meine und könnte mir helfen.
Thx
 
Hi
Ja ich glaube, das ist genau das, was ich gesucht habe.
Ich werde es mal so umbauen wie ich es brauche.
Danke
 
Hi
Ich habs jetzt angepasst, aber jetzt hab ich noch eine Frage und zwar, kann man es auch so machen, dass nicht nur das erste Wort sondern die ganze Zeile dursucht wird? Wenn ich jetzt z.B. Herr Max Müller habe und ich gebe, Müller ein, dann kommt nix.
Thx
 
Jo, das geht, ersetzte dieses:
Code:
if(woerterbuch[i].toLowerCase().indexOf(tempname) == 0 && tempname.length != woerterbuch[i].length){

durch jenes:
Code:
if(woerterbuch[i].toLowerCase().indexOf(tempname) >= 0 && tempname.length != woerterbuch[i].length){
 
Hi
Ich find das leider nicht, meinst du auch diesen Code, von dir?
Ein etwas anderer Ansatz(die Liste ist auch ohne JS benutzbar):
Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
//Hier werden später die Optionen zwischengelagert
arrWb = false;

function autoindex()
{
    //Texteingabefeld
    objInput = document.f1.eingabe;
    
    //Liste
    objList = document.f1.matches;
    
    //"Wörterbuch" beim ersten Aufruf anlegen
    if(!arrWb)
        {
            arrWb=new Array();
            for(j=0;j<objList.options.length;++j)
                {
                    arrWb.push(
                                new Option(
                                            objList.options[j].text,
                                            (objList.options[j].value=='')
                                                ? objList.options[j].text
                                                : objList.options[j].value)
                                           );
                }
        }     
    
    //Liste leeren
    objList.options.length = 0;
    
    //Liste neu füllen
    for(k=0;k<arrWb.length;++k)
        {
        if(objInput.value==''||arrWb[k].text.match(new RegExp('^'+objInput.value,'i')))
            {
                objList.options[objList.options.length]=arrWb[k];
            }
        }
}

//-->
</script>
<style type="text/css">
<!--
input, select{ width:200px;} 
-->
</style>
</head>
<body>
    <form name="f1">
        <input name="eingabe"type="text"onkeyup="autoindex()"onmouseup="autoindex()"onchange="autoindex()"autocomplete="off"><br>
        
        <select multiple size="5" name="matches">
            <option>Apfel</option>
            <option>Apfel1</option>
            <option>Apfel2</option>
            <option>Apfel3</option>
            <option>Apfel4</option>
            <option>Auge</option>
            <option>Auto</option>
            <option>Medien</option>
            <option>mediengestalter</option>
            <option>medienfachmann<option>
        </select>
    </form>
</body>
</html>
...Test:Autoindex mit Javascript
 
Nö, da hatte ich einen anderen Code am Wickel :-)

In dem zuletzt von dir geposteten Code müsstest du dieses:
Code:
if(objInput.value==''||arrWb[k].text.match(new RegExp('^'+objInput.value,'i')))
durch jenes
Code:
if(objInput.value==''||arrWb[k].text.match(new RegExp(objInput.value,'i')))
ersetzen
 
Hi
Kannst du mir bitte nochmal helfen und zwar, habe ich folgende functions:
PHP:
// Die Hauptkategorien werden ausgelesen und in ein Dropdownfeld geladen
function category_query($mysql_table_categories)
{
	$category_id = mysql_query('SELECT * FROM `'.$mysql_table_categories.'` WHERE `category_type` = "0"');
	echo '<select name="category_id-0">';
	while($category_query = mysql_fetch_assoc($category_id))
	{
		echo '<option value="'.$category_query['category_id'].'">'.$category_query['category_name'].'</option>';
	}
	echo '</select>';
}


// Die Subkategorien werden ausgelesen und in ein Dropdownfeld geladen
function category_query2($mysql_table_categories)
{
	$category_id2 = mysql_query('SELECT * FROM `'.$mysql_table_categories.'` WHERE `category_type` = "1"');
	echo '<select name="category_id-1">';
	while($category_query2 = mysql_fetch_assoc($category_id2))
	{
		echo '<option value="'.$category_query2['category_id'].'">'.$category_query2['category_name'].'</option>';
	}
	echo '</select>';
}
und ich will wenn ich bei der ersten Dropdownliste was auswähle, dass bei der 2 Dropdownliste nur noch die mit der oberen ID ausgelesen werden.
Wie muss der Code dann aussehen?
Danke


//edit:
Jetzt sieht mein Code so aus:
PHP:
	<?php 	
	$category_id = mysql_query('SELECT * FROM `'.$mysql_table_categories.'` WHERE `category_type` = "0"');
	echo '<select name="category_id_0" onkeyup="autoindex()"onmouseup="autoindex()"onchange="autoindex()">';
	while($category_query = mysql_fetch_assoc($category_id))
	{
		echo '<option value="'.$category_query['category_id'].'">'.$category_query['category_name'].'</option>';
	}
	echo '</select>'; 
	?>
	</td>
  </tr>
  <tr>
    <td>Unterkategorie:</td>
    <td>
	<?php	
	$category_id2 = mysql_query('SELECT * FROM `'.$mysql_table_categories.'` WHERE `category_type` = "1"');
	echo '<select name="category_id-1">';
	while($category_query2 = mysql_fetch_assoc($category_id2))
	{
		echo '<option value="'.$category_query2['category_id'].'">'.$category_query2['category_name'].'</option>';
	}
	echo '</select>'; 
	?>
und hier meine javascript datei:
HTML:
//Hier werden später die Optionen zwischengelagert
arrWb = false;

function autoindex()
{
    //Texteingabefeld
    objInput = document.product.category_id_0;
    
    //Liste
    objList = document.product.category_id-1;
    
    //"Wörterbuch" beim ersten Aufruf anlegen
    if(!arrWb)
        {
            arrWb=new Array();
            for(j=0;j<objList.options.length;++j)
                {
                    arrWb.push(
                                new Option(
                                            objList.options[j].text,
                                            (objList.options[j].value=='')
                                                ? objList.options[j].text
                                                : objList.options[j].value)
                                           );
                }
        }     
    
    //Liste leeren
    objList.options.length = 0;
    
    //Liste neu füllen
    for(k=0;k<arrWb.length;++k)
        {
        if(objInput.value==''||arrWb[k].text.match(new RegExp(objInput.value,'i')))
            {
                objList.options[objList.options.length]=arrWb[k];
            }
        }
}
Aber es funktoniert irgenwie nicht.
Ich hoffe du kannst mir helfen.
Danke
 
Zuletzt bearbeitet:
Zurück