Radio-Buttons mit neutralem default-Wert?
Andreas Koerber
- html
Hallo,
ich möchte einen Fragebogen mittels PHP auswerten. Dazu möchte ich mit $_POST auf die vom Formular erzeugten Werte zugreifen. Unter anderem möchte ich mit $_POST die entsprechenden Spalten in einer Tabelle in MySQL erzeugen.
Dieses Skript soll für MEHRERE Formulare gelten. Daher kann es nicht die verwendeten Variablen alle explizit enthalten und abfragen. Ich möchte also erreichen, dass das Skript erkennt, welche Abfragen überhaupt im Formular drin sind.
Nun ist es ja so, dass $_POST["xx"] in php leer ist, wenn der user die entsprechende Abfrage namens "xx" übergangen hat, d.h., die globale variable $_POST enthält immer nur diejenigen Eingaben, die auch ausgefüllt wurden. Ich brauche jedoch einmal ALLE Variablen, ob ausgefüllt oder nicht.
Außerdem müsste dann das Skript bei jeder Änderung des Formulars geändert werden. Ich stelle mir aber vor, dass das Skript einfach ALLE Abfragen verwendet, ob die entsprechende Variable nun gesetzt ist oder nicht.
Das würde bedeuten, dass die Abfragen alle mit einem Wert vorbelegt sein müssten, um in $_POST als existent zu gelten.
Bei Radio-Buttons gibt es m.W. nur die Möglichkeit, eine der VORGEGEBENEN Optionen als Default zu setzen. Dann hat der Unser ab nicht mehr die Möglichkeit, GAR NICHTS zu antworten.
Gibt es eine andere Möglichkeit?
Mir schwebt etwas vor wie
<input type="RADIO" name="xx" value="y" default=" ">.
Das wäre dann entsprechend oft zu wiederholen.
Oder gibt es in php (ich weiß, dass das hier nicht das Forum dazu ist), eine globale Variable zu benutzen, die auch die NICHT übergebenen inputs kennt?
Dank im Voraus
Andreas Körber
Hi,
Nun ist es ja so, dass $_POST["xx"] in php leer ist, wenn der user die entsprechende Abfrage namens "xx" übergangen hat,
was daran liegt, dass der Client in dem Fall keine Information versenden _darf_.
Ich brauche jedoch einmal ALLE Variablen, ob ausgefüllt oder nicht.
Dann muss das Script sie kennen. Wieso eigentlich Variablen? Das sind Parameter, nichts anderes.
Außerdem müsste dann das Skript bei jeder Änderung des Formulars geändert werden.
Das Script muss die Parameter _kennen_. Sie müssen nicht im Programmcode verewigt sein.
Oder gibt es in php (ich weiß, dass das hier nicht das Forum dazu ist),
Doch, ist es.
eine globale Variable zu benutzen, die auch die NICHT übergebenen inputs kennt?
Nein.
Cheatah
Liebe(r) Cheatah,
danke für die Antwort. Das hilft mir aber noch nicht weiter.
Ich könnte mir auch ein Skript vorstellen (aber leider nicht selbst programmieren), das das aufrufende Formular unter die Lupe nimmt, alle "inputs" heraussucht und die enthaltenen Namen in ein Array steckt. Da müsste natürlich auch eine Dubletten-Prüfung dabei sein, denn gerade bei RADIOs kommen ja die "name"-Bezeichnungen doppelt vor.
Kennst jemand so ein Skript?
PS:
HTML muss doch eigentlich die INPUTs selbst verwalten, gerade WEIL mehrere inputs per gleichem Namen auf die selbe Variable verweisen. Kann man nich dort irgendwo eine Liste der gefundenen INPUT ausgeben lassen?
Dank im Voraus
Andreas Körber
Hi,
Liebe(r) Cheatah,
mit "r".
Das hilft mir aber noch nicht weiter.
Nein, denn eine triviale Lösung existiert nicht. Nachdem Du das weißt, kannst Du Dir eine nicht-triviale überlegen - das sollte meine Hilfe sein.
Ich könnte mir auch ein Skript vorstellen (aber leider nicht selbst programmieren), das das aufrufende Formular unter die Lupe nimmt,
Dazu muss es das Formular natürlich kennen.
alle "inputs" heraussucht und die enthaltenen Namen in ein Array steckt. Da müsste natürlich auch eine Dubletten-Prüfung dabei sein, denn gerade bei RADIOs kommen ja die "name"-Bezeichnungen doppelt vor.
Nun ja, ich denke, dass Du mit einer (wie auch immer gearteten) Konfiguration weiter kommst, aus der sowohl die Prüfung als auch das Formular selbst generiert werden kann. Einen weiteren, etwas leichteren Weg verstecke(!) ich vor Dir, da darfst Du selbst drauf kommen.
Kennst jemand so ein Skript?
Ja, aber in keiner Technik, die Dir zur Verfügung steht ;-)
HTML muss doch eigentlich die INPUTs selbst verwalten, gerade WEIL mehrere inputs per gleichem Namen auf die selbe Variable verweisen.
Parameter, nicht Variable, und nicht HTML verwaltet dies, sondern der Browser.
Kann man nich dort irgendwo eine Liste der gefundenen INPUT ausgeben lassen?
Denkbar, allerdings nützt das dem Server nichts.
Cheatah
Hallo Andreas.
Ich könnte mir auch ein Skript vorstellen (aber leider nicht selbst programmieren), das das aufrufende Formular unter die Lupe nimmt, alle "inputs" heraussucht und die enthaltenen Namen in ein Array steckt. Da müsste natürlich auch eine Dubletten-Prüfung dabei sein, denn gerade bei RADIOs kommen ja die "name"-Bezeichnungen doppelt vor.
Wie _der_ Cheatah schon angemerkt hat, hast du mit PHP keinen Zugriff auf clientseitige Gegebenheiten. Entweder du kennst alle Eingabefelder in deiner HTML-Datei namentlich, die du dann im PHP-Script abfragst, ob sie dem Script mit entsprechendem Wert übergeben wurden, oder du musst irgend etwas clientseitig basteln.
HTML muss doch eigentlich die INPUTs selbst verwalten, gerade WEIL mehrere inputs per gleichem Namen auf die selbe Variable verweisen. Kann man nich dort irgendwo eine Liste der gefundenen INPUT ausgeben lassen?
Du kannst mit Hilfe von Javascript auf alle Elemente des HTML-Dokumentes zugreifen. Da es allerdings abschaltbar ist, kannst du dich nicht darauf verlassen, dass das von dir gewünschte Ergebnis auch in deinem PHP-Script ankommt.
Freundschaft!
Siechfred