Senden Sie ein HTML-Formular mit leeren Kontrollkästchen
Ich habe ein HTML-Formular mit PHP, ich bin das senden der Daten von dem Formular in eine MySQL-Datenbank. Einige der Antworten zu den Fragen auf dem Formular-Kontrollkästchen. Offensichtlich werden die Benutzer nicht haben, kreuzen Sie alle Kontrollkästchen für eine Frage. Ich will auch zu den anderen Fragen (einschließlich radio-Gruppen) optional.
Allerdings, wenn ich senden Sie das Formular mit leeren Eingabefeldern, radio-Gruppen etc, erhielt ich eine lange Liste von "Undefined index" - Fehler-Nachrichten für jeden von Ihnen.
Wie kann ich dies umgehen? Danke.
InformationsquelleAutor der Frage Tray | 2009-01-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht aktiviert radio-oder checkbox-Elemente nicht vorgelegt, da Sie nicht als erfolgreich. Also Sie haben zu prüfen, wenn Sie gesendet werden mit der
isset
oderempty
Funktion.InformationsquelleAutor der Antwort Gumbo
Habe ich diese Technik benutzt, von Zeit zu Zeit:
Hinweis: Dies wird interpretiert anders in verschiedenen server-side-Sprachen, also testen und bei Bedarf anpassen. Dank SimonSimCity für den Tipp.
InformationsquelleAutor der Antwort ceejayoz
Einen ungeprüften checkbox nicht zugestellt bekommen, in der POST-Daten.
Sie sollten nur prüfen, ob es leer ist:
In PHP
empty()
undisset()
nicht generieren verstoßen.InformationsquelleAutor der Antwort Greg
Hier ist eine einfache Lösung mit javascript:
bevor das Formular mit Checkboxen vorgelegt wird, stellen Sie die "off" auf 0 und prüfen Sie diese, um sicherzustellen, dass Sie senden. dies funktioniert für checkbox-arrays zum Beispiel.
/////Beispiel //////
gegeben, ein Formular mit der id="formId"
InformationsquelleAutor der Antwort idf
Hinzufügen fmsf code, der beim hinzufügen von Checkboxen, mache ich Ihnen ein array mit [] im Namen
InformationsquelleAutor der Antwort user58670
Verwenden Sie diese
Oder zu ersetzen-was auch immer Ihr kein Wert für die 0
InformationsquelleAutor der Antwort Cruachan
Wir Probleme erkennen, die markiert ist oder nicht.
Wenn Sie das Auffüllen der form in einer for-Schleife, bitte verwenden Sie value-Eigenschaft als Daten-Inhaber:
Wenn Formular senden " erhalten Sie, um zahlen von Checkboxen, die markiert ist (in diesem Fall habe ich überprüft, 3. und 4. Kontrollkästchen):
Bei der Verarbeitung der Formular-Daten in loop, sagen wir mal in post.php verwenden Sie folgenden code, um festzustellen, wenn die zugehörige Zeile ausgewählt ist:
Endgültige code zum testen:
InformationsquelleAutor der Antwort tolginho
Obwohl viele Antworten eingereicht wurden, musste ich improvisieren für meine eigene Lösung, weil ich die angepasste check-Boxen. In anderen Worten, keine der Antworten für mich gearbeitet.
Was ich wollte ist eine Reihe von Kontrollkästchen, mit on-und off-Werte. Der trick war, um Einreichen für jeden check-box on/off-Wert ein Trennzeichen. Können sagen, dass das Trennzeichen ist ";" so ist die Zeichenfolge, die Sie bekommen, ist
;,, ;,;, ;
Dann, wenn Sie Ihre post einfach teilen Sie die Daten in ein array mit "," als Zeichen für die Spaltung, und dann wenn das array-element enthält "on", ist der check-box ist an, sonst ist es aus.
Für jeden check-box, ändern Sie die ID, alles andere ist gleich... und der syntax, die wiederholt wird:
EDIT: statt ";", können Sie einige SCHLÜSSEL, string-Wert, und so wissen Sie, dass Sie nicht mess up die Reihenfolge, nachdem die POST ist, die auf der server-Seite... so können Sie ganz einfach erstellen Sie eine Map, Hash, oder was auch immer. PS: halten Sie beide in den gleichen div-tag.
InformationsquelleAutor der Antwort Display Name