AJAX mit Select Liste für Fahrzeugauswahl (hersteller > typ > hubraum > etc)

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

  • AJAX mit Select Liste für Fahrzeugauswahl (hersteller > typ > hubraum > etc)

    Hallo Leute, bin neu hier und auch in Ajax... und ich habe Arge Probleme...

    Ich habe vor eine Suche nach Fahrzeugen aufzubauen, die üblichen verdächtigen sind hierbei die Daten

    Hersteller
    Typ
    Hubraum
    Leistung
    Baujahr

    All diese Felder können von Anfang an zu sehen sein, sollen jedoch dynamisch gefüllt werden.
    Heisst also man wählt einen Hersteller --> Die Typen des Herstellers werden ins Select geschrieben -> Typ Wählen --> eingetragene Hubraum werte werden ins nächste Selectfeld eingetragen ... .usw..

    Mit 2 Feldern funktioniere das auch ganz prima, nur jetzt stehe ich auf dem Schlauch.
    Genutzt habe ich das hier LINK
    für meinen bisherigen Fortschritt... nun denke ich müsste ich das sendRequest umstricken so dass es zwischen den Eingaben der verschiedenen Feldern unterscheiden kann und jeweils auf die richtge Funktion verweist, aber wie bekomme ich es hin das die Felder jeweils dynamisch gefüllt werden???

    Ich weiß nicht weiter... :-/ kann mir jemand einen Denkanstoss geben?

    hier mal mein code, das es verständlicher wird ..


    komplett

    PHP-Quellcode

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <title>Testseite zum nachladen von Dynamischen Inhalten</title>
    6. <script type="text/javascript">
    7. <!--
    8. function sendRequest(client) {
    9. if (client==1)
    10. {
    11. var req;
    12. try {
    13. req = window.XMLHttpRequest?new XMLHttpRequest():
    14. new ActiveXObject("Microsoft.XMLHTTP");
    15. } catch (e) {
    16. //Kein AJAX Support
    17. }
    18. req.onreadystatechange = function() {
    19. if ((req.readyState == 4) && (req.status == 200)) {
    20. document.getElementById('inhalt').innerHTML = req.responseText;
    21. }
    22. };
    23. var id = document.getElementById('dropdown').value;
    24. req.open('post', 'func.php');
    25. req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    26. req.send('s='+id);
    27. }
    28. if (client==2)
    29. {
    30. var req;
    31. try {
    32. req = window.XMLHttpRequest?new XMLHttpRequest():
    33. new ActiveXObject("Microsoft.XMLHTTP");
    34. } catch (e) {
    35. //Kein AJAX Support
    36. }
    37. req.onreadystatechange = function() {
    38. if ((req.readyState == 4) && (req.status == 200)) {
    39. document.getElementBy('inhalt').innerHTML = req.responseText;
    40. }
    41. };
    42. var id = document.getElementById('dropdown2').value;
    43. req.open('post', 'func.php');
    44. req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    45. req.send('s='+ id);
    46. }
    47. }
    48. //-->
    49. </script>
    50. </head>
    51. <body>
    52. <p />Wählen Sie einen Eintrag aus um den Inhalt zu laden
    53. <p /><select id="dropdown" onChange="sendRequest(1)">
    54. <?php
    55. include 'connect.php';
    56. $connection = mysqli_connect($host,$user,$password,$db) or die("Die Verbindung konnte nicht hergestellt werden.");
    57. if($connection)
    58. {
    59. $Status = "Verbindung hergestellt";
    60. }
    61. $sql = "SELECT manufacturer,manufacturer_name FROM `hsn_tsn`; ";
    62. $result = mysqli_query($connection,$sql);
    63. while($row = mysqli_fetch_object($result))
    64. {
    65. echo '<option value="' . $row->manufacturer . '">' . $row->manufacturer_name . '</option>';
    66. }
    67. ?>
    68. </select>
    69. <div id="inhalt"></div>
    70. </body>
    71. </html>
    Alles anzeigen


    Und nach diesem Code hier

    PHP-Quellcode

    1. <p /><select id="dropdown" onChange="sendRequest(1)">
    2. <?php
    3. include 'connect.php';
    4. $connection = mysqli_connect($host,$user,$password,$db) or die("Die Verbindung konnte nicht hergestellt werden.");
    5. if($connection)
    6. {
    7. $Status = "Verbindung hergestellt";
    8. }
    9. $sql = "SELECT manufacturer,manufacturer_name FROM `hsn_tsn`; ";
    10. $result = mysqli_query($connection,$sql);
    11. while($row = mysqli_fetch_object($result))
    12. {
    13. echo '<option value="' . $row->manufacturer . '">' . $row->manufacturer_name . '</option>';
    14. }
    15. ?>
    16. </select>
    Alles anzeigen



    müssten dann ja weitere Dropdowns folgen, welche schon angezeigt werden, allerdings erst gefüllt, wenn der wert aus dropdown 1 gesendet wurde.
    Und genau da hakt es bei mir... :(


    Gruß
    Sebastian

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

  • Hast du die Links im Wiki ganz unten gesehen? Dort sind schon Beispiele mit bis zu 4 Selects behandelt worden.
    Am Namen des Formularelements kannst du gut entscheiden, wie damit zu verfahren ist, welcher Callback gerufen wird und welches Element daraufhin wieder bearbeitet wird.

    Ich hatte mal ein übersichtlicheres Howto angefangen (zumindest den Code dazu).. vielleicht kann ich morgen einen Ausschnitte posten.
    Ansonsten fährst du fürs Erste mit der Lösung auf den Beiträgen auch ganz gut.
  • Leider leider nicht... ist ja schon ein Unterschied zwischen dem was da im Wiki steht und dem was ich vorhabe.
    Hätte ich es damit hinbekommen hätte ich nicht gepostet... :(
    Mein Problem ist ja das ich nicht möchte das da neue Felder "erscheinen" durch die Auswahl, sondern möchte das bereits vorhandene Felder gefüllt, bzw. überladen werden.
    Da liegt das Problem begraben bei mir.. :(
  • Ich habe das Wiki aktualisiert - du findest den neuen Code hier:
    [wiki]Select-Auswahl mit AJAX Abhängigkeit[/wiki]

    Das Beispiel ist zwar wesentlich komplexer geworden, aber dafür auch einfacher in der Verwendung.

    Im konkreten Beispiel wurde entschieden abhängige Select-Auswahlfelder erst anzuzeigen, sobald das Elternelement die notwendige Auswahl getroffen hat. Sollte es besser ins Layout passen und du willstt stattdessen leere Listenelemente verwendet, so entfernt einfach die style Eigenschaft display:none. Das müsst du sowohl im HTML Code machen, als auch im JavaScript Quelltext - dort alle display Aufrufe entfernen.