Ajax Auswahlmenü von get-the-code mit weiteren Listboxen??

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

  • Ajax Auswahlmenü von get-the-code mit weiteren Listboxen??

    Hallo Forum,

    ich hoffe jemand kann mir helfen:

    Auf get-the-code gibt es Ajax-Beispiele, u.a. auch dieses Auswahlmenü:

    get-the-code.de/code/javascript/ajax/ajax-example.htm

    Den Code findet man hier:

    get-the-code.de/code/javascript/ajax/ajax-example-code.htm

    Kann man das Auswahlmenü auch so erweitern, dass
    sich immer weitere Menüs öffnen, z.B. anstatt 2 Stück 4 Auswahlmenüs?

    Also, wenn man im 1. eine Auswahl trifft, öffnet sich das 2. (wie jetzt), wenn man im 2. eine Auswahl trifft, öffnet sich das 3. ... und so weiter.

    Wie macht man das? Welche Schritte wären dazu notwendig?

    Vielen Dank vorab für jede Hilfe und schönen Gruss,
    xound
  • UPDATE: Ein aktuelleres Codebeispiel findet ihr in unserem Wiki:
    • [wiki]Select-Auswahl mit AJAX Abhängigkeit[/wiki]
    • [wiki]Select-Auswahl mit AJAX Abhängigkeit und verschiedenen Tabellen[/wiki]

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    finde das beispiel nicht so "schlüssig"
    wo werden denn die daten hergeholt? das ist doch nur ein typische beispielanwendung ohne realitätbezug...
    hab dir mal noch ein anderes beispiel erstellt

    formular.html

    Quellcode

    1. <html><head>
    2. <script type="text/Javascript">
    3. function createXMLHttpRequest() {
    4. var ua;
    5. if(window.XMLHttpRequest) {
    6. try {
    7. ua = new XMLHttpRequest();
    8. } catch(e) {
    9. ua = false;
    10. }
    11. } else if(window.ActiveXObject) {
    12. try {
    13. ua = new ActiveXObject("Microsoft.XMLHTTP");
    14. } catch(e) {
    15. ua = false;
    16. }
    17. }
    18. return ua;
    19. }
    20. var req = createXMLHttpRequest();
    21. function sendRequest(digit) {
    22. // **
    23. // Hier die wichtigen Änderungen. Quelle und Ziel übermitteln
    24. // **
    25. minus = digit-1;
    26. inhalt = document.getElementById('source' + minus );
    27. req.open('get', 'func.php?dest='+ digit + '&s=' + inhalt.value);
    28. req.onreadystatechange = handleResponse;
    29. req.send(null);
    30. }
    31. function handleResponse() {
    32. if(req.readyState == 4){
    33. var response = req.responseText;
    34. var update = new Array();
    35. if(response.indexOf('||' != -1)) {
    36. update = response.split('||');
    37. document.getElementById(update[0]).innerHTML = update[1];
    38. }
    39. }
    40. else
    41. alert("loading" + ajax.readyState);
    42. }</script>
    43. </head>
    44. <body>
    45. <form method="post" action="">
    46. <div style="float:left" id="select1">
    47. <select name="source1" id="source1" onChange="sendRequest(2)">
    48. <option value=""></option>
    49. <option value="test1">test1</option>
    50. <option value="test2">test2</option>
    51. <option value="test3">test3</option>
    52. <option value="test4">test4</option>
    53. </select>
    54. </div>
    55. <div style="float:left" id="select2" name="select2">
    56. </div>
    57. <div style="float:left" id="select3">
    58. </div>
    59. <div style="float:left" id="select4">
    60. </div>
    61. </form>
    62. </body></html>
    Alles anzeigen


    func.php

    Quellcode

    1. <?
    2. $next = $_GET['dest']+1;
    3. echo 'select'.$_GET['dest'].'|| ';
    4. echo '<select name="source'.$_GET['dest'].'" id="source'.$_GET['dest'].'" onChange="sendRequest('.$next.')">';
    5. //Hier sollte eine MySQL FUnktion sein, zum Test reichts aber $_GET['s'] enthält den wert
    6. echo '<option value=""></option>';
    7. echo '<option value="asdasd">asdasd</option>';
    8. echo '<option value="asdasd">asdasd</option>';
    9. echo '<option value="asdasd">asdasd</option>';
    10. echo '</select>';
    11. ?>
    Alles anzeigen
  • Dankeschön für das etwas einfachere Beispiel.

    Ich habe mich schon ein wenig damit beschäftigt; der Ablauf wird ansich immer klarer.

    Doch wie stell ich jetzt den Bezug der einzelnen Menüeinträge her, also bezogen auf Dein Beispiel:

    Das Test 1 aus dem ersten Menü auf ein 2. Menü mit den Einträgen "1", "2", "3", "4" und Test 2 aus dem ersten Menü auf ein 2. Menü mit den Einträgen "5", "6", "7", "8" verweist, wobei die jeweiligen Menüeinträge der 2. Menüs wiederum auf weitere unabhängige Einträge in den nachfolgenden Menüs verweisen?

    Das ist mir noch nicht so ganz klar ...
  • also arbeitest du mit php und mySQL?

    dann ginge das in etwa so....

    Quellcode

    1. <?
    2. $next = $_GET['dest']+1;
    3. echo 'select'.$_GET['dest'].'|| ';
    4. echo '<select name="source'.$_GET['dest'].'" id="source'.$_GET['dest'].'" onChange="sendRequest('.$next.')">';
    5. echo '<option value=""></option>';
    6. //if(!is_int($_GET['s']))
    7. // die('hacking_attempt');
    8. $res = mysql_query("SELECT id,title FROM `tabelle` WHERE `id` = '$_GET[s]'; ");
    9. while($row = mysql_fetch_object($res)) {
    10. echo '<option value="'.$row->id.'">'.$row->title.'</option>';
    11. }
    12. echo '</select>';
    13. ?>
    Alles anzeigen


    weiß nicht wie erfahren du mit php bist..
  • Hi,

    ich arbeite nicht mit MySQL, nur mit PHP; insofern macht es Sinn die einzelnen Menüs hart zu implementieren.

    Meine Erfahrungen mit PHP sind sehr rudimentär; ich kann es in jedem Fall lesen und Beispiele nachvollziehen, bin allerdings gerade erst dabei eine eigene Anwendung zu schreiben, insofern mangelt es an Umsetzungspraxis.

    Vielleicht zeigst Du mir, wo der Ansatz liegt die Menüs hart zu implementieren, denn im Prinzip solle es so aussehen, dass im ersten Menü 4 Einträge vorhanden sind, und je nach Auswahl auf ein nächstes Menü weitergeleitet werden soll, in dem der zuvor ausgewählte Eintrag nicht mehr vorhanden ist und so weiter, bis nur noch ein Eintrag übrigbleibt.

    Ich weiss nicht genau, was cleverer ist, aber ich dachte daran, dass man das am einfachsten machen kann, wenn man die einzelnen Menüs hart schreibt.

    Vielleicht belehrst Du mich aber eines Besseren?

    In jedem Fall aber Besten Dank für Deine Infos!!
  • Ohne eine Datenbank wird das aber sehr, sehr kompliziert..

    aber nochmal zum verständnis:
    Jede Auswahl ruft ein komplett neues Menü hervor?
    das heißt bei ~4 Auswahlmöglichkeiten auf 4 Boxen sind das 256 Auswahlmöglichkeiten... ist das wirklich so gewollt???

    hab mal angefangen die navigation in ein array zu packen..
    das würde ja dann folgendermaßen aussehen:

    Quellcode

    1. $navigation = array(
    2. 0 => array('Haupt1' => array(
    3. "H1_Unter1" => array(
    4. "H1U1_Unter1" => array(
    5. 'H1U1U1_Auswahl1',
    6. 'H1U1U1_Auswahl2',
    7. 'H1U1U1_Auswahl3',
    8. 'H1U1U1_Auswahl4')
    9. ,
    10. "H1U1_Unter2" => array(
    11. 'H1U1U2_Auswahl1',
    12. 'H1U1U2_Auswahl2',
    13. 'H1U1U2_Auswahl3',
    14. 'H1U1U2_Auswahl4')
    15. ,
    16. "H1U1_Unter3" => array(
    17. 'H1U1U3_Auswahl1',
    18. 'H1U1U3_Auswahl2',
    19. 'H1U1U3_Auswahl3',
    20. 'H1U1U3_Auswahl4')
    21. ,
    22. "H1U1_Unter4" => array(
    23. 'H1U1U4_Auswahl1',
    24. 'H1U1U4_Auswahl2',
    25. 'H1U1U4_Auswahl3',
    26. 'H1U1U4_Auswahl4')
    27. ,
    28. "H1_Unter2" => array(
    29. "H1U2_Unter1" => array(
    30. 'H1U2U1_Auswahl1',
    31. 'H1U2U1_Auswahl2',
    32. 'H1U2U1_Auswahl3',
    33. 'H1U2U1_Auswahl4')
    34. ,
    35. "H1U2_Unter2" => array(
    36. 'H1U2U2_Auswahl1',
    37. 'H1U2U2_Auswahl2',
    38. 'H1U2U2_Auswahl3',
    39. 'H1U2U2_Auswahl4')
    40. ,
    41. "H1U2_Unter3" => array(
    42. 'H1U2U3_Auswahl1',
    43. 'H1U2U3_Auswahl2',
    44. 'H1U2U3_Auswahl3',
    45. 'H1U2U3_Auswahl4')
    46. ,
    47. "H1U2_Unter4" => array(
    48. 'H1U2U4_Auswahl1',
    49. 'H1U2U4_Auswahl2',
    50. 'H1U2U4_Auswahl3',
    51. 'H1U2U4_Auswahl4')
    52. ,
    53. "H1_Unter3" => array(....)
    54. ,
    55. "H1_Unter4" => array(....)
    56. ),
    57. 1 => array('Haupt2' => array(........)),
    58. 2 => array('Haupt3' => array(........)),
    59. 3 => array('Haupt3' => array(........)),
    60. );
    Alles anzeigen
  • Ich habe mir gerade nochmal Gedanken über das Anforderungen gemacht; es sind doch erstmal nur 3 Menüs, also 7 verschiedene Möglichkeiten, die sich wie folgt staffeln:




    1. Menü

    1. Eintrag: Verantwortlich
    2. Eintrag: Zeitraum
    3. Eintrag: Typ

    Bei Klick auf Verantwortlich = 2. Menü

    1. Eintrag: Zeitraum
    2. Eintrag: Typ

    Bei Klick auf Zeitraum = 3. Menü

    1. Eintrag: Typ

    Fertig

    ---------------------------------------------

    Wieder aus Sicht des

    1. Menü

    1. Eintrag: Verantwortlich
    2. Eintrag: Zeitraum
    3. Eintrag: Typ

    Bei Klick auf Zeitraum = 2. Menü

    1. Eintrag: Verantwortlich
    2. Eintrag: Typ

    Bei Klick auf Typ = 3. Menü

    1. Eintrag: Verantwortlich

    Fertig

    -----------------------------------------------


    Wieder aus Sicht des

    1. Menü

    1. Eintrag: Verantwortlich
    2. Eintrag: Zeitraum
    3. Eintrag: Typ

    Bei Klick auf Typ = 2. Menü

    1. Eintrag: Verantwortlich
    2. Eintrag: Zeitraum

    Bei Klick auf Verantwortlich = 3. Menü

    1. Eintrag: Zeitraum

    Fertig


    Das ist doch vom Umfang her nicht so viel bezogen auf eine harte Implementierung?

    So, wie ich es sehe, sind es nur 7 Möglichkeiten, da das erste Menü ja stets gleich bleibt.

    Wie bindet man das denn in Dein Ajax-Auswahlmenü-Beispiel ein?
  • ich weiß zwar nicht wo das hinführen soll...
    aber hier die lösung

    //EDIT: im anhang die komplettlösung

    func.php

    Quellcode

    1. <?
    2. switch($_GET['dest'])
    3. {
    4. case '2':
    5. switch($_GET['s'])
    6. {
    7. case 'Verantwortlich':
    8. $menu = array('Zeitraum','Typ');
    9. break;
    10. case 'Zeitraum':
    11. $menu = array('Verantwortlich','Typ');
    12. break;
    13. case 'Typ':
    14. $menu = array('Verantwortlich','Zeitraum');
    15. break;
    16. }
    17. break;
    18. case '3':
    19. switch($_GET['s'])
    20. {
    21. case 'Verantwortlich':
    22. $menu = array('Zeitraum');
    23. break;
    24. case 'Zeitraum':
    25. $menu = array('Typ');
    26. break;
    27. case 'Typ':
    28. $menu = array('Verantwortlich');
    29. break;
    30. }
    31. break;
    32. }
    33. $next = $_GET['dest']+1;
    34. echo 'select'.$_GET['dest'].'|| ';
    35. if($_GET['dest'] > 3)
    36. die('<input type="submit" value="Auswahl senden" >');
    37. echo '<select name="source'.$_GET['dest'].'" id="source'.$_GET['dest'].'" onChange="sendRequest('.$next.')">';
    38. echo '<option value=""></option>';
    39. foreach($menu as $row)
    40. echo '<option value="'.$row.'">'.$row.'</option>';
    41. echo '</select>';
    42. ?>
    Alles anzeigen
    Dateien
  • Ich möchte daraus eine Suchanfrage generieren, die dann entsprechend weitergegeben werden soll. Im Prinzip liegt auch eine DB dahinter, allerdings kein MySQL, sondern MS-SQL; allerdings darf die DB nicht verändert werden. Ich greife darauf via Jet mit einem PHP-Wrapper zu und wollte mir ein schönes Menü bauen für die Suchanfrage.

    Super, es funktioniert erstmal so!!!!

    Ich werde das jetzt mal konsequent weiter aufbauen. Zwischen jedes bisherige Auswahlmenü kommt in weiteres Menü mit den Auswahlmöglichkeiten UND/ODER. Zu jedem Menü öffnet sich dann noch eine weitere Auswahlmöglichkeit. Z.b. bei "Verantwortlich" eine Namensliste (aus der DB), aus der man einen Namen auswählen kann oder bei Zeitraum eine Auswahlmöglichkeit für Start- und Enddatum. Bei Typ wieder eine Auswahlliste, die direkt aus der DB gefüllt wird.

    Tausend Dank erstmal!!!
  • Ich habe mich jetzt mal damit beschäftigt, doch beisse mir ein bisschen die Zähne daran aus.

    Eig. dachte ich, dass ich den Code um If-Bedingungen erweitern kann, mit denen ich z.B. bei Aufruf von "Verantwortlich" direkt unter dem jeweiligen Menü ein weiteres aufmachen könnte, in dem die Namenswahl stattfinden kann. Das Problem ist, dass ich nicht so ganz verstehe, wie ich das 1. Menü Abfragen kann, um eine entsprechende Bedingung zu setzen.

    Auch mit den UND/ODER/FERTIG Verknüpfungen habe ich so meine Probleme. Es soll eig. so aussehen, dass das aus dem ersten Auswahlmenü z.B. Verantwortlich ausgewählt wird und sich neben dem Menü mit der Namenswahl noch ein weiteres Menü mit UND/ODER/FERTIG-Wahl öffnet.

    Bei der Wahl FERTIG öffnet sich kein weiteres Menü. Wenn man aber dort die Wahl UND/ODER trifft folgt erst das nächste Menü mit "Zeitraum/Typ". Wenn man dort eine Wahl trifft, z.B. Typ öffnet sich darunter ein Menü mit der Typenwahl darunter und ein weiteres UND/ODER/FERTIG-Menü rechts daneben. Wählt man FERTIG endet der Aufbau hier. Wenn man dort z.B. die Wahl UND trifft, öffnet sich das letzte Menü mit Zeitraum mit jeweils einem Menü zur Wahl des Startdatums und des Enddatums.

    Ich habe das ganze mal veranschaulicht. Die Drop-Down-Menüs sollen jeweils dynamisch zu der Auswahl von "Verantwortlich", "Zeitraum" und "Typ" passen.

    Anbei mal ein Bild, auf dem ersichtlich wird, wie es gemeint ist.

    Wäre super, wenn Du mir noch ein paar Tipps zum Aufbau geben könntest.
    Bilder
    • suchmenue.gif

      5,39 kB, 654×172, 3.086 mal angesehen
    • suchmenue2.gif

      5,48 kB, 654×172, 2.981 mal angesehen
  • sieht nicht ganz so schön aus..
    aber hier die func.php mit UND/ODER Boxen:

    Quellcode

    1. <?
    2. $andOr = '<select name="'.$_GET['dest'].'">
    3. <option value="and">UND</option>
    4. <option value="or">ODER</option>
    5. <option value="ready">FERTIG</option>
    6. </select>';
    7. $timeselect = '<div style="float:left"><select name="d">
    8. <option value="1">1</option>
    9. <option value="2">2</option>
    10. <option value="3">3</option>
    11. <option value="...">...</option>
    12. </select><select name="m">
    13. <option value="1">1</option>
    14. <option value="2">2</option>
    15. <option value="3">3</option>
    16. <option value="...">...</option>
    17. </select><select name="y">
    18. <option value="2006">2006</option>
    19. <option value="2005">2005</option>
    20. <option value="2004">2004</option>
    21. </select></div>';
    22. switch($_GET['dest'])
    23. {
    24. case '2':
    25. switch($_GET['s'])
    26. {
    27. case 'Verantwortlich':
    28. $menu = array('Zeitraum','Typ');
    29. break;
    30. case 'Zeitraum':
    31. $menu = array('Verantwortlich','Typ');
    32. break;
    33. case 'Typ':
    34. $menu = array('Verantwortlich','Zeitraum');
    35. break;
    36. }
    37. break;
    38. case '3':
    39. switch($_GET['s'])
    40. {
    41. case 'Verantwortlich':
    42. $menu = array('Zeitraum');
    43. break;
    44. case 'Zeitraum':
    45. $menu = array('Typ');
    46. break;
    47. case 'Typ':
    48. $menu = array('Verantwortlich');
    49. break;
    50. }
    51. break;
    52. }
    53. $next = $_GET['dest']+1;
    54. echo 'select'.$_GET['dest'].'|| ';
    55. echo ($_GET['s'] == 'Zeitraum') ? $timeselect : '';
    56. if($_GET['dest'] > 3) {
    57. echo '<input type="submit" value="Auswahl senden" >';
    58. } else {
    59. echo '<div style="float:left">'.$andOr.'</div>';
    60. echo '<select name="source'.$_GET['dest'].'" id="source'.$_GET['dest'].'" onChange="sendRequest('.$next.')">';
    61. echo '<option value=""></option>';
    62. foreach($menu as $row)
    63. echo '<option value="'.$row.'">'.$row.'</option>';
    64. echo '</select>';
    65. }
    66. ?>
    Alles anzeigen
  • Hallo d0nUt,

    danke für den Code. Ich habe das mal ein wenig angepasst und bin jetzt schon bei einem relativ guten Ergebnis angelangt.

    Allerdings habe ich noch ein zwei kleinere Probleme die ich an dieser Stelle nochmal posten möchte:

    Ich habe zwei Bilder angehängt. Im ersten Bild (beispiel1) siehst du ein komplett aufgebautes Menü. Das funktioniert wirklich wunderbar.

    Allerdings sollen auch Rückschritte möglich sein.

    Wie Du weisst sind einzelne Begriffe jeweils mit und/oder verknüpfbar. Das und/oder Menü enthält auch jeweils einen Punkt "Ende". Wenn dieser ausgewählt wird, dann wird die Suche nur bis zu dem letzten Begriff durchgeführt.

    Wenn ich jetzt aber ein komplettes Menü bis zum Ende aufbaue, und dann an Source2 oder Source4 ein "Ende" nachträglich setze, dann bleiben bestimmte Elemente stehen, die eig. nicht stehen bleiben sollten (Bild Beispiel 2).

    Im Fall von "Ende" soll also alles, was "danach" kommt vernichtet werden, auch die vorher eingeblendete Unterauswahl.

    Ich poste mal meinen Code; die Datenbankzugriffe habe ich durch Platzhalter erstetzt.

    Hast Du evtl noch eine Idee, wie man das bewerkstelligen kann?

    Quellcode

    1. <?
    2. function nameSelectBox() {
    3. echo "<div style=\"position:absolute; left: -145px; top: 80px;\">nameSelectBox an dieser Stelle</div>";
    4. }
    5. function typeSelectBox() {
    6. echo "<div style=\"position:absolute; left: -145px; top: 80px;\">typeSelectBox an dieser Stelle</div>";
    7. }
    8. function dateSelectBox() {
    9. echo "
    10. <div style=\"position:absolute; left: -145px; top: 80px;\">
    11. <table border=\"0\" cellspacing=\"0\">
    12. <tr>
    13. <td><a href=#>Start:</a></td>
    14. <td><input type=\"text\" name=\"selectStartDate\" value=\"01.01.2005\" maxlength=\"10\" size=\"9\"> </td>
    15. <td><a href=#>Ende:</a></td>
    16. <td><input type=\"text\" name=\"selectEndDate\" value=\"31.12.2005\" maxlength=\"10\" size=\"9\"> </td>
    17. </tr>
    18. </table>
    19. </div>
    20. ";
    21. }
    22. switch($_GET['dest'])
    23. {
    24. case '2':
    25. switch($_GET['s'])
    26. {
    27. case 'Verantwortlich':
    28. $menu = array('und(v)','oder(v)', 'Ende');
    29. $link = array('und','oder', 'Ende');
    30. break;
    31. case 'Zeitraum':
    32. $menu = array('und(z)','oder(z)', 'Ende');
    33. $link = array('und','oder', 'Ende');
    34. break;
    35. case 'Aktionstyp':
    36. $menu = array('und(t)','oder(t)', 'Ende');
    37. $link = array('und','oder', 'Ende');
    38. break;
    39. }
    40. break;
    41. case '3':
    42. switch($_GET['s'])
    43. {
    44. case 'und(v)':
    45. $menu = array('Zeitraum(v)','Aktionstyp(v)');
    46. $link = array('Zeitraum','Aktionstyp');
    47. break;
    48. case 'oder(v)':
    49. $menu = array('Zeitraum(v)','Aktionstyp(v)');
    50. $link = array('Zeitraum','Aktionstyp');
    51. break;
    52. case 'und(z)':
    53. $menu = array('Verantwortlich(z)','Aktionstyp(z)');
    54. $link = array('Verantwortlich','Aktionstyp');
    55. break;
    56. case 'oder(z)':
    57. $menu = array('Verantwortlich(z)','Aktionstyp(z)');
    58. $link = array('Verantwortlich','Aktionstyp');
    59. break;
    60. case 'und(t)':
    61. $menu = array('Verantwortlich(t)','Zeitraum(t)');
    62. $link = array('Verantwortlich','Zeitraum');
    63. break;
    64. case 'oder(t)':
    65. $menu = array('Verantwortlich(t)','Zeitraum(t)');
    66. $link = array('Verantwortlich','Zeitraum');
    67. break;
    68. case 'Ende':
    69. break;
    70. }
    71. break;
    72. case '4':
    73. switch($_GET['s'])
    74. {
    75. case 'Zeitraum(v)':
    76. $menu = array('und(vz)','oder(vz)', 'Ende');
    77. $link = array('und','oder', 'Ende');
    78. break;
    79. case 'Aktionstyp(v)':
    80. $menu = array('und(vt)','oder(vt)', 'Ende');
    81. $link = array('und','oder', 'Ende');
    82. break;
    83. case 'Verantwortlich(z)':
    84. $menu = array('und(zv)','oder(zv)', 'Ende');
    85. $link = array('und','oder', 'Ende');
    86. break;
    87. case 'Aktionstyp(z)':
    88. $menu = array('und(zt)','oder(zt)', 'Ende');
    89. $link = array('und','oder', 'Ende');
    90. break;
    91. case 'Verantwortlich(t)':
    92. $menu = array('und(tv)','oder(tv)', 'Ende');
    93. $link = array('und','oder', 'Ende');
    94. break;
    95. case 'Zeitraum(t)':
    96. $menu = array('und(tz)','oder(tz)', 'Ende');
    97. $link = array('und','oder', 'Ende');
    98. break;
    99. }
    100. break;
    101. case '5':
    102. switch($_GET['s'])
    103. {
    104. case 'und(vz)':
    105. $menu = array('Aktionstyp(vzt)');
    106. $link = array('Aktionstyp');
    107. break;
    108. case 'oder(vz)':
    109. $menu = array('Aktionstyp(vzt)');
    110. $link = array('Aktionstyp');
    111. break;
    112. case 'und(vt)':
    113. $menu = array('Zeitraum(vtz)');
    114. $link = array('Zeitraum');
    115. break;
    116. case 'oder(vt)':
    117. $menu = array('Zeitraum(vtz)');
    118. $link = array('Zeitraum');
    119. break;
    120. case 'und(zv)':
    121. $menu = array('Aktionstyp(zvt)');
    122. $link = array('Aktionstyp');
    123. break;
    124. case 'oder(zv)':
    125. $menu = array('Aktionstyp(zvt)');
    126. $link = array('Aktionstyp');
    127. break;
    128. case 'und(zt)':
    129. $menu = array('Verantwortlich(ztv)');
    130. $link = array('Verantwortlich');
    131. break;
    132. case 'oder(zt)':
    133. $menu = array('Verantwortlich(ztv)');
    134. $link = array('Verantwortlich');
    135. break;
    136. case 'und(tv)':
    137. $menu = array('Zeitraum(tvz)');
    138. $link = array('Zeitraum');
    139. break;
    140. case 'oder(tv)':
    141. $menu = array('Zeitraum(tvz)');
    142. $link = array('Zeitraum');
    143. break;
    144. case 'und(tz)':
    145. $menu = array('Verantwortlich(tzv)');
    146. $link = array('Verantwortlich');
    147. break;
    148. case 'oder(tz)':
    149. $menu = array('Verantwortlich(tzv)');
    150. $link = array('Verantwortlich');
    151. break;
    152. case 'Ende':
    153. break;
    154. }
    155. break;
    156. }
    157. $next = $_GET['dest']+1;
    158. echo 'select'.$_GET['dest'].'|| ';
    159. echo (($_GET['s'] == 'Zeitraum') || ($_GET['s'] == 'Zeitraum(v)') || ($_GET['s'] == 'Zeitraum(vtz)') || ($_GET['s'] == 'Zeitraum(tvz)')) ? dateSelectBox() : '';
    160. echo (($_GET['s'] == 'Verantwortlich') || ($_GET['s'] == 'Verantwortlich(z)') || ($_GET['s'] == 'Verantwortlich(ztv)') || ($_GET['s'] == 'Verantwortlich(tzv)')) ? nameSelectBox() : '';
    161. echo (($_GET['s'] == 'Aktionstyp') || ($_GET['s'] == 'Aktionstyp(v)') || ($_GET['s'] == 'Aktionstyp(z)') || ($_GET['s'] == 'Aktionstyp(vzt)') || ($_GET['s'] == 'Aktionstyp(zvt)')) ? typeSelectBox() : '';
    162. if(($_GET['s'] == 'Ende') || ($_GET['dest'] > 5)) {
    163. echo '<input type="submit" value="Auswahl senden" >';
    164. } else {
    165. // echo ''.$andOr.'';
    166. if ($_GET['dest'] == 2) $size = 1;
    167. if ($_GET['dest'] == 3) $size = 3;
    168. if ($_GET['dest'] == 4) $size = 1;
    169. if ($_GET['dest'] == 5) $size = 2;
    170. echo '<select name="source'.$_GET['dest'].'" id="source'.$_GET['dest'].'" size="'.$size.'" onChange="sendRequest('.$next.')">';
    171. if ($link[0] == 'und')
    172. echo '<option value="topEntry" selected>Operator</option>';
    173. else
    174. echo '<option value="topEntry" selected>Bitte ausw&auml;hlen</option>';
    175. for (;list(, $rowValue ) = each( $menu ), list(, $rowName ) = each( $link );) {
    176. echo '<option value="'.$rowValue.'">'.$rowName.'</option>';
    177. }
    178. echo '</select>';
    179. }
    180. ?>
    Alles anzeigen
    Bilder
    • beispiel2.jpg

      18,29 kB, 877×114, 2.837 mal angesehen
    • beispiel1.jpg

      24,71 kB, 879×112, 2.858 mal angesehen
  • ok, da sind javascript kenntnisse gefragt :)

    1x muss du die funktion handleResponse in der formular.html ändern, damit du mehrere DIVs mit AJAX ändern kannst
    (siehe die schleife)

    Quellcode

    1. function handleResponse() {
    2. if(req.readyState == 4){
    3. var response = req.responseText;
    4. var update = new Array();
    5. if(response.indexOf('||' != -1)) {
    6. update = response.split('||');
    7. for(i=0; i<update.length; i+=2) {
    8. document.getElementById(update[i]).innerHTML = update[i+1];
    9. }
    10. }
    11. }
    12. else
    13. alert("loading" + ajax.readyState);
    14. }
    Alles anzeigen


    dann setzt du ganz nach unten in der func.php noch folgenden code um die folgenden felder mit leerem inhalt zu überschreiben

    Quellcode

    1. //Nächste Select Felder nullen
    2. $anzahl_der_select_felder = 4;
    3. for($i=$next; $i<=$anzahl_der_select_felder+1; $i++) {
    4. echo '||select'.$i.'|| ';
    5. }
  • Hallo d0nUt,

    bin neu hier, ist aber genau das was ich gesucht habe !

    Bin php coder und auf neuen Wegen => AJAX - aber als voll noob :)

    Genauso planlos bin ich mit java .. :(

    Respekt d0nUt !! Hab mit Deinem obigen Code example mein Problem fast gelöst = ich bin echt baff über Dein Knowledge!

    Bei mir erscheint jedoch noch eine Script error :

    document.getElementById[....] ist NULL oder kein Object ...

    Was heisst das genau ?

    Grüsse

    thomy
  • Vielen Dank für die lieben Worte ;)
    ich habe meinen code inzwischen optimiert

    eine aktualisierte fassung findest du im Wiki unter: [coderwiki]HowTos/Ajax-Inhalte-mit-PHP-nachladen[/coderwiki]

    Das ist natürlich nur ein ähnlicher Code, aber die Funktionen sind die selben.
    Du musst vermutlich nur diese Zeile ändern:

    Quellcode

    1. req.open("GET", 'func.php?s='+ digit);


    kannst du den Code auf dein Problem übertragen?
    Ansonsten bitte einen neuen [coderwiki]Informationen/Thread[/coderwiki] erstellen ;)

    Gruß