DropDown befüllt neues DropDown

Thisi76

Grünschnabel
Hallo,

ich habe nun schon ein paar Ansätze gefunden wie ich es mache, habe aber das Gefühl, dass ich auf dem Holzweg bin.

PHP:
<?php
error_reporting(E_ALL);
include ("../dbconnect.php");
 
  if (empty($_GET["auswahl"])){
  echo '          
<html>
<head>
<title> DropDown aus SQL-Daten </title>
<script type="text/javascript">
function auswaehlen(s){
       wert=s.options[s.selectedIndex].value;
         if(wert!=0){
            location.href="DropDownDrei.php?auswahl=" + wert;
         }
         else{
            location.href="DropDownDrei.php";
         }
      }
</script>
</head>
<body>
<form action="" method="post">
    ';      
      echo "<select name='drop1' onChange='auswaehlen(this)'>";
      echo "<option value=''>Bitte w&auml;hlen...</option>";
      
      $query="SELECT Id, CategoryOverview FROM CategoryOverview";
      $ergebnis = mysql_query($query) or die("Err.:".mysql_error());
      //echo ($query);
         while($row=mysql_fetch_array($ergebnis)){
            echo "<option value='".$row["Id"]."'>".$row["CategoryOverview"]."</option>";
         } //while $row
         echo "<option value='0'>zur&uuml;ck...</option>";
         echo "</select>";
  }
  else
  { 
  echo'
  <form action="" method="post">
    ';  

      echo "<select name='drop2' onChange='auswaehlen(this)'>";
      echo "<option value=''>Bitte w&auml;hlen...</option>";
      
      $query="SELECT Id, Category FROM Category WHERE IdCategoryOverview='".$_GET['auswahl']."'";
      $ergebnis = mysql_query($query) or die("Err.:".mysql_error());
      //echo ($query);
         while($row=mysql_fetch_array($ergebnis)){
            echo "<option value='".$row["Id"]."'>".$row["Category"]."</option>";
         } //while $row
         echo "<option value='0'>zur&uuml;ck...</option>";
         echo "</select>";
   }
   ?>
</form> 
</body>
</html>

Es funktioniert, dass ich beim ersten DropDown einen Eintrag auswähle und dann den ausgewählten Wert übergebe. Mit diesem Wert frage ich in der zweiten Abfrage die nächste befüllung des zweiten DropDown ab. Bis hierhin funktioniert das ganze einwandfrei. Nur wenn ich nun einen Eintrag im zweiten DropDown auswähle passiert nichts mehr. Ab hier komme ich nicht mehr weiter.

Ich brauche insgesamt drei DropDown die im Wasserfallprinzip aufgebaut sind (1 ohne Abhängigkeit, 2 abhängig von 1 und 3 abhängig von 2)

Nun meiner Fragen:
Gibt es vielleicht einen "besseren" Weg das ganze zu erstellen, wenn ja wie oder aber bin ich auf dem "richtigen" Weg und mir fehlt nur noch ein kleiner Teil. Ich bin für alles offen.

Besten Dank & Gruß,
Thisi
 
Nachtrag:

ich bekomme jetzt immer eine Fehlermeldung vom JS "Objekt erwartet". Vielleicht sagt einem das was.

Danke & Gruß,
Thisi
 
Du kannst doch einfach mit einer IF-Abfrage zuerst einmal steuern ob die zweite bzw. die dritte Auswahlbox überhaupt angezeigt wird.

Wenn ein Wert von Auswahlbox 1 übergeben wird, wird die Auswahlbox 2 angezeigt und es wird die SELECT-Anweisung ausgeführt, die diese Box mit Daten füllt.

Wenn ein Wert von Auswahlbox 2 übergeben wird (was nur sein kann wenn auch schon ein Wert von Box 1 ankommt) wird die Auswahlbox 3 angezeigt und es wird ebenfalls die SELECT-Anweisung ausgeführt um Box 3 zu füllen.

PHP:
IF (ISSET($_GET["auswahl1"]) AND $_GET["auswahl1"] != "") {
  // SELECT-Anweisung ausführen und Auswahlbox 2 anzeigen
}

IF (ISSET($_GET["auswahl2"]) AND $_GET["auswahl2"] != "") {
  // SELECT-Anweisung ausführen und Auswahlbox 3 anzeigen
}
 
Bin mir jetzt nicht sicher, ob mir deine Antwort wirklich weiterhilft. Im Moment funktioniert das DropDown wie folgt:

Beim Start der Seite wird der Inhalt für das erste DropDown gefüllt. Jetzt wähle ich hier einen Eintrag aus, die Seite wird neu geladen und das zweite DropDown (mit dem WHERE von Auswahl 1) wird angezeigt. Nun funktioniert der klich auf das DropDown zwei nicht mehr. Hier passiert nichts mehr aus der Fehlermeldung "Objekt erwartet". Bei deiner Lösung habe ich noch keine Werte übergeben sondern "nur" die Unterscheidung gemacht was ich anzeigen will. Das war aber eigentlich nicht das Problem. Oder bin ich jetzt total daneben?

Frage,
Thisi
 
So bald du in der Box 1 einen Wert auswählst, sendet dein Java Script die Seite mit eben diesem Wert ab.

Wenn jetzt die Seite erneut mit diesem Wert geladen wird, hast du den Wert übergeben durch den du die Box 2 befüllst (da ein Wert übergeben wird, wird die Box zum einen überhaupt angezeigt und zum anderen die entsprechenden Werte für diese Box ermittelt).

PHP:
// Wird nur ausgeführt, wenn die Seite mit einem Wert der Box 1 geladen wird
IF (ISSET($_GET["auswahl1"]) AND $_GET["auswahl1"] != "") {
  // SELECT-Anweisung ausführen und Auswahlbox 2 anzeigen
}

Da bis jetzt von Box 2 noch nichts übergeben wurde, wird bis jetzt nur Box 1 (die ja immer angezeigt wird) und Box 2 angezeigt.

Wenn du jetzt in Box 2 einen Eintrag auswählst, wird die Seite durch das Java Script erneut abgeschickt. Diesmal mit den Wert der Box 1 und dem Wert von Box 2.

Wenn die Seite jetzt geladen wird, wird nochmals die Box 2 angezeigt und gefüllt und gleich im Anschluß wird durch den zweiten Wert auf die Box 3 angezeigt und entsprechend befüllt.

PHP:
// Wird nur ausgeführt, wenn die Seite mit einem Wert der Box 2 (und somit auch Wert von Box 1) geladen wird
IF (ISSET($_GET["auswahl2"]) AND $_GET["auswahl2"] != "") {
  // SELECT-Anweisung ausführen und Auswahlbox 3 anzeigen
}

Der Fehler den du jetzt noch hast, ist das Java Script. Es wird immer nur die Variable "auswahl" übergeben, welche den Wert der Box 1 enthält. Du musst aber in das Script noch den Wert der Box 2 reinbringen!!
 
Ah, habe ich soweit verstanden. Ich werde das mal ausprobieren und dann den gesamten veränderten Code Posten. Bin mal gespannt was da raus kommt.

Danke schon mal und bis bald.

Grüße,
Thisi
 
Zurück