Hab ein JavaScript-Problem und bin da noch ziemlicher Newb, vielleicht ist es nur ein kleiner Fehler den ein versierter JavaScripter direkt sieht.
Ich habe eine Select-Box zur Auswahl von Kategorien, bei einer Auswahl soll daneben eine zweite Select-Box mit den zugehörigen Unterkategorien erscheinen (und zu dieser bei Auswahl gegebenenfalls nochmals eine). Das klappt leider nicht, beim Auswählen einer Kategorie passiert gar nichts ![]()
Dafür lese ich zunächst alle Kategorien aus der Datenbank aus und füttere sie in einen mehrdimensionalen JavaScript-Array (dieser wird auch korrekt gefüllt):
<?php
$sql = "SELECT id,kategorie,parentid FROM branche";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
$i = 0;
while($row = mysql_fetch_array($result))
{ $branchen[$i]= $row; $i++; }
echo "var arrParts[] = new array();";
for($i=0;$i<$count;$i++)
{
if(!$branchen[$i]['parentid'])
{
$sub = 0;
echo "var arrParts[".$branchen[$i]['id']."] = new array();";
for($j=0;$j<$count;$j++)
{
if($branchen[$i]['id']==$branchen[$j]['parentid'])
{
$sub++;
echo "var arrParts[".$branchen[$i]['id']."]['.$sub.'] = new array();";
echo "arrParts[".$branchen[$i]['id']."]['.$sub.'][\'text\']='".$branchen[$j]['kategorie']."';";
echo "arrParts[".$branchen[$i]['id']."]['.$sub.'][\'value\']='".$branchen[$j]['id']."';";
$sub1 = 0;
for($k=0;$k<$count;$k++)
{
if($branchen[$j]['id']==$branchen[$k]['parentid'])
{
$sub1++;
echo "var arrParts[".$branchen[$j]['id']."]['.$sub.'] = new array();";
echo "arrParts[".$branchen[$j]['id']."][\'sub\']=1;";
echo "arrParts[".$branchen[$j]['id']."]['.$sub1.'][\'text\']='".$branchen[$k]['kategorie']."';";
echo "arrParts[".$branchen[$j]['id']."]['.$sub1.'][\'value\']='".$branchen[$k]['id']."';";
}
}
}
}
}
}
?>
Alles anzeigen
Die JavaScript-Funktion die das ganze bewerkstelligen soll:
var AuswahlU;
var ausgewaehlteins;
var ausgewaehltzwei;
var objsel;
function ersteAuswahl(objSel)
{
document.myform.weiter.disabled = true;
document.getElementById('Unterkategorieeins').style.display='none';
document.getElementById('selPartseins').style.display='none';
AuswahlU =false;
// Objekt fuer zweite Select-Gruppe
objSelNew = document.getElementById('selPartseins');
// Optionen loeschen
objSelNew.length = 0;
objSelNew.style.display = 'inline';
for(i=1; i<arrParts[objSel.value].length; i++)
{
// Neue Option erstellen
objOpt = new Option(arrParts[objSel.value][i]['text'],arrParts[objSel.value][i]['value']);
objSelNew.options[objSelNew.length] = objOpt;
ausgewaehlteins=objSel.value;
}
}
Alles anzeigen
Und der zugehörige HTML-Bereich:
<select name='Kategorie_eins' id='Parts' onChange='ersteAuswahl(this);'>
<option value='0'>Bitte wählen</option>
<?php
$sql = "SELECT id,kategorie FROM branche WHERE parentid IS NULL";
$result = mysql_query($sql);
$options = "";
while($row = mysql_fetch_array($result))
{ $options.= "<option value='".$row['id']."'>".$row['kategorie']."</option>"; }
echo $options;
?>
</select>
<select id='selPartseins' style='display:none;' name='Unterkategorie_eins' onChange='UnterkategorieAuswahleins(this);'>
</select>
<select id='Unterkategorieeins' style='display:none;' name='Unterunterkategorie_eins' onChange='UUAuswahleins(this);'>
</select>
Alles anzeigen
Sieht vllt. jemand einen Fehler in dem Konstrukt, bzw. ist das in dieser form überhaupt vernünftig umgesetzt (der javascript-teil)?