• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Checkbox mit boolean in eine Datenbank eintragen

BobBaumeister

Neues Mitglied
Guten Abend,


habe ein Formular mit 3 Checkboxen erstellt und den Wert der Checkbox will ich nun an eine PHP Datei senden, die diesen Wert in die Datebank einträgt.

Dies klappt auch so weit, doch das weitergeben des Wertes funtkioniert nur mit Post, wenn die Checkbox angeklickt ist, dann erscheint bei der PHP Datei die das verarbeiten soll, bei echo der Wert "on" und wenn nicht angeklickt ist kommt der Fehler "Undefined index".

Möchte aber auch einen Wert übergeben, wenn die Checkbox nicht angeklickt ist und das entweder "true" oder "false" übergeben werden und nicht on oder off, geht das?

Wenn ja würde ich mich freuen wenn mir jemand erklären könnte wie man sowas realisieren könnte,

Danke schonmal im Vorraus ;-)
 
Hallo,

schau dir den Link mal genau an, auch durchlesen und sieh dir an wie das gemacht wird. Wenn du dann immer noch Schwierigkeiten hast, melde dich noch mal mit HTML-Code vom Formular und das PHP-Script, das die Auswerttung vornimmt.
PHP: Checkboxen komfortabel auswerten
 
Code:
<form action="checkbox.php" method="POST">
checkbox:  <input type="checkbox" name="check" />
  <input type="submit" name="submit" value="senden" />
</form>

Wenn man die Checkbox nun selektiert und absendet, wird "$_POST[ 'check' ]" mit "on" deklariert.
Selektiert man es nicht, wird "$_POST[ 'check' ]" nicht einmal gesetzt.

Daher einfach nach deklarierung checken:

PHP:
if( isset( $_POST[ 'check' ] ) && $_POST[ 'check' ] == 'on' ) {
  //..
}

Ich merk gerade, dass ich auch lange nicht mehr mit Checkboxen gearbeitet habe, wobei mir viele netter Ideen durch den Kopf gegangen sind. :)

Gruß
 
on ist nur der Platzhalter für den value wenn man ihn weglässt. im Prinzip hat man schon einen Boolean Wert, wenn man einfach mit isset prüft.

Wenn es wirklich um einen Bool Wert geht, kann man das so machen:
PHP:
$check = !!isset( $_POST[ 'check' ] );

Zum eintragen in eine Datenbank bietet sich ein enum(0,1) Wert an.

PHP:
$check = isset( $_POST[ 'check' ] ) ? 1 : 0;
 
So erstmal ein dickes Dank an alles für die schnellem und netten Antworten.

Habe mich jetzt für die zweite Version von Struppi entschieden, weil das am ehesten meinen Vorstellungen entspricht.

Funktioniert auch wunderbar, also wenn nicht angeklickt ist 0 übertragen und wenn angeklickt ist wird 1 angezeigt.

Nur das einzige Problem ist, der "Undefined index" Fehler kommt immer noch und dadrunter kommen dann die Werte.

Außer wenn die Boxen angeklickt sind, dann kommen der Fehler nicht.

Eventuell hab ich das Script auch an der falschen Stelle eingesetzt?
 
Nur das einzige Problem ist, der "Undefined index" Fehler kommt immer noch und dadrunter kommen dann die Werte.

Außer wenn die Boxen angeklickt sind, dann kommen der Fehler nicht.

Eventuell hab ich das Script auch an der falschen Stelle eingesetzt?
Die Meldung kann aber nicht von der einen Zeile kommen. Du versuchst irgendwo anders noch auf den Wert zu zugreifen.
 
Poste mal bitte die Komplette Fehlermeldung. Da wird wahrscheinlich sowas wie "Undefined Index 'preisschild' in /var/www/www.fetterfehler.org/index.php on Line 22" oder so stehen.

Damit du die Fehlermeldung auch verstehst: Du holst ja die Daten die per POST/GET gesendet werden, werden diese aber nicht gesendet und du fragst nach z.B. "$_POST[ 'test' ]", existiert diese Variable nicht und gibt eine "Warnung" aus. Daher wird durch die Funktion "isset( $variable );" gefragt, ob diese Variable überhaupt existiert, wenn ja: { Tue Aktion }. In dem zweiten Beispiel von Struppi, wird die Variable $check auf 1 gesetzt falls POST Daten gesendet wurden. Wurden sie nicht gesendet, wird es 0 gesetzt.

Somit musst du nicht mehr $_POST[ 'check' ] überprüfen, sondern nur noch $check, bzw. $check ist bereits die Antwort, ob es ein Häckchen hat oder nicht.


Ich hoffe ich konnte es dir verständlich erklären.
 
Hatte die Variablen nochmal abgefragt gehabt, deswegen kam die Fehlermeldung nochmal.

Danke für die ganzen Mühen und die schnellen Antworten.
 
Zurück
Oben