Ajax PHP Mysql und die lieben Selectboxen

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

  • Ajax PHP Mysql und die lieben Selectboxen

    Hallo

    vorab ich bin ein hobby php bastler und habe von js überhaut keine ahnung
    lese seit 3 tagen im forum aber ich verstehe die lösungs vorschläge nicht



    ich habe ein problem mit dem dynamischen füllen der selectboxen durch AJAX in php sollte wie folgt aussehen select1: durch mysql gefüllt mit autoherstellern zb

    AUDI
    BMW
    usw.
    danach sollte sich 2box füllen mit (wenn auswahl1 = BMW)

    3er E30
    3er E36
    3er E46
    usw.

    dann die 3te box (wenn auswahl2= 3er E30)

    E30 Limo
    E30 Touring
    usw.

    danach soll eine tabellegefüllt werden mit

    E30 Limo 316i klima? ja

    so in etwa

    datenbank besteht die abfrage hatte ich bis jetzt in php über 3 seiten geschliffen was unschön ist


    habe das beispiel:
    http://www.easy-coding.de/ajax-php-mysql-und-einem-formular-t756.html

    zum testen verwendet bekomme das aber absolut nicht hin die ausgabe erfolgt ja durch die func.php ich will sie aber zurück in die formular.php übertragen bekommen ich verstehe nur nicht wie das gehen soll
    was muss ich ändern das die ausgabe der func.php an das formular zurück gegeben wird

    js ist absulot nicht mein ding muss aber in diesem fall sein

    ich bekomme noch die kriese bitte helft mir
    Nichts genaues weiß man nicht genau
  • hi schön antwort von dir zu bekommen ist ja nicht überall so (man hats nicht leicht als [coderwiki]DAU[/coderwiki] :D )
    klar hab ich deas script getestet geht auch aber eben nur halb erste selectbox füllt sich und das ergebniss wird dann als text ausgegeben



    hier der inhalt der original func.php
    PHP:

    Quellcode

    1. <?
    2. //Inhalte laden
    3. $result = mysql_query("SELECT title,text FROM `unterpunkte` WHERE `kategorie` = '".$_GET['s']."'; ");
    4. while($row = mysql_fetch_object($result))
    5. {
    6. echo '<p /><b>'.$row->title.'</b><br />'.$row->text; //<-----hier wird das ergebniss doch ausgegeben oder??
    7. }
    8. ?>


    mein (falscher) lösungsversuch func.php

    Quellcode

    1. //Inhalte laden
    2. include 'connect.php';
    3. ?><p /><select id="dropdown" onChange="sendRequest()"><?
    4. $result = mysql_query("SELECT Modell,Typid FROM `zusammen` WHERE `Hersteller` = '".$_GET['s']."' group by 'Modell'; ");
    5. while($row = mysql_fetch_object($result))
    6. {
    7. #echo '<p /><b>'.$row->Modell.'</b><br />'.$row->PS;
    8. echo '<option value="'.$row->Typid.'">'.$row->Modell.'</option>';
    9. }
    10. ?>
    Alles anzeigen


    funzt zum teil auch wird angezeigt ist aber nicht anwählbar
    Nichts genaues weiß man nicht genau
  • hi..

    da ergeben sich 2 fehler
    1. eine ID ist eine unique id.. die ID dropdown hast du jetzt aber 2x
    2. du hast vergessen das select zu schließen

    mir ist gerade selber aufgefallen wieviele threads wir zu ajax und select haben

    hier ist ein code mit 3 selectfeldern - vielleicht am einfachsten für dich zu verwenden
    http://www.easy-coding.de/ajax-auswahlmenue-von-get-the-code-mit-weiteren-listboxen-t584.html#2041
  • hmpf ich schonwieder ;(

    kannst du mir bitte noch sagen wie ich eine [coderwiki]Informationen/MySQL [/coderwiki] abfrage in die func.php einbaue um die selectfelder zu befüllen



    man das nervt so ich baue seit einer woche daran ein funktionierendes script auf einer statt auf 3seiten laufen zu lassen sehr nervig
    Nichts genaues weiß man nicht genau
  • das geschlossene select muss schon außerhalb des php tags sein - absolut korrekt

    in der func.php vom anderen thread musst du nur die switch-case bearbeiten
    anstatt das array menu direkt zuzuweisen erstellst du einfach ein select und befüllst den content

    Quellcode

    1. $result = mysql_query("SELECT Modell,Typid FROM `zusammen` WHERE `Hersteller` = '".$_GET['s']."' group by 'Modell'; ");
    2. while($row = mysql_fetch_object($result))
    3. {
    4. $menu[$row->Typid] = '<option value="'.$row->Typid.'">'.$row->Modell.'</option>';
    5. }


    die foreach schleife modifizierst du dahingehend

    Quellcode

    1. foreach($menu as $key => $row)
    2. echo '<option value="'.$key.'">'.$row.'</option>';
  • so nach einigen versuchen hab ich doch noch net hinbekommen hier mein versuch

    Quellcode

    1. include 'connect.php';
    2. $_GET['s'];
    3. $_GET['dest'];
    4. $test=$_GET['s'];
    5. $result = mysql_query("SELECT * FROM `zusammen` WHERE `Hersteller` = '".$_GET['s']."' group by 'Modell'; ");
    6. switch($_GET['dest'])
    7. {
    8. case '2':
    9. switch($test){
    10. #$result = mysql_query("SELECT * FROM `zusammen` WHERE `Hersteller` = '".$_GET['s']."' group by 'Modell'; ");
    11. while($row = mysql_fetch_object($result))
    12. $menu[$row->Typid] = '<option value="'.$row->Typid.'">'.$row->Modell.'</option>';
    13. }
    14. }
    15. break;
    16. switch($_GET['dest'])
    17. {
    18. case '3':
    19. switch($test){
    20. $result = mysql_query("SELECT * FROM `zusammen` WHERE `Hersteller` = '".$_GET['s']."' group by 'Modell'; ");
    21. while($row = mysql_fetch_object($result))
    22. $menu[$row->Typid] = '<option value="'.$row->Typid.'">'.$row->Modell.'</option>';
    23. }
    24. break;
    25. }
    26. $next = $_GET['dest']+1;
    27. echo 'select'.$_GET['dest'].'|| ';
    28. if($_GET['dest'] > 3)
    29. die('<input type="submit" value="Auswahl senden" >');
    30. echo '<select name="source'.$_GET['dest'].'" id="source'.$_GET['dest'].'" onChange="sendRequest('.$next.')">';
    31. echo '<option value=""></option>';
    32. foreach($menu as $key => $row)
    33. echo '<option value="'.$key.'">'.$row.'</option>';
    34. echo '</select>';
    35. ?>
    Alles anzeigen


    was ist falsch?

    sieht ein wenig wirr aus ich weiß ist aber das produkt vieler versuche und hunderter neuanfänge
    Nichts genaues weiß man nicht genau
  • keine ausgabe in der ex html die ja zu einer php umbauen musste

    nach einigen versuchen hatte sich die 2te selectbox gefüllt aber dazu musste ich case 3 in der func.php auskommentieren

    wenn ic die o.g. func.php direkt aufrufe kommt:

    Parse error: syntax error, unexpected T_WHILE, expecting T_CASE or T_DEFAULT or '}' in C:\Dokumente und Einstellungen\Ice\Desktop\xampp-win32-1.4.6\xampp\htdocs\dasis1\func3.php on line 19

    aber nur wenn ich sie direkt aufrufe sonst kommt nix


    aktuelle formular.php(ex html)

    Quellcode

    1. <html><head>
    2. <script type="text/Javascript">
    3. <!--
    4. function sendRequest(digit) {
    5. try {
    6. req = window.XMLHttpRequest?new XMLHttpRequest():
    7. new ActiveXObject("Microsoft.XMLHTTP");
    8. } catch (e) {
    9. //Kein AJAX Support
    10. }
    11. minus = digit-1;
    12. inhalt = document.getElementById('source' + minus );
    13. req.onreadystatechange = handleResponse;
    14. req.open('GET', 'func3.php?dest='+ digit + '&s=' + inhalt.value);
    15. req.send(null);
    16. }
    17. function handleResponse() {
    18. if ((req.readyState == 4) && (req.status == 200)) {
    19. var update = new Array();
    20. var response = req.responseText;
    21. if(response.indexOf('||' != -1)) {
    22. update = response.split('||');
    23. document.getElementById(update[0]).innerHTML = update[1];
    24. }
    25. }
    26. }
    27. //-->
    28. </script>
    29. </head>
    30. <body>
    31. <form method="post" action="">
    32. <div style="float:left" id="select1">
    33. <select name="source1" id="source1" onChange="sendRequest(2)">
    34. <?
    35. include 'connect.php'; // Hier die Verbindung zur Datenbank herstellen
    36. $result = mysql_query("SELECT ID,Hersteller FROM `zusammen` group by 'Hersteller' order by 'Hersteller' ; ");
    37. while($row = mysql_fetch_object($result))
    38. {
    39. echo '<option value="'.$row->Hersteller.'">'.$row->Hersteller.'</option>';
    40. }
    41. ?>
    42. </select>
    43. </div>
    44. <div style="float:left" id="select2" name="select2">
    45. </div>
    46. <div style="float:left" id="select3" name="select3">
    47. </div>
    48. <div style="float:left" id="select4" name="select4">
    49. </div>
    50. </form>
    51. </body></html>
    Alles anzeigen
    Nichts genaues weiß man nicht genau
  • ich habs endlich danke vielen dank


    hier die lösung die mysql abfragen sind noch falsch geben nicht das richtige aus aber das ist ja formsache

    Quellcode

    1. <?
    2. include 'connect.php';
    3. $_GET['s'];
    4. $_GET['dest'];
    5. $test=$_GET['s'];
    6. $result = mysql_query("SELECT * FROM `zusammen` WHERE `Hersteller` = '".$_GET['s']."' group by 'Modell'; ");
    7. $result1 = mysql_query("SELECT * FROM `zusammen` WHERE `Typid` = '".$_GET['s']."' group by 'Modell'; ");
    8. switch($_GET['dest'])
    9. {
    10. case '2':
    11. {
    12. while($row = mysql_fetch_object($result))
    13. {
    14. $menu[$row->Typid] = '<option value="'.$row->Typid.'">'.$row->Modell.'</option>';
    15. }
    16. break;
    17. }
    18. break;
    19. case '3':
    20. {
    21. while($row = mysql_fetch_object($result1))
    22. {
    23. $menu[$row->Typid] = '<option value="'.$row->Typid.'">'.$row->Modell.'</option>';
    24. }
    25. }
    26. break;
    27. }
    28. $next = $_GET['dest']+1;
    29. echo 'select'.$_GET['dest'].'|| ';
    30. if($_GET['dest'] > 3)
    31. die('<input type="submit" value="Auswahl senden" >');
    32. echo '<select name="source'.$_GET['dest'].'" id="source'.$_GET['dest'].'" onChange="sendRequest('.$next.')">';
    33. echo '<option value=""></option>';
    34. foreach($menu as $key => $row)
    35. echo '<option value="'.$key.'">'.$row.'</option>';
    36. echo '</select>';
    37. ?>
    Alles anzeigen
    Nichts genaues weiß man nicht genau
  • habs laufen das script wenn ich die func.php aufrufe sind auch keine syntaxfehler

    aber immernoch mit dem fehler das die case keine bedingungen haben anders bekomme ich es nicht zum laufen

    und dann haben die selectboxen immer eine leerzeile zwischen den einzelnen einträgen die lehrzeile hat aber immer den value des nachfolgenden eintrags also sind die values 2mal da und beim 1sten mal haben sie eben keine bezeichnung

    nach einigen versuchen gehts nu net mehr und ich weiß net warum
    firefox(extra installiert) meldet
    Fehler: document.getElementById(update[0]) has no properties
    Quelldatei: http://pc/dasis1/formular2.php
    Zeile: 26
    Nichts genaues weiß man nicht genau
  • Ich gehe davon aus das du das meinst

    Quellcode

    1. <form method="post" action="updateende.php">
    2. <div style="float:left" id="select1">
    3. <select name="source1" id="source1" onChange="sendRequest(2)">
    4. <?
    5. include 'connect.php'; // Hier die Verbindung zur Datenbank herstellen
    6. $result = mysql_query("SELECT ID,Hersteller FROM `zusammen` group by 'Hersteller' order by 'Hersteller' ; ");
    7. while($row = mysql_fetch_object($result))
    8. {
    9. echo '<option value="'.$row->Hersteller.'">'.$row->Hersteller.'</option>';
    10. }
    11. ?>
    12. </select>
    13. </div>
    14. <div style="float:left" id="source2" name="source2">
    15. </div>
    16. <div style="float:left" id="source3" name="source3">
    17. </div>
    18. <div style="float:left" id="source4" name="source4">
    19. </div>
    20. </form>
    21. </body></html>
    Alles anzeigen



    ja hatte ich geändert und schon hat er mir besagten fehler gezeigt:(
    sobald wieder select drin steht funzt es bis auf die leerzeilen in den selectboxen die wechseln sich immer ab
    bsp
    leerzeile mit value1
    wert1 mit value1
    leerzeile mit value2
    wert2 mit value2
    usw
    normal wäre halt
    wert1 value1
    wert2 value2
    Nichts genaues weiß man nicht genau