Aufeinanderfolgende SELECTs mit kleiner werdender Auswahl

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

  • Aufeinanderfolgende SELECTs mit kleiner werdender Auswahl

    Hi,

    bei dem damaligen Beispiel war ja ein Ansatz von Pseudo-Dynamik zu erkennen. Ich meine damit, dass die Inhalte der Listboxen abhängig von der vorhergehenden Auswahl aufgebaut worden sind. Meine Idee ist jetzt das etwas kompakter zu gestalten.

    Die jeweils nachfolgende Listbox soll immer um den vorhergehend ausgewählten Eintrag bereinigt werden, bis in Box 5 nur noch ein Eintrag übrig ist.

    Ich dachte daran, die ID des vorhergehenden Eintrags mit zu übergeben und diese in der func.php durch die SQL-Abfrage

    Quellcode

    1. SELECT id, betreff FROM `archiv` WHERE NOT id= ... LIMIT 5;

    auzuklammern. Aber das verfremdet ja die Ergebnisse, weil immer ein Eintrag nachrutscht!?

    Hast Du evtl. eine Idee, wie so etwas technisch lösbar ist? I

    Hier auch mal der Code der func.php:

    Quellcode

    1. <?
    2. $next = $_GET['dest']+1;
    3. echo 'select'.$_GET['dest'].'|| ';
    4. if($_GET['dest'] > 5) {
    5. echo '<input type="submit" value="Auswahl senden" >';
    6. } else {
    7. echo '<select name="source'.$_GET['dest'].'" id="source'.$_GET['dest'].'" ">';
    8. echo '<option value=""></option>';
    9. $conn = mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PW);
    10. mysql_select_db($MYSQL_DB, $conn);
    11. $result = mysql_query("SELECT id, betreff FROM `archiv` LIMIT 5; ");
    12. while($row = mysql_fetch_object($result))
    13. {
    14. echo '<option value="'.$row->id.'">'.$row->betreff.'</option>';
    15. }
    16. echo '</select>';
    17. if($_GET['dest'] < 5) {
    18. echo '<a href="#" onclick="sendRequest('.$next.')">UND</a>';
    19. }
    20. }
    21. ?>
    Alles anzeigen


    Danke für jegliche Eingebung!
    Um Rekursionen zu verstehen, muss man zuerst Rekursionen verstehen...
  • Wenn nach der Auswahl nie neue Daten dazu kommen, die Liste also immer nur kleiner wird, dann würde ich das nicht mit AJAX machen.

    Quellcode

    1. <html>
    2. <head>
    3. <script type="text/javascript">
    4. //<![CDATA[
    5. var liste = new Array();
    6. liste.push('Auswahl Option Nr. 1');
    7. liste.push('Auswahl Option Nr. 2');
    8. liste.push('Auswahl Option Nr. 3');
    9. liste.push('Auswahl Option Nr. 4');
    10. liste.push('Auswahl Option Nr. 5');
    11. var prefix = 'list';
    12. var count = 1;
    13. function createList(name) {
    14. var option, text, select, div, button;
    15. div = document.createElement('div');
    16. div.style.clear = 'both';
    17. select = document.createElement('select');
    18. select.style.cssFloat = 'left';
    19. select.name = name;
    20. for(var i=0; i<liste.length; i++) {
    21. if(liste[i] != null) {
    22. option = document.createElement('option');
    23. option.value = i;
    24. text = document.createTextNode(liste[i]);
    25. option.appendChild(text);
    26. select.appendChild(option);
    27. }
    28. }
    29. button = document.createElement('a');
    30. button.href = '#';
    31. button.onclick = function() {
    32. ++count; // counter erhöhen
    33. liste[select.value] = null; //element aus globaler liste löschen
    34. createList(prefix+count); // neue liste erstellen
    35. return false;
    36. };
    37. button.appendChild(document.createTextNode('UND'));
    38. button.style.cssFloat = 'left';
    39. div.appendChild(select);
    40. div.appendChild(button);
    41. document.getElementById('queries').appendChild(div);
    42. }
    43. //]]>
    44. </script>
    45. </head>
    46. <body onload="createList(prefix+count)">
    47. <div id="queries"></div>
    48. </body></html>
    Alles anzeigen