Checkboxen abspeichern
Sunshine
- php
Hallo Leute,
irgendwie bin ich gerade am verzweifeln, weil ich total auf dem schlauch stehe.
Ich habe ein Formular bei dem ich Kunden anlegen kann, in diesem Formular gibt es einige Checkboxen, die die Rechte des neuen Kunden festlegen.
Ich will nun abspeichern ob die Harken gesetzt (=1) oder nicht gesetzt (=0) sind.
Dabei muss ich beachten, was für einen Kunden ich anlege. Lege ich einen "Administrator" an, dann darf er von vornherein alles, egal welche auswahl der eingebende trifft. Lege ich aber einen niederen Kunden an, muss ich die Checkboxen beachten und feststellen, ob der Harken gesetzt ist oder nicht.
Ich danke euch für jeden Konstruktiven Vorschlag, der mich aus meinem Engpass holt.
Tschau
Sunshine
Hallo Sunshine,
Ich will nun abspeichern ob die Harken gesetzt (=1) oder nicht gesetzt (=0) sind.
Dabei muss ich beachten, was für einen Kunden ich anlege. Lege ich einen "Administrator" an, dann darf er von vornherein alles, egal welche auswahl der eingebende trifft. Lege ich aber einen niederen Kunden an, muss ich die Checkboxen beachten und feststellen, ob der Harken gesetzt ist oder nicht.
Willst du die Werte aus einer Datenbank auslesen, und in einem Formular ausgeben?
Dann musst du in das <input>-Tag eine if-Abfrage einbauen, die 'checked="checked"' ausgibt, wenn die Eigenschaft '1' ist, ansonsten eben nichts:
<input type="checkbox" name="bla"<?php if($eigenschaft == "1"){echo " checked="checked"";}>
Oder was hast du gemeint?
Grüße aus Nürnberg
Tobias
Ich danke dir für deinen Hinweis. Diesen habe ich auch schon verarbeitet.
Aber....
Nehmen wir mal den Fall an, dass ich einen Datensatz ausgelesen habe. So dann liegt folgendes Schema vor (Checkboxnr/1oder0):
1/1
2/0
3/1
4/0
....
So nun verändere ich Checkboxnr 3 so: 3/0 und ich betätige den Speicher button der das ganze "submitet"
An diesem Punkt bin ich gescheitert.
Er speichert bei mir immer wieder "1" ab.
Gruss
sunshine
Hi,
An diesem Punkt bin ich gescheitert.
Er speichert bei mir immer wieder "1" ab.
ich glaube, hier wäre ein Codeauszug nicht schlecht. Es wird halt so sein, daß Du die falsche Variable abspeicherst. Wenn der Haken rausgenommen wird, dann wird die Checkbox auch nicht übergeben. Von daher musst Du beim erneuten Speichern alle Checkbox-Werte auf 0 setzen und dann die angeklicken (und damit übergebenen) Checkboxen als 1 abspeichern.
Anders geht es auch mit einem Checkbox-Array:
1 <html>
2 <head>
3 <title>Checkboxen mit PHP auswerten</title>
4 </head>
5
6 <body>
7
8 <form action="checkbox.php">
9 <input type="hidden" name="sent" value="yes">
10 <input type="text" name="auto"><br>
11 <input type="checkbox" name="ausstattung[]" value="Sumpfgaseinspritzung"> Sumpfgaseinspritzung<br>
12 <input type="checkbox" name="ausstattung[]" value="drei Ersatzreifen"> drei Ersatzreifen<br>
13 <input type="checkbox" name="ausstattung[]" value="Schminkspiegel im Kofferraum"> Schminkspiegel im Kofferraum<br>
14 <input type="checkbox" name="ausstattung[]" value="Kniescheibenbelüftung"> Kniescheibenbelüftung<br>
15 <input type="checkbox" name="ausstattung[]" value="James-Bond Paket"> James-Bond Paket<br>
16 <input type="submit">
17 </form>
18
19 <?php
20 $sent =& $HTTP_GET_VARS['sent'];
21 $auto =& $HTTP_GET_VARS['auto'];
22 $ausstattung =& $HTTP_GET_VARS['ausstattung'];
23
24 if ($sent == 'yes') {
25 $ausstattung_text = implode(', ',$ausstattung);
26
27 echo '<h1>Ihr Wunschauto "'.$auto.'":</h1>';
28 echo '<p>Besondere Ausstattung:<br><br>'.$ausstattung_text.'</p>';
29 }
30 ?>
31
32 </body>
33 </html>
In dem Array $ausstattung sind nur diejenigen Merkmale enthalten, die auch angeklickt wurden. Hängt man nämlch "[]" an den Namen einer Checkbox, so verarbeitet PHP alle Checkboxen mit demselben Namen als Array und schreibt die value-Inhalte jeder angeklickten Box hinein.
viele Grüße
Achim Schrepfer
Moin!
So nun verändere ich Checkboxnr 3 so: 3/0 und ich betätige den Speicher button der das ganze "submitet"
An diesem Punkt bin ich gescheitert.
Er speichert bei mir immer wieder "1" ab.
Nein, vermutlich speichert er gar nichts ab. Bedenke: Es werden nur die Werte übermittelt, deren Checkbox angewählt wurde. Wurde die Checkbox nicht angewählt, wird nichts übertragen.
Mit anderen Worten: Wenn du in einer Datenbank UPDATEs der Felder machst, die du vom Formular erhälst, dann reicherst du die Datenbank mit immer mehr "ja"-Informationen an, weil du eben keinerlei "nein"-Informationen vom Formular erhälst.
Meine übliche Vorgehensweise ist, beim Update von Checkboxen erstmal alle vorhandenen Felder auf "nein" zu setzen, und dann die Felder auf "ja" zu setzen, die vom Formular übermittelt wurden.
- Sven Rautenberg
Hallo Sunshine,
Ich habe ein Formular bei dem ich Kunden anlegen kann, in diesem Formular gibt es einige Checkboxen, die die Rechte des neuen Kunden festlegen.
Ich will nun abspeichern ob die Harken gesetzt (=1) oder nicht gesetzt (=0) sind.
Auf Formularelemente greifst Du bei neueren PHP-Versionen mit $_POST['Elementname'] bzw. $_GET['Elementname'] zu, je nachdem welche Übertragungsmethode im <form>-Tag festgelegt ist.
Beachte: Checkboxen tauchen in $_GET, $_POST nur dann auf, wenn sie markiert sind.
Gruß,
Vinzenz