AJAX + SQL + 2 Select Felder

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

  • Hallo d0nUt – danke für die schnelle Antwort.

    Also .... ich bringe es nicht hin, irgendwo habe ich einen Knoten!

    Mein Plan: Ich habe in der Datenbank die Tabelle Länder,
    land_id (PK)
    land_bezeichnung

    die weitere Tabelle ist Bundesland,
    bland_id (PK)
    land_id
    bland_bezeichnung.

    Mein Ziel: Ich will, dass in dem ersten Listenfeld die Länder auszuwählen sind und in Abhängigkeit im zweiten Listenfeld nur die Bundesländer erscheinen. Nach der Auswahl des Bundeslandes geht es weiter was bedeutet, ich muss auf beide ID`s zugreifen können (in PHP), da diese Eingabe die Grundlage für eine weitere Tabelle ist.
    Geht das überhaupt mit Ajax?
    Wenn ja, könntest mir nicht die Routinen erläutern, was ich dazu brauche – oder ist die Bitte unverschämt?

    Grüße
  • hehe, ist kein problem

    hier mal eine vermeintliche lösung (ungetestet)

    formular.php

    Quellcode

    1. <html><head>
    2. <title>AJAX PHP Beispiel mit Select</title>
    3. <script type="text/Javascript">
    4. <!--
    5. function sendRequest() {
    6. try {
    7. req = window.XMLHttpRequest?new XMLHttpRequest():
    8. new ActiveXObject("Microsoft.XMLHTTP");
    9. } catch (e) {
    10. //Kein AJAX Support
    11. }
    12. req.onreadystatechange = handleResponse;
    13. id = document.getElementById('dropdown').value;
    14. req.open('get', 'func.php?s='+ id);
    15. req.send(null);
    16. }
    17. function handleResponse() {
    18. if ((req.readyState == 4) && (req.status == 200)) {
    19. document.getElementById('select2').innerHTML = req.responseText;
    20. }
    21. }
    22. //-->
    23. </script>
    24. </head>
    25. <body>
    26. <p />Wählen Sie einen Eintrag aus um den Inhalt zu laden
    27. <p /><select id="dropdown" onChange="sendRequest()">
    28. <?
    29. include 'connect.php'; // Hier die Verbindung zur Datenbank herstellen
    30. $result = mysql_query("SELECT land_id,land_bezeichnung FROM `Laender`; ");
    31. while($row = mysql_fetch_object($result))
    32. {
    33. echo '<option value="'.$row->land_id.'">'.$row->land_bezeichnung.'</option>';
    34. }
    35. ?>
    36. </select>
    37. <div id="select2"></div>
    38. </body></html>
    Alles anzeigen


    func.php

    Quellcode

    1. <?
    2. echo '<selct name="bundesland">';
    3. $result = mysql_query("SELECT bland_id,bland_bezeichnung FROM `Bundesland` WHERE `land_id` = $_GET[s]; ");
    4. while($row = mysql_fetch_object($result))
    5. {
    6. echo '<option value="'.$row->bland_id.'">'.$row->bland_bezeichnung.'</option>';
    7. }
    8. echo '</select>';
    9. ?>
  • Hallo d0nUt – danke für die Mühe, die Du Dir gemacht hast.
    Ich habe alles in zwei Scripte kopiert zum testen, doch bleibt das 1. Listenfeld leer, ich vermute, dass dadurch das zweite Listenfeld auch nicht angezeigt wird?

    Es ist als Anfänger nicht leicht! Eigentlich weiß ich kaum, wo ich den Fehler suchen soll.

    LG
  • aber du hast schon alle daten in der [coderwiki]Informationen/Datenbank[/coderwiki]?
    denn, würde was am code nicht stimmen, dann würde er zumindest einen fehler ausgeben

    ergänze deine $result abfrage bitte mal zu folgendem

    Quellcode

    1. $result = mysql_query("SELECT land_id,land_bezeichnung FROM `Laender`; ")or die('fehler in sql abfrage');
  • das heißt aber, dass alles korrekt gelesen wurde

    direkt unter das $result = ...
    könntest du noch ein

    Quellcode

    1. echo 'die tabelle hat '.mysql_num_rows($result).' eintraege';

    machen um zu überprüfen ob die tabelle wirklich inhalte hat.

    falls eine zahl >0 rauskommt, dann probier noch folgenden code (irgendwo in der datei platzieren)

    Quellcode

    1. <?
    2. $result = mysql_query("SELECT * FROM `Laender`; ");
    3. while($row = mysql_fetch_array($result))
    4. {
    5. print_r($row);
    6. }?>
  • Hi,

    also, ich bin nun irgendwie im großen schwarzen Loch verschwunden - blicke es nicht mehr.

    Ich habe den Code: echo 'die tabelle hat '.mysql_num_rows($result).' eintraege'; direkt nach $result.. eingebaut, doch er zeigt nichts an.

    Die Datenbank ist da und ich kann mit anderen Skripten darauf zugreifen.

    Ich denke, einfach Abstand gewinnen und noch einmal von vorn beginnen.

    Außerdem will ich Dir nicht die Osterfeiertage durch mein Problem vermießen.

    Einstweilen vielen Dank.

    Gruß
  • fehlt was? vielleicht

    Habe alles ausprobiert, es funktionierte, als ich drauf kam, daß auch in der func.php zuvor ein connect zur Datenbank hergestellt werden muß!!!

    Quellcode

    1. <?
    2. require ('.htmysql');
    3. include 'dblib.inc'; // Hier die Verbindung zur Datenbank herstellen
    4. //Inhalte laden
    5. $result = mysql_query("SELECT gb_id, gb_mail, gb_url FROM `j4u_gb` WHERE `gb_id` = $_GET[s]; ");
    6. while($row = mysql_fetch_object($result))
    7. {
    8. echo '<p /><b>'.$row->gb_mail.'</b><br />'.$row->gb_url;
    9. }
    10. ?>
    Alles anzeigen
  • Hallo,

    ich habe bei mir auch dieses Script in ein Formular eingebaut. Wie kann ich nun mit dem inhalt der Selectbox auf der func.php weiterarbeiten.

    Ich will nun die Sachen aus beiden Select Boxen eintragen in eine SQL Datebank, habe es versucht mit dem $_POST befehl mit PHP nur da das Selectfeld ja nicht auf der Hauptseite ist auf der das Formular abgeschickt wird muss man dies denke ich mal anders lösen.

    Hat da jemand eine Idee?
    Gruß
    C0dEx
  • "d0nUt" schrieb:

    nein, wenn du ein <form> drumherum hast und das select einen namen hat, funktionierts auch so.


    in der func.php habe ich nun kein form drum gemacht aber in der hauptseite ist ein Forum halt drum herum wo die slect box aufgerufen wird.

    Es habe das schon soweit mal getestet aber es wird nie was in die Datenbank eingetragen
    Gruß
    C0dEx
  • Hi,
    es tut mir leid das ich so ein altes thema raushole, aber auf google seid ihr damit oben gelistet :D

    Also, die abfragen usw klappen alle wunderbar, nur ich hab eine frage.

    Kann man das script umschreiben, so das es nicht in einer func.php ist, sondern im selben php dokument?

    req.open('get', 'func.php?s='+ id);

    Ziel ist es, einfach eine datei zu sparen, sofern das geht :D

    Danke schonmal
  • Hi,

    natürlich kannst du auch die selbe Datei aufrufen.
    Dafür musst du nur den Inhalt der func.php in dein Script kopieren und eine if Konstruktion einbauen die eine Anfrage und ein Ajax Request unterscheiden kann, da du bei der Rückgabe den restlichen Overhead entfernen musst.

    Für die Unterscheidung könntest du den Header abfragen oder viel einfacher den Post Parameter.
    Z.B könntest du beidem request ajax=true anhängen um das abzufragen.

    Hast du gesehen, dass es eine neue Version gibt ?
    [wiki]Select-Auswahl mit AJAX Abhängigkeit[/wiki]

    Beim nächsten mal bitte einfach ein neues Thema eröffnen, anstatt so ein altes Thema wieder zu eröffnen.