Hallo,
habe hier ein Javascript gefunden, mit welchem man 2 Select-Felder insofern nutzt, dass z.B. Select-Feld 1 eine Hauptkategorie enthält, und Select-Feld 2 die dazugehörige Subkategorie. Wählt man eine Hauptkategorie, ändert sich im zweiten Select-Feld dynamisch der Inhalt.
Meine MySQL-Tabelle sieht so aus:
id | category_name | category_id
1 | obst | 0
2 | apfel | 1
3 | birne | 1
Habe es versucht so umzusetzen:
Das javascript:
Die Ausgabe der Subkategorien funktioniert nicht mehr korrekt. Zuerst wird gar kein Feld angezeigt, was daran liegt, dass display:none für alle gilt. Ich weiß aber nicht, wie ich in der Schleife standardmäßig die erste Subkategorie anzeigen lassen soll.
Dann stimmt die Zahl der Ausgabe nicht. Es wird immer nur eine Subkategorie angezeigt. Und wenn ich die Hauptkategorie im Dropdownfeld ändere, erscheinen auch plötzlich mehrere Dropdownfelder von den Subkategorien.
Gibt es für dieses Javascript eine PHP/MySQL-Lösung. Was mache ich falsch?
habe hier ein Javascript gefunden, mit welchem man 2 Select-Felder insofern nutzt, dass z.B. Select-Feld 1 eine Hauptkategorie enthält, und Select-Feld 2 die dazugehörige Subkategorie. Wählt man eine Hauptkategorie, ändert sich im zweiten Select-Feld dynamisch der Inhalt.
Meine MySQL-Tabelle sieht so aus:
id | category_name | category_id
1 | obst | 0
2 | apfel | 1
3 | birne | 1
Habe es versucht so umzusetzen:
PHP:
//Die Abfrage der Hauptkategorien
$sql0 = "SELECT * FROM `$dbtable4` WHERE `category_id` = '0'";
$query0 = mysql_query ($sql0, $dbconnect);
for ($i1 = 0; $i1 < mysql_num_rows ($query0); $i1++) {
$array0[$i1] = mysql_fetch_array ($query0);
}
//Die Abfrage der Subkategorien
$sql = "SELECT * FROM `$dbtable4` WHERE `category_id` != '0'";
$query = mysql_query ($sql, $dbconnect);
for ($i = 0; $i < mysql_num_rows ($query); $i++) {
$array[$i] = mysql_fetch_array ($query);
}
Das javascript:
Code:
<script type="text/javascript"><!--
function hideSelect(obj) {
document.getElementById(obj.options[obj.selectedIndex].value).style.display = 'inline';
for (var i=0; i<obj.options.length; i++) {
if (i != obj.selectedIndex) {
document.getElementById(obj.options[i].value).style.display = 'none';
}
}
}
//--></script>
PHP:
<select onchange="hideSelect(this)">
//Ausgabe der Hauptkategoriene im Select-Feld 1 (Soweit funktioniert noch alles)
<?php for ($i1 = 0; $i1 < count ($array0); $i1++) { echo "<option value=\"".$array0[$i1][id]."\">".$array0[$i1][category]."</option>"; } ?>
</select>
//Ausgabe der Subkategorien (funktioniert nicht mehr)
<?php for ($i = 0; $i < count ($array); $i++) { echo "<select id=\"".$array[$i][category_id]."\" name=\"".$array[$i][category_id]."\" style=\"display:none\"><option value=\"".$array[$i][id]."\">".$array[$i][category]."</option></select>"; } ?>
Die Ausgabe der Subkategorien funktioniert nicht mehr korrekt. Zuerst wird gar kein Feld angezeigt, was daran liegt, dass display:none für alle gilt. Ich weiß aber nicht, wie ich in der Schleife standardmäßig die erste Subkategorie anzeigen lassen soll.
Dann stimmt die Zahl der Ausgabe nicht. Es wird immer nur eine Subkategorie angezeigt. Und wenn ich die Hauptkategorie im Dropdownfeld ändere, erscheinen auch plötzlich mehrere Dropdownfelder von den Subkategorien.
Gibt es für dieses Javascript eine PHP/MySQL-Lösung. Was mache ich falsch?