Zwei Drop-Down-Menüs die voneinander abhängig sind
Michael
- php
Guten Tag,
Ich hab ein Drop-Down-Menü, das seine Einträge aus einer Text-Datei nimmt. Da es sich nur um max. 10 Einträge, die sich täglich ändern, handelt, und ich es mir nicht zu kompliziert machen will, habe ich auch vor bei den Text-Dateien zu bleiben und nichts mit mysql zu machen. (außer es ist nicht anderst möglich)
<?php
$datei1=file("1.txt");
?>
<form><select name="datei1[]">
<?php
foreach ($datei1 as $element) {
echo "<option> <value=$element> $element</option>";
}
?>
Jetzt kommt mein eigentliches Problem:
Ich will jetzt noch ein zweites Drop-Down-Menü erstellen, das sich, aber je nach Eintrag aus dem ersten Drop-Down-Menü, eine andere Text-Datei als Quelle für die Einträge nutzt.(z.B ich wähle im 1. D-D-M den Eintrag "Essen" aus, dann sollte im 2. D-D-M die Einträge aus Essen.txt drin stehen.)
Wenn es möglich ist, würde ich bei php bleiben und kein java verwenden.
Hat jemand eine Idee, wie man das hinbekommt?
Ich wäre dem/derjenigen sehr dankbar!!!
Vielen Dank
Michael
Hallo,
du könntest ja z.b. beim onChange des einen Dropdowns das Formular abschicken und dann das 2. Dropdown anhand des übergebenen Wertes inhaltlich anpassen. Das erfordert aber ein Reload der Seite, was in meinen Augen nervig sein kann.
Mittels Javascipt ist ein direktes Ändern der 2. Selectbox ohne weiteres möglich.
Hier findest du Informationen wie man mittels Javascript den Inhalt von Selectboxen beeinflussen kann.
http://de.selfhtml.org/javascript/objekte/options.htm
Hier auch mal ein Codeschnipsel, was das Javascript angeht:
var values = new Array();
values["Bitte wählen"] = new Array("Bitte wählen");
values["Eintrag1 - Selectbox1"] = new Array("Bitte wählen","Eintrag1 - Selectbox2","Eintrag2 - Selectbox2","Eintrag3 - Selectbox2");
values["Eintrag2 - Selectbox1"] = new Array("Bitte wählen","Eintrag1 - Selectbox2","Eintrag2 - Selectbox2","Eintrag3 - Selectbox2");
values["Eintrag3 - Selectbox1"] = new Array("Bitte wählen","Eintrag1 - Selectbox2","Eintrag2 - Selectbox2","Eintrag3 - Selectbox2");
function changeVal(uebergabe)
{
// uebergabe ist gleich der wert, der aus selectbox 1 übergeben wird
myOptions = weg-zu-selectbox2;
laenge = myOptions.length;
// 2 selectbox vor dem neu befüllen leeren
for(z=laenge; z>=0; z--)
{
myOptions.options[z] = null;
}
// 2 selectbox neu befüllen
for(i in values[uebergabe])
{
if(values[uebergabe][i] != "")
{
addOption = new Option(values[uebergabe][i],values[uebergabe][i],false,false);
optionNr = parseInt(i);
myOptions[optionNr] = addOption;
}
}
}
der entspreche HTML-Schnipsel sieht so aus
<select name="selectbox1" onChange="changeVal(this.form.selectbox1[selectedIndex].value)">
<option value="Bitte wählen">Bitte wählen</option>
<option value="Eintrag1 - Selectbox1">Eintrag1 - Selectbox1</option>
<option value="Eintrag2 - Selectbox1">Eintrag2 - Selectbox1</option>
<option value="Eintrag3 - Selectbox1">Eintrag3 - Selectbox1</option>
</select>
<select name="selectbox2">
<option value="Bitte wählen">Bitte wählen</option>
</select>
Was du natürlich in diesem Fall machen müsstest ist alle txt-Dateien, deren Inhalt in der 2. Selectbox zu finden sind mit PHP einlesen und daraus dynamisch das Javascriptarray erzeugen.
mfg
Knusperklumpen
Danke Knusperklumpen für deine Antwort.
Mit Javascripts kenn ich mich halt überhaupt nicht aus, aber ich werde es mal probieren.
Wenn noch jemand eine andere Idee hat, bitte Posten!
Danke
Michael
Hallo,
Wenn noch jemand eine andere Idee hat, bitte Posten!
Also ich würde es auch machen wie Knusperklumpen bereits vorgeschlagen hat. Solltest du JavaScript aber meiden und trotzdem nicht bei jedem klick reloaden wollen, könntest du das 2. Dropdownmenü auch in einen iFrame packen, der dann neu läd.
So könnte dort eine kleine PHP-Datei sein, die per Parameter die Anweisung bekommt, welche txt-Datei geladen werden soll. Mit dem 1. Menü könnte dann eben die frame.location.href des iFrames geändert werden.
werbeklaus