Variable Anzahl Formularfelder an Javascript/PHP-Funktion übergeben

  • Hallo allerseits,

    ich habe auf einer Webseite mithilfe von xajax Ajax-Funktionalität mit PHP umgesetzt. Nun habe ich ein Formular und möchte entprechend einer bestimmten Aktion dann Ajax-Code ausführen. Bis dahin kein Problem. Ich definier mir entsprechend eine PHP-Funktion, die dann den Code ausführt. Ich kann auch der Funktion Javascript-Variablen übergeben, die dort verarbeitet werden können. Die Umwandlung meiner PHP-Funktion übernimmt das Xajax-Objekt. Nun zu meinem eigentlichen Problem:
    Ich habe ein Formular welches aus Datenbankfeldern aufgebaut wird und dementsprechend auch immer anders aussehen kann. Je nach Kardinalität der Tabelle sind in dem Formular eine Menge von Checkboxen zu sehen, wobei der Nutzer davon mehrere anhaken kann. Wie kann ich nun beim Aufruf der Ajax-Funktion dieser eine variable Menge an Parametern (angehakte Checkboxen) bzw. ein Array aus allen angehakten Checkboxen übergeben? Gibt es da eine Javascript-Funktion? Oder hat jemand eine andere Idee, wie ich das umsetzen kann?
    Wenn mein Problem nicht verstanden wurde, dann einfach nochmal nachfragen.

    Gruss chuqa

  • Hallo allerseits,

    ich habe auf einer Webseite mithilfe von xajax Ajax-Funktionalität mit PHP umgesetzt. Nun habe ich ein Formular und möchte entprechend einer bestimmten Aktion dann Ajax-Code ausführen. Bis dahin kein Problem. Ich definier mir entsprechend eine PHP-Funktion, die dann den Code ausführt. Ich kann auch der Funktion Javascript-Variablen übergeben, die dort verarbeitet werden können. Die Umwandlung meiner PHP-Funktion übernimmt das Xajax-Objekt. Nun zu meinem eigentlichen Problem:
    Ich habe ein Formular welches aus Datenbankfeldern aufgebaut wird und dementsprechend auch immer anders aussehen kann. Je nach Kardinalität der Tabelle sind in dem Formular eine Menge von Checkboxen zu sehen, wobei der Nutzer davon mehrere anhaken kann. Wie kann ich nun beim Aufruf der Ajax-Funktion dieser eine variable Menge an Parametern (angehakte Checkboxen) bzw. ein Array aus allen angehakten Checkboxen übergeben? Gibt es da eine Javascript-Funktion? Oder hat jemand eine andere Idee, wie ich das umsetzen kann?
    Wenn mein Problem nicht verstanden wurde, dann einfach nochmal nachfragen.

    Gruss chuqa

    Ich hab mich schonmal ein wenig mit der XAJAX Klasse beschäftigt, die ist eigentlich ganz lustig^^ Am besten du schreibst uns mal den Code ;)

    Der frühe Vogel fängt den Wurm,
    aber die zweite Maus bekommt den Käse.

  • Nunja ich versuch mal was zusammen zustellen:
    Also das Formular baut sich eben nach einer Datenbankabfrage auf. Es entsteht eine Tabelle die in jeder Zeile ein Tupel der Relation enthält, also ungefähr wie folgt :

    Wie man sehen kann, befindet sich am Anfang jeder Zeile eine Checkbox. Nun möchte ich beim Klicken eines Buttons eine Funktion aufrufen, mit deren Hilfe ich dann die Tupel alle selektierten Checkboxen entsprechend bearbeiten kann. Der Button könnte ungefähr so aussehen:

    HTML
    <button name='btn_send' value='Ausf&uuml;hren' onclick='xajax_doAction(--Parameter???--)' />

    Die Xajax-Code erklärt sich dann ja von allein:

    PHP
    $xajax = new xajax();
    $xajax->registerFunction("doAction");
    function doAction($checkedValues){
       for($i=0;$i<count($checkedValues); $i++){
          // tu irgendwas mit $checkedValues[$i]...
       }
    }
    $xajax->processRequest();

    Der PHP-Code und der Aufruf des Xajax-Objektes damit das Ajax-Spezifische ausgeführt wird, ist auch nicht das Problem. Ich müsste eigentlich nur wissen, wie ich die angehakten Checkboxen auslesen und im onclick-Ereignis des Buttons als Parameter der Funktion übergeben kann. Als Array ist nur eine Idee von mir, gut möglich, dass das so nicht möglich ist...

  • Also ich denke, ich habe eine ganz gute Lösung gefunden. Nach Recherche der Xajax-Doku bin ich auf die Funktion xajax.getFormValues gestoßen, die als Parameter die ID des entsprechenden Formulars bekommt. Sie liefert alle Elemente des Formulars als Array. So kann ich beim Betätigen des Senden-Buttons meine Xajax-Funktion aufrufen, die dann entsprechend die Daten des Formulars auswertet:

    HTML
    <input type='submit' value='Ausf&uuml;hren' onclick="xajax_verarbeiteFormular(xajax.getFormValues('form_id'))" />

    Das action-Attribut im Formular gibt es nicht mehr, stattdessen wird das Absenden des Formulars abgebrochen:

    HTML
    <form id='form_id' name='entries' onsubmit='return false' method='post'>

    Den Namen der Checkboxen definiere ich mit dem entsprechenden Namen plus die Arrayklammern, so erhalte ich hinterher ein Array mit den ausgewählten Checkboxen:

    PHP
    "<input type='checkbox' name='id[]' value='".$row['id']."' />"

    Die Definition meiner Xajax-Funktion sieht dann wie folg aus:

    PHP
    function verarbeiteFormular($data){
    }

    In der Funktion kann ich dann über

    PHP
    $data['id']

    auf das Array zugreifen, welches alle angehakten Checkboxen enthält.

    Danke an alle, die sich um Hilfe bemüht haben ;)