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)?