Checkboxen und deren Indizierung in PHP
Robert123
- php
Hallo Forum,
ich habe leider ein ziemlich blödes Problem in Verbindung HTML/PHP.
Folgendes Formular möchte ich erstellen:
Der Benutzer kann dynamisch (per AJAX) beliebig viele Reihen hinzufügen.
Anschließend wird das Formulat per PHP in eine Datenbank übertragen - soweit so gut.
Die Checkboxen sind folgendermaßen definiert:
<input type="checkbox" name="form[isextra][]" value="1">
Problem: Wenn ich das Formular im PHP-Skript auswerte, gehe ich alle Arraywerte mittels einer Schleife durch und speichere die einzelnen Datensätze in der DB ab. Das funktioniert bei den Drop-Down-Menüs sowie den Textfeldern recht gut, da alle Elementer einer Zeile den selben Index haben, beginnend bei 0.
Nur die Checkboxen besitzen einen völlig eigenen Index, nämlich nur jene Zeilen, in welchen die Checkbox auch aktiviert wurde.
Wie kann ich nun die Checkboxen den anderen Formularfeldern zuordnen? Gibts eine Möglichkeit, dass alle Checkboxen zumindest einen Default-Wert bekommen, damit diese im Array abgelegt (und indiziert) werden?
Danke.
Robert.
Hello,
<input type="checkbox" name="form[isextra][]" value="1">
Wie kann ich nun die Checkboxen den anderen Formularfeldern zuordnen? Gibts eine Möglichkeit, dass alle Checkboxen zumindest einen Default-Wert bekommen, damit diese im Array abgelegt (und indiziert) werden?
Indem Du den Index für die Checkbox bereits bei der Generierung des HTML festlegst und nicht PHP dies überlässt nach Erhalt des nächsten Post-Requests.
<input type="checkbox" name="form[isextra][1]" value="checked">
<input type="checkbox" name="form[isextra][2]" value="checked">
<input type="checkbox" name="form[isextra][3]" value="checked">
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
Die Checkboxen sind folgendermaßen definiert:
<input type="checkbox" name="form[isextra][]" value="1">
Problem: Wenn ich das Formular im PHP-Skript auswerte, gehe ich alle Arraywerte mittels einer Schleife durch und speichere die einzelnen Datensätze in der DB ab. Das funktioniert bei den Drop-Down-Menüs sowie den Textfeldern recht gut, da alle Elementer einer Zeile den selben Index haben, beginnend bei 0.
Nur die Checkboxen besitzen einen völlig eigenen Index, nämlich nur jene Zeilen, in welchen die Checkbox auch aktiviert wurde.
Natürlich - schliesslich wird für die nur dann überhaupt etwas übertragen, wenn sie auch angekreuzt sind.
Wie kann ich nun die Checkboxen den anderen Formularfeldern zuordnen?
In dem du den gewünschten Index im Namen selber vorgibst.
MfG ChrisB
In dem du den gewünschten Index im Namen selber vorgibst.
Ja, aber genau das ist ja das Problem. Wie generiere ich den Namen? Ich weiß ja nicht (bzw. wüsste nicht, wie ich das machen sollte), welche ID der zuletzt eingefügte Datensatz hatte. Was das Ganze noch komplizierter machen würde: Man soll ja auch zur Laufzeit neue Zeilen hinzufügen bzw. vorhandene Zeilen löschen können (dies wird mittels JQuery erreicht).
lg
Hi,
In dem du den gewünschten Index im Namen selber vorgibst.
Ja, aber genau das ist ja das Problem. Wie generiere ich den Namen? Ich weiß ja nicht (bzw. wüsste nicht, wie ich das machen sollte), welche ID der zuletzt eingefügte Datensatz hatte.
Welcher Datensatz?
Ich dachte, du wolltest neue anlegen?
Was das Ganze noch komplizierter machen würde: Man soll ja auch zur Laufzeit neue Zeilen hinzufügen bzw. vorhandene Zeilen löschen können (dies wird mittels JQuery erreicht).
Na und?
Die Anzahl aller vorhandenen Eingabefeld-Sätze kannst du doch ermitteln.
MfG ChrisB
Hallo
In dem du den gewünschten Index im Namen selber vorgibst.
Ja, aber genau das ist ja das Problem. Wie generiere ich den Namen? Ich weiß ja nicht (bzw. wüsste nicht, wie ich das machen sollte), welche ID der zuletzt eingefügte Datensatz hatte.
Welcher Datensatz?
Ich dachte, du wolltest neue anlegen?Was das Ganze noch komplizierter machen würde: Man soll ja auch zur Laufzeit neue Zeilen hinzufügen bzw. vorhandene Zeilen löschen können (dies wird mittels JQuery erreicht).
Na und?
Die Anzahl aller vorhandenen Eingabefeld-Sätze kannst du doch ermitteln.
Angesichts der Möglichkeit, neue Eingabefelder durch den Benutzer generieren zu lassen, ist eine Zählung evtl. ungeeignet. Da die Generierung aber mit Ajax, also offensichtlich mit Daten vom Server, stattfindet, ist davon auszugehen, dass es sich dabei um Felder für bekannte bzw. bestimmbare Werte, genauer: aus einem bestimmbaren Wertebereich, handelt. Somit würde sich eine textuelle Benamsung aller möglichen Felder (checkbox[serverseitig_bestimmter_name]) anbieten.
Tschö, Auge
hi,
Wie kann ich nun die Checkboxen den anderen Formularfeldern zuordnen? Gibts eine Möglichkeit, dass alle Checkboxen zumindest einen Default-Wert bekommen, damit diese im Array abgelegt (und indiziert) werden?
Am Besten, Du erstellst einmal ein Minimalformular mit Checkboxen (name, id, value... auch mal ohne value), form-method="GET" und schaust Dir mal an, was in der Browserzeile passiert, wenn Du ein Submit machst. Da siehst Du ganz genau, was der Browser schickt und genau das musst Du mit PHP auswerten.
Hotti