Formulardaten ändern > Checkboxproblem

webdev

Mitglied
Hallo

ich habe ein Formular erstellt, welches man online ändern kann. Ein eingeloggter Benutzer sieht nur seine Daten. Bei gewöhnlichen Textfeldern hab ich kein Problem. Diese werden im Formular angezeigt, können geändert werden, und durch Abschicken werden die neuen Inhalte in die DB geschrieben.

Was hingegen nicht klappt, sind Checkboxen! Ich kriege das nicht hin, dass die Resultate (ob bereits angewählt oder nicht und die geänderten in die DB schreiben und wieder anzeigen).

Hier ein Beispiel wie ich das mit gewöhnlichen Textfeldern gemacht habe:
Code:
//hier die Daten, die man aus der DB holt und editierbar macht
$_REQUEST['data']['vorname'] = $db->f('vorname');


HTML:
//hier das Formularfeld für Vorname
<form action...>
<input name="data[vorname]" type="text" id="vorname" value="'.$_REQUEST['data']['vorname'].'" size="50">
</form>
Angenommen, meine Checkboxen gehören zum Array 'Obst' und ich habe die Möglichkeit, Apfel, Birne und Banane anzuwählen. Wie lauten die beiden Codebereiche dazu?

Code:
$_REQUEST['data']['obst_apfel'] = $db->f('obst_apfel');
$_REQUEST['data']['obst_birne] = $db->f('obst_birne');
$_REQUEST['data']['obst_banane'] = $db->f('obst_banane');

HTML:
<form action...>
<input type="checkbox" name="data[obst_apfel]" value="<?php if (isset($_REQUEST[data][obst_apfel])) echo "checked"; ?>>">

<input type="checkbox" name="data[obst_birne]" value="<?php if (isset($_REQUEST[data][obst_birne])) echo "checked"; ?>>">

<input type="checkbox" name="data[obst_banane]" value="<?php if (isset($_REQUEST[data][obst_banane])) echo "checked"; ?>>">

</form>
meine Felder oben geben mir so immer alle Felder angewählt aus, egal ob ich sie anklicke oder nicht..

Kann mir jemand helfen?

Danke im voraus
Beitrag bearbeiten/löschen
 
Das Schlüsselwort "checked" kommt NICHT zum "value"

Probier es mal so:
PHP:
<input type="checkbox" name="data[obst_banane]" <?php if (isset($_REQUEST[data][obst_banane])) echo " checked "; ?>>
 
Versuche es einmal so:

HTML:
<input type="checkbox" name="data[obst_apfel]" <?php if (isset($_POST[data][obst_apfel]))echo "checked"; ?>/>
<input type="checkbox" name="data[obst_birne]" <?php if (isset($_POST[data][obst_birne])) echo "checked"; ?>/>
<input type="checkbox" name="data[obst_banane]" <?php if (isset($_POST[data][obst_banane])) echo "checked"; ?>/>
 
pdatrain hat gesagt.:
Das Schlüsselwort "checked" kommt NICHT zum "value"

Probier es mal so:
PHP:
<input type="checkbox" name="data[obst_banane]" <?php if (isset($_REQUEST[data][obst_banane])) echo " checked "; ?>>

Hallo und danke für die Antwort!

Geht leider nicht. Ich bekomme eine leere Checkbox und dahinter ein zweites geschlossenes Tag. Ob ich nun eine Checkbox anklicke und die Daten zum Ändern an die DB schicke, es ändert sich leider nichts :confused:
 
RS9999 hat gesagt.:
Versuche es einmal so:

HTML:
<input type="checkbox" name="data[obst_apfel]" <?php if (isset($_POST[data][obst_apfel]))echo "checked"; ?>/>
<input type="checkbox" name="data[obst_birne]" <?php if (isset($_POST[data][obst_birne])) echo "checked"; ?>/>
<input type="checkbox" name="data[obst_banane]" <?php if (isset($_POST[data][obst_banane])) echo "checked"; ?>/>


Hi - auch Dir danke für die Antwort. Aber geht leider auch nicht. Ich bekomme ebenfalls eine leere Checkbox und dahinter '/>' :confused:
 
Also, wenn das so teste, funktioniert das wunderbar.
HTML:
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
   <input type="checkbox" name="data[obst_apfel]" <?php if (isset($_POST[data][obst_apfel]))echo "checked"; ?>/>
   <input type="checkbox" name="data[obst_birne]" <?php if (isset($_POST[data][obst_birne])) echo "checked"; ?>/>
   <input type="checkbox" name="data[obst_banane]" <?php if (isset($_POST[data][obst_banane])) echo "checked"; ?>/><br/>
   <input type="submit" value="senden" name="senden"/>
</form>
 
RS9999 hat gesagt.:
Also, wenn das so teste, funktioniert das wunderbar.
HTML:
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
   <input type="checkbox" name="data[obst_apfel]" <?php if (isset($_POST[data][obst_apfel]))echo "checked"; ?>/>
   <input type="checkbox" name="data[obst_birne]" <?php if (isset($_POST[data][obst_birne])) echo "checked"; ?>/>
   <input type="checkbox" name="data[obst_banane]" <?php if (isset($_POST[data][obst_banane])) echo "checked"; ?>/><br/>
   <input type="submit" value="senden" name="senden"/>
</form>

Hallo

danke für die Mühe. Ich schaue es mir morgen in Ruhe an. Aber ich bin mir nicht sicher, ob Du dasselbe meinst: ich will nicht einfach ein Formularinhalt, den man im Browser abgesendet hat, sehen. Ich will den Inhalt in ein editierbares Formular fügen. Der Inhalt kommt aus eine DB und kann nachher im Browser (nach Einloggen etc.) geändert werden. Man soll also dort in dem editierbaren Formular die Checkboxen-Einträge ändern können.

Diese werden anschliessend wieder in die DB geschrieben und auf einer anderen html-Seite modifziert angezeigt.
 
Auch mein Vorschlag funktioniert perfekt.

Wo liegt denn jetzt das Problem? Beim Ausgeben(!) des Datenbankinhaltes im Formular oder im Ändern(!) und updaten des Datensatzes?
 
Hallo pdatrain und RS9999

Es klappt (bei beiden) in keinem Bereich:

1. der Eintrag gelangt nicht in die DB
2. er wird weder im Änderungsformular angezeigt noch auf den weiteren Seiten
3. Im Änderungsformular sieht man zwar weiterhin die Checkbox, aber die ist nicht angewählt und hat zudem nach der Checkbox ein zusätzliches '>' (Schlusstag) - bei RS9999 zudem ein Slash zuviel.

Was bisher funktioniert ist das hier (im gleichen Formular):

PHP:
 $_REQUEST['data']['vorname'] = $db->f('vorname');

und im Formular
HTML:
<form...>
<input name="data[vorname]" type="text" id="vorname" value="'.$_REQUEST['data']['vorname'].'" size="50">
</form>

Man muss die Checkboxen irgendwie anders ansprechen, aber wie? :confused:

Danke für Eure Tipps!
 
Zuletzt bearbeitet:
webdev hat gesagt.:
Man muss die Checkboxen irgendwie anders ansprechen, aber wie? :confused:

Nein! Die Checkboxen werden GENAU SO angesprochen wie wir es Dir vorgekaut haben.Wenn Du es nicht glaubst, hier ist der Beweis: SelfHTML

Wenn unsere beiden Vorschläge bei uns funktionieren, nur bei DIR nicht heißt das, dass DU bei der Umsetzung möglicherweise Murks gebaut hast ! Ganz heißer Tipp: Poste den Code, dann können wir sehen was daran falsch ist.

Zu 1) Ich habe meine Glaskugel verloren. Da Du uns leider keinen Code gegeben hast wie das Formular nach einem Klick auf den Submit-Button ausgewertet wird und wie die SQL-Syntax aussieht können wir Dir in diesem Fall nicht helfen.
Zu 2) Wenn der Datensatz nicht in die Tabelle geschrieben wird kann er auch nicht ausgegeben werden
Zu 3) Wenn die Checkbox ausgewählt sein sollte, es aber nicht ist, liegt das entweder daran, dass die if-Abfrage FALSE zurückgibt und damit die Eigenschaft "checked" nicht gesetzt wird, oder die Syntax des ausgegebenen HTMLs nicht korrekt ist (versuch mal selbst herauszufinden, was zutreffen könnte). Ich halte letzteres für wahrscheinlicher, da bei Dir die schließenden ">" ausgegeben werden. Aber mit dem geposteten Code-Schnippselchen kann ich meine Theorie nicht überprüfen.
 
Zurück