Zweite Select-Feld in Abhängigkeit vom ersten?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo,

    laut Firebug wird folgendes mit Echo erzeugt:

    Quellcode

    1. <option value="3">{lang}isz.objectarts.1{/lang}</option>


    Diese Sprachvariable gibt es 100%ig!

    Das mit serverseitig generieren: Wenn ich vor dem Echo versuche, einer Variable die Sprachvariable von "$row->itemName" zuzuweisen, dann wird das echo nicht mehr ausgeführt. ;(

    Es darf in der While-Schleife rein gar nichts außer dem Echo ausgegeben werden, sonst führt er die Echos nicht mehr aus.

    Mfg Cr@@gle
  • Hallo,

    sorry, verstehe das irgendwie gerade gar nicht mehr... ;(

    Also als Basis wird das WCF eingesetzt, in der xxxForm.class.php bzw. dem Template wird dann bei onChange vom 1. Select eine func.php aufgerufen, die
    • eine Datenbankverbindung herstellt
    • das Ergebnis:

    Quellcode

    1. $result = mysql_query("SELECT * FROM isz1_1_object_arts WHERE itemID IN ($allObjectArts)");
    2. while($row = mysql_fetch_object($result))
    3. {
    4. echo '<option value="'.$row->itemID.'">{lang}'.$row->itemName.'{/lang}</option>';
    5. }


    dann wie im Beispiel aus dem Wiki mit "echo" an das 2. Select-Feld zurückgibt.

    Nur ist mein Problem jetzt, dass dieses {lang} & {/lang} 1:1 so übergeben werden, ohne das sie erst geparst werden.

    Sobald ich jetzt folgendes mache:

    Quellcode

    1. $result = mysql_query("SELECT * FROM isz1_1_object_arts WHERE itemID IN ($allObjectArts)");
    2. while($row = mysql_fetch_object($result))
    3. {
    4. *****hier würde ich gerne probieren, der Variable $itemName die passende Sprachvariable zu $row->itemName zuzuteilen.*****
    5. echo '<option value="'.$row->itemID.'">'.$itemName.'</option>';
    6. *****Jetzt wird aber das echo, also die Zeile darüber nicht mehr an das Template übermittelt, da ich davor etwas anderes noch mache.*****
    7. }


    Ich hoffe, das ist jetzt verständlicher, was ich damit meine.

    Mfg Cr@@gle
  • Value-Wert wird nicht übergeben

    Hallo,
    ich kenne mich leider noch nicht so gut mit php und ajax aus und habe folgendes Problem:
    Ich habe ein Formular (form.php) in dem am Anfang eine Selectbox angezeigt wird, wählt man ihr ein Projekt aus, wird im div-Bereich data weitere selectboxen (data.php) geladen, wenn ich nun in der nächsten Selectbox einen Eintrag auswähle soll der bereich data neu geladen (reload.php) werden und die Auswahlmöglichkeiten entsprechend der zweiten Auswahl angezeigt werden. Dank des Beispiels "Zweite Select-Feld in Abhängigkeit des ersten" funktioniert das mit dem nachladen auch wunderbar, aber leider bekomme ich den Wert der 2. Auswahl nicht an reload.php übergeben, liegt das daran, dass ich die Funktion sendRequest1(), die in der 2. Selectbox aufgerufen wird, in der Ausgangsseite form.php habe und die nicht auf die werte der verschiedenen selectboxen in data.php zugreifen kann?

    Ich hoffe man versteht mein Problem und Ihr könnt mir weiterhelfen.

    MfG Nicole
  • Ok, hab jetzt noch ein Problem und zwar entspricht meine Id nach der ersten Auswahl ja nicht mehr der id des Arrays, somit wird meine 2. Selectbox nicht gefüllt. Hier mal mein Code:

    Quellcode

    1. <?php
    2. // u can use $_POST['name'] to build your controller depending on the form name
    3. // but in a category tree the name is not important, we just need the parent id
    4. $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : 0;
    5. //database connection
    6. $db = mysql_connect("$MySQL_HOST","$MySQL_USER","$MySQL_PASSWORT") or die ("Verbindung fehlgeschlagen");
    7. mysql_select_db("$MySQL_DB",$db);
    8. //Inhalt Selectbox 1
    9. $ergebnis = mysql_query("SELECT * FROM projects");
    10. while($row = mysql_fetch_array($ergebnis)){
    11. $project[] = array('id' => $row['prj_id'], 'text' => $row['prj_name']);
    12. }
    13. //Inhalt Selectbox 2
    14. $result = mysql_query("SELECT DISTINCT suite_id FROM info WHERE project_id ='".$id."'");
    15. while ($row = mysql_fetch_array($result)) {
    16. $suite_ids[] = $row["suite_id"];
    17. }
    18. for($i = 0; $i <= count($suite_ids); $i++){
    19. $SQL_statement = "SELECT * FROM suite WHERE id='".$suite_ids[$i]."'";
    20. $resultset = mysql_query($SQL_statement);
    21. while($data = mysql_fetch_array($resultset))
    22. {
    23. $client[] = array('id' => $data["client"], 'text' => $data["client"]);
    24. }
    25. }
    26. $data=array();
    27. array_push($data, $project);
    28. if ($client != null){
    29. array_push($data, ", ", $client);
    30. }
    31. // access the childs with its parent index
    32. $return = $data[$id];
    33. echo json_encode($return);
    34. ?>
    Alles anzeigen


    Ich hoffe man versteht was ich meine!
    Dann habe ich noch eine Frage zu dem JavaScript-Teil, ich möchte nach der 1. Auswahl alle weiteren Selectboxen angezeigt bekommen , wie mach ich das den am besten? Kann ich da mit einem div um die anderen Selectboxen arbeiten oder eher nicht?
    Habt ihr vielleicht einen Tip für mich wie ich das am besten umsetze?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Nicole ()

  • Auch wenn ich mit dem Code den ich im Beitrag vorher gepostet hab, die Porojekte richtig angezeigt bekomme, also die erste Selectbox richtig gefüllt wird, muss dies ja trotzdem in eine Schleife geschrieben werden, wie in dem Beispiel [wiki]Select-Auswahl mit AJAX Abhängigkeit[/wiki], allerdings bekomm ich das gar net hin. Mein Ansatz ist folgender:

    Quellcode

    1. for($i=0; $i<4; $i++) {
    2. $ergebnis = mysql_query("SELECT * FROM projects");
    3. while($row = mysql_fetch_array($ergebnis)){
    4. for($j=($i*10); $j<count($row); $j++) {
    5. $data[$i][$j] = array('id' => $row['prj_id'], 'text' => $row['prj_name']);
    6. }
    7. }
    8. }


    Das wäre jetzt nur für die erste Selectbox funktioniert aber schon nicht. Wahrscheinlich ist es eigentlich ganz einfach, aber ich bekomm es gard einfach net hin. Wäre wirklich nett wenn ihr mir helfen könntet.
  • der code ist aber so nicht richtig.
    wenn du je nach "stufe" eine andere tabelle ansprichst, musst du das auch extra behandeln.

    im beispiel würde das so laufen:

    Quellcode

    1. // MAIN CONTENT
    2. if(isset($_REQUEST['hauptkategorie'])) {
    3. $data = hauptkategorie($_REQUEST['id']);
    4. } else if(isset($_REQUEST['unterkategorie'])) {
    5. $data = unterkategorie($_REQUEST['id']);
    6. } else if(isset($_REQUEST['unterunterkategorie'])) {
    7. $data = unterunterkategorie($_REQUEST['id']);
    8. }
    9. echo json_encode($data);


    die funktionen würden so aussehen

    Quellcode

    1. // Inhalt Selectbox 1
    2. function hauptkategorie($id) {
    3. global $db;
    4. $data = array();
    5. $ergebnis = mysql_query("SELECT * FROM projects");
    6. while($row = mysql_fetch_array($ergebnis)) {
    7. $data[] = array('id' => $row['prj_id'], 'text' => $row['prj_name']);
    8. }
    9. return $data;
    10. }
    11. // Inhalt Selectbox 2
    12. function unterkategorie($id) {
    13. global $db;
    14. $data = array();
    15. $result = mysql_query("SELECT * FROM info WHERE project_id ='".$id."' GROUP BY suite_id");
    16. while ($row = mysql_fetch_array($result)) {
    17. $data[] = array('id' => $data["client"], 'text' => $data["client"]);
    18. }
    19. return $data;
    20. }
    Alles anzeigen


    ich hoffe das ist ein Ansatz ;)