Checkboxen im PHP mit SQL
bearbeitet von
Hello,
> Ich muss zugeben, dass es erstmal ungewöhnlich mit PHP ist. Die ganzen Punkte und echos. Aber die ersten Schritte laufen mittlerweile ganz gut.
> Meine Bücher erläutern aber leider nicht alle Themen. Beispielsweise Checkboxen und/oder Radio Buttons
>
> Ich sehe/verstehe einfach nicht, wie ich da hin komme. Daher die 2 Fragen
>
> Wie sende ich eine 1 in die Datenbank, wenn eine checkbox gesetzt ist?
Die Frage wird in ein paar Minuten eher lauten: wie erkenne ich, dass ich ein FALSE (oder eine 0) an die Datenbank übermitteln muss, wenn **kein Checkbox-Parameter** übertagen wurde?
Vielleicht sollte ja außerdem gerade dieses Datensatzfeld gar nicht durch den Benutzerdialog bedient werden? Solch ein Szenario ist durchaus möglich und üblich!
Das Problem ist also komplexer!
## Ein paar Grundregeln der CS-Dialog-Datenverarbeitung:
- verändere nichts, was Du vorher nicht gelesen hast
- arbeite mit Sessions. Datensätze, deren alter Inhalt sich nicht im Sessionpuffer befindet, dürfen nicht verändert werden
- beschaffe dir aus der Datenbank (Metadaten der Tabelle, `INFORMATION_SCHEMA`) die Spaltentypen
- prüfe bei der Antwort vom Client die Darstellbarkeit der Requestparameter im Zieltyp der Datenbanktabelle.
- beachte den [Kontextwechsel](https://forum.selfhtml.org/self/2020/apr/21/checkboxen-im-php-mit-sql/1769238#m1769238) und das passende Escaping
- speichere dir in der Session alle Felder des Formulars, die bei der nachfolgenden Antwort (dem Update Request) des Clients vorhanden sein müssen und dürfen. Nur Checkboxen und Radios dürfen in den Post-Parametern fehlen. Alle anderen **müssen** vorhanden sein. Mehr Parameter **dürfen nicht vorhanden sein**.
- bei auftretenden Fehlern schreibe einen Logeintrag in dein Textlog der App, der dann durch **fail2ban** verstanden und behandelt werden kann.
Es gibt noch viel mehr dazu zu schreiben, damit es ein Kochrezept wird. Aber fang erst einmal langsam an und stelle deine Fragen dazu.
Glück Auf
Tom vom Berg
--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.
Checkboxen im PHP mit SQL
bearbeitet von
Hello,
> Ich muss zugeben, dass es erstmal ungewöhnlich mit PHP ist. Die ganzen Punkte und echos. Aber die ersten Schritte laufen mittlerweile ganz gut.
> Meine Bücher erläutern aber leider nicht alle Themen. Beispielsweise Checkboxen und/oder Radio Buttons
>
> Ich sehe/verstehe einfach nicht, wie ich da hin komme. Daher die 2 Fragen
>
> Wie sende ich eine 1 in die Datenbank, wenn eine checkbox gesetzt ist?
Die Frage wird in ein paar Minuten eher lauten: wie erkenne ich, dass ich ein FALSE (oder eine 0) an die Datenbank übermitteln muss, wenn **kein Checkbox-Parameter** übertagen wurde?
Vielleicht sollte ja außerdem gerade dieses Datensatzfeld gar nicht durch den Benutzerdialog bedient werden? Solch ein Szenario ist durchaus möglich und üblich!
Das Problem ist also komplexer!
## Ein paar Grundregeln der CS-Dialog-Datenverarbeitung:
- verändere nichts, was Du vorher nicht gelesen hast
- arbeite mit Sessions. Datensätze, deren alter Inhalt sich nicht im Sessionpuffer befindet, dürfen nicht verändert werden
- beschaffe dir aus der Datenbank (Metadaten der Tabelle) die Spaltentypen
- prüfe bei der Antwort vom Client die Darstellbarkeit der Requestparameter im Zieltyp der Datenbanktabelle.
- beachte den Kontextwechsel und das passende Escaping
- speichere dir in der Session alle Felder des Formulars, die bei der nachfolgenden Antwort (dem Update Request) des Clients vorhanden sein müssen und dürfen. Nur Checkboxen und Radios dürfen in den Post-Parametern fehlen. Alle anderen **müssen** vorhanden sein. Mehr Parameter **dürfen nicht vorhanden sein**.
- bei auftretenden Fehlern schreibe einen Logeintrag in dein Textlog der App, der dann durch **fail2ban** verstanden und behandelt werden kann.
Es gibt noch viel mehr dazu zu schreiben, damit es ein Kochrezept wird. Aber fang erst einmal langsam an und stelle deine Fragen dazu.
Glück Auf
Tom vom Berg
--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.