Basic Frage Formular
Birgit
- formulare
Hallo in die Runde, habe mal eine sehr basic Frage zu einem Formular. Daten werden über php in das Formular geschrieben und per POST und php nach Abschicken in eine Datenbank geschrieben. Jetzt habe ich den Fall, dass ich eine Liste mit Tasks habe
wobei das "Erledigt" hinter jedem Eintrag im Prinzip der Submit Button ist. Wenn ich auf Erledigt klicke wird in der Datenbank der Status des Eintrags geändert.
Meine Fragen mache ich die gesamte Liste in einem "<form>" Element, oder benötige ich für jeden Eintrag ein eigenes <form></form> Konstrukt? Wenn in einem einzigen - auf was muss ich achten?
Klar, könnte ich das auch mit einem Häckchen oder Select Button machen und dann am Ende der Liste einen einzigen Submit Button - aber ich fände diese Lösung schöner.
Dank euch schon mal Birgit
Ein Formular kann viele Submit-Buttons haben. Im Falle des Absendens wird der Name und der Value des angeklickten Submits gesendet. Benutze also Submits mit unterschiedlichem Name und gleichen Values oder, was sich manchmal besser programmieren lässt, mit gleichem Name (für weitere, eventuelle JS-Sachen verwende eine eindeutige ID) . Hier das Beispiel mit Submits:
<input type=submit name="erledigt[123]" value="v" />
<input type=submit name="erledigt[124]" value="v" />
Mit Buttons geht das auch. Hier das Minimalbeispiel zum Ausprobieren (sieh Dir die URL an und überlege wie das serverseitig auszuwerten ist):
<html>
<form>
<button name="erledigt[123]" value="e">V</button>
<button name="erledigt[124]" value="e">V</button>
</form>
<form>
<button name="e" id="e_125" value="125">V</button>
<button name="e" id="e_126" value="126">V</button>
</form>
</html>
Hello,
Ein Formular kann viele Submit-Buttons haben. Im Falle des Absendens wird der Name und der Value des angeklickten Submits gesendet. Benutze also Submits mit unterschiedlichem Name und gleichen Values oder, was sich manchmal besser programmieren lässt, mit gleichem Name (für weitere, eventuelle JS-Sachen verwende eine eindeutige ID) . Hier das Beispiel mit Submits:
<input type=submit name="erledigt[123]" value="v" /> <input type=submit name="erledigt[124]" value="v" />
Mit Buttons geht das auch. Hier das Minimalbeispiel zum Ausprobieren (sieh Dir die URL an und überlege wie das serverseitig auszuwerten ist):
<html> <form> <button name="erledigt[123]" value="e">V</button> <button name="erledigt[124]" value="e">V</button> </form> <form> <button name="e" id="e_125" value="125">V</button> <button name="e" id="e_126" value="126">V</button> </form> </html>
Hier bieten sich bei Listenbearbeitung allerdings eher Checkboxen für die Datensätze und ein gemeinsamer Submitbutton für die Ausführen-Funktion an.
Liebe Grüße
Tom S.
Hello,
Daten werden über php in das Formular geschrieben und per POST und php nach Abschicken in eine Datenbank geschrieben. Jetzt habe ich den Fall, dass ich eine Liste mit Tasks habe
- 2017-02-26 Im SelfhtmlForum fragen stellen - Erledigt
- 2017-02-27 Antwort in Script einbauen - Erledigt
- 2017-02-28 Kopf einschalten und selber nachdenken - Erledigt
- .
- .
wobei das "Erledigt" hinter jedem Eintrag im Prinzip der Submit Button ist. Wenn ich auf Erledigt klicke wird in der Datenbank der Status des Eintrags geändert.
Meine Fragen mache ich die gesamte Liste in einem "<form>" Element, oder benötige ich für jeden Eintrag ein eigenes <form></form> Konstrukt? Wenn in einem einzigen - auf was muss ich achten?
Klar, könnte ich das auch mit einem Häckchen oder Select Button machen und dann am Ende der Liste einen einzigen Submit Button - aber ich fände diese Lösung schöner.
Sicherer ist immer die Einzelbearbeitung.
Bei Verwendung eines Grids ist die Fehler- und Manipulationsgefahr größer.
Man kann aber etwas dagegen tun:
Beim Aufruf einer Seite mit mehreren Datenzeilen schreibt man deren IDs in die Session. Kommt jetzt eine Änderungs- oder Löschanfrage hierfür, muss die ID auch in der Session stehen. Erst dann wird abgearbeitet.
Das gemeinsame Abarbeiten im Update geht z. B bequem mit der Klausel "where ID in(1,5,70,99)".
Wenn Du es noch manipulatinssicherer haben willst, also dass garantiert nur Datensätze bearbeitet (update, delete) werden können, die direkt davor zur Sicht selektiert wurden, dann übersetzt Du in der Session die realen IDs in Schlüssel, z. B $key = md5('geheim' . ID) und sendest nur diese Schlüssel zu Client. So kann dann ein User wirklich nur die Datensätze manipulieren, die er auch sehen durfte.
Liebe Grüße
Tom S.