• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wie kann man die Beziehung zweier Auswahllisten aufbauen?

Status
Für weitere Antworten geschlossen.

Etoilée

Neues Mitglied
Bisher habe ich zwei Auswahllisten aufgebaut. Die Auswahllisten haben eine eigene Tabelle (tab_bereich und tab_thema). Sie werden von der Datenbank erfüllt. Das hat wunderbar geklappt.

Aber ich habe ein Problem und das ist zwar, wenn man einen Bereich in der ersten Auswahlliste auswählt, dann sollen nur die Listen des ausgewählten Bereichs in der zweiten Auswahlliste angezeit werden. Ich habe tagelang nach einer Lösung gesucht, aber vergeblich. Wahrscheinlich habe ich den falschen SQL-Statement gegeben oder habe ich was vergessen in der PHP - Skript zu programmieren. :?

Ich würde mich freuen, wenn es eine Lösung gibt.

Code:
<div id="content">
            <form  method="post" action="xxx.php">
             <div id="formular">
            <label for="bereich">Bereich</label>
            <select name="bereichliste" size="1">
            <?php
            $sql    = "SELECT * FROM tab_bereich;";
            $res    = mysql_query($sql);
                if($res == false){
                    echo ("Fehler in SQL-Statement");
                    return;
                }
            $num    = mysql_num_rows($res);
                for($i=1; $i<=$num; $i++){
                $datensatz = mysql_fetch_object($res);
                
                $IDB        = $datensatz ->IDB;
                $bereich    = $datensatz ->bereich;
                
                $zeile        = "$bereich";
                echo "<option value='<?php echo $bereich?>' selected='selected'>$zeile</option>";
            }//ende for-schleife
            ?>
            </select>
            <label for="thema">Thema</label>
            <select name="themaliste" size="1">
            <?php     
                $bereichliste = $_POST['bereichliste'];
                
                $sql    = "SELECT * FROM tab_thema WHERE `bereich` = $bereichliste;";
                $res    = mysql_query($sql);
                    if($res == false){
                        echo ("Fehler in SQL-Statement");
                        return;
                    }
                $num    = mysql_num_rows($res);
            
                if($num >0){
                $datensatz = mysql_fetch_object($res);
                
                $IDT        = $datensatz ->IDT;
                $thema        = $datensatz ->thema;
                
                $zeile        = "$thema";
                    echo "<option value='$thema'>$zeile</option>";
                }//ende for-schleife
            ?>
        </select>
        </form>
        </div>
 
Wenn das ganze dynamisch laufen soll musst du wohl oder übel auf Ajax zurückgreifen.

Sende nach dem ersten Auswählen ein Ajax Request und les die Antwort (die Antwort sollten die Auswahlmöglichkeiten sein) aus, diese lädst du dann in die 2. Auswahlliste ein
 
@Frank

Ich kenne mich mit Ajax nicht gut aus. Gibt es eine Lösung ohne Ajax? Ich würde gerne nur PHP anwenden. Danke für dein Bemühen!

@sabf

Wenn die beiden Auswahlliste denselben Code haben, dann können die Inhalte von den beiden angezeigt werden. Ich habe es getest. Es hat wunderbar geklappt.
Dann habe ich den nächsten Schritt gemacht. Ich will so: wenn man einen Bereich in der 1. Auswahlliste auswählt, dann sollen die Listen des ausgewählten Bereichs in der 2. Auswahlliste angezeigt werden. Ich habe versucht es zu programmieren. Beim Test bleibt der Inhalt der ersten Auswahlliste anzeigen und der andere verschwindet.
Ich denke, dass ich bestimmt falsch programmiert habe. Hat das vielleicht mit Select - Event zu tun?
 
@kratzbaum

wie denn? Was ist mit der PHP-Programmierung, die ich aufgebaut habe? Soll ich wegen Java-Script noch einmal von vorne anfangen?
 
wenn sich die eine Liste abhängig von der Andern verhalten soll dann kommst du um Javascript nicht herum. Die eleganteste Javascript Lösung wäre, wie gesagt, mit Ajax und einem Asynchronen nachladen der benötigten Daten für die zweite List.

Wenn du nur bei php bleiben willst wirst du um einen manuellen Reload der Seite (also die zweite Auswahlliste auf der nächsten Seite) nicht drumherum kommen
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben