Hallo,
Wie kann ich den Wert in der Datenbank speichern, so daß wenn ich diesen Datensatz erneut aufrufe die Checkboxes wieder angekreuzt sind, sofern dies vorher getan wurde.
Schauen wir uns das Ganze mal verkehrt herum an. Wie kannst Du in HTML ein Checkbox vorselektieren?
(Ich kenn jetzt nicht die PHP-Syntax so wirklich, ich machs deshalb 'in Perl', aber im Prinzip sollte das auch in PHP gleich laufen)
Antwort: mit dem Attribut 'checked'.
Es muß also folgender Output rauskommen:
<input type="checkbox" name="privat" value="irgendwas" checked>
Du siehst schon, der Wert ist eigentlich unerheblich, auf's 'checked' kommts an.
An einfachsten würde es also sein, wenn Du in der Datenbank einfach 'checked' eingibst, und das dann auch beim Output der Checkbox mitangibst.
Sagen wir mal 'checked' steht im DB-Feld 'privat', wenn es ausgewählt wurde.
<input type="checkbox" name="privat" value="checked" $Werte{privat}>
('$Werte{privat}' enthält den Inhalt des DB-Feldes 'privat')
Der Nachteil dieser Vorgehensweise ist, daß dabei zuviel Speicherplatz in der Datenbank benötigt wird (mind. 7 Bytes pro Datensatz).
Deshalb lassen wir uns was anderes einfallen.
Machen wir es indirekt!! Wir verwenden ein Array, in das wir folgendes reinschreiben:
$Selektiert[0] = "";
$Selektiert[1] = " checked ";
<input type="checkbox" name="privat" value="1" $Selektiert[$Werte{privat}]>
In der Datenbank schreiben wir dann den Wert '1' rein, falls es selektiert wurde, und nichts falls nicht ;-)
Der Feldtyp könnte byte oder char(1) sein, ist eigentlich mehr oder weniger egal.
Alternativ zum Array könntest Du, in Perl zumindestens, ein Hash benutzen, um in der Datenbank ein ja/nein (j/n) zu verwenden. Dann siehts halt so aus:
$Selektiert{'j'} = " checked ";
<input type="checkbox" name="privat" value="1" $Selektiert{$Werte{privat}}>
Du siehst es gibt mehrere Varianten. Wichtig beim Entwickeln von Lösungen ist halt ab unzu mal das Pferd von hinten aufzuzäumen. Also das gewünschte Ergebnis auszuformulieren, und dann zu überlegen, wie Du am besten zu diesem Ergebnis kommst. Denk ich ;-)
Es gibt sicherlich noch andere Möglichkeiten, aber mir fällt momentan keine mehr ein.
Ich hoffe, ich bin jetzt nicht zu langatmig geworden.
Grüße
Klaus