# Checkbox in Datenbank speichern



## mccoy (29. November 2004)

Hallo Forum!
Ich habe ein kleines Verständnis Problem. Ich beschäftige mich seit ca. 1 Woche mit PHP und SQL Datenbanken. Nun möchte ich ein Formular erstellen, dass Checkboxen hat und diese je nach Wert der checkbox einen Wert (0 oder 1)in einer Tabelle abspeichert. 

Zum Bsp:

Ich habe eine Frage in "Sind Sie dafür zuständig?" 
Im Formular besteht die Möglichkeit per Checkbox mit "ja" oder "nein" zu antworten


```
<input type="checkbox" name="zustaendig[0]" value="checkbox">Ja
<input type="checkbox" name="zustaendig[1]" value="checkbox">Nein
```
Nun zu meinem Verständnisproblem: Wenn ich nun einen Tabelle habe, sagen wir mal, unter anderem mit der Spalte "zustaendig" sollen dort, eben je nach aktivieren der Checkbox, die Werte "ja" oder "nein" gespeichert werden. Kann auch "0" für "nein" oder "1" für "Ja" sein.

Wie kann ich das per PHP realiseren? Geht das ganze mit einer if- schleife ?

Also z.B. so: Wenn checkbox $zustaendig[0] DANN baue Verbindung zur Datenbank auf und speichere (update) die Table bei Spalte "zustaendig" mit dem Wert "0", ANSONSTEN mit Wert "1"

Ansonsten habe ich mir überlegt, dass ich 2 Spalten anlege, eine mit "zustaendig_ja" und eine mit "zustaendig_nein" und je nach Wertübergabe der Checkbox (bsp: "$zustaendig_1" und "$zustaendig_2" )diese dann, per Update Befehl, jeweils in die entsprechende Spalte speichere. Was aber die Datenbank ünnötig aufblasen würde und daher nicht meine bevorzugte Lösung wäre.

Sorry, dass ich noch keinen PHP Quellcode habe, aber ich bin momentan noch in der Planungsphase und möchte demnach auch erst meine Tabelle entsprechend anlegen.

Wenn ihr mir helfen könntet wäre super !

Gruß
McCoy


----------



## Lukasz (29. November 2004)

Ja so klappt es ja auch nicht. Du solltest erst HTML richtig lernen. Aber Egal der Fehler liegt hier

<input type="checkbox" name="zustaendig[0]" value="checkbox">

so ist das richtig:

<input type="checkbox" name="cehckbox" value="0">Ja
<input type="checkbox" name="cehckbox" value="1">Nein

und dann nach dem absenden


```
mysql_query("INSERT INTO tabellenname SET (spaltename) VALUES ('$cehckbox')");
```

Gruss


----------



## mccoy (29. November 2004)

Hi Lukasz

Jo, du hast recht. Da hab ich was mit dern Arrays durcheinander gebracht. VALUE ist der Wert der Checkbox! 

Okay, dein PHP Code ist simpel. Demnach schreibt er mir dann eine "1" bzw. "0" in die Spalte der Tabele?

Wenn ja, ist es ja einfacher als ich dachte! 

Danke schonmal !


----------



## mccoy (30. November 2004)

Hi

Ich habe es jetzt mal probiert zu realisieren. Leider  klappt das mit der Checkbox nicht.
Sobald ich die Variable "zustaendig" (was ja die Checkbox" ist) weglasse, klappt  die Datenübernahme in die DB, sobald ich die wieder reinnehme, geht es nicht mehr. Er bringt aber keine Fehlermeldung, sondern er schreibt einfach keine Daten in die DB. Es scheint so, als landen diese Eingaben im Nirvana.

Kann mir jemand helfen ?

Danke im Vorraus!

Hier die Codes:


```
(...)  <input type="checkbox" name="zustaendig" value="1">Ja 
  	  <input type="checkbox" name="zustaendig" value="2"> Nein  (...)
```



```
<?php  
$tabellenname="kundenbefragung";

//Daten aus Formular  an die Datenbank übergeben
$sql="INSERT INTO $tabellenname (kdnr, name, asp, email, zustaendig) values ('$kdnr', '$name', '$asp', '$email', '$zustaendig')";

//Verbindung zur DB
$link= mysql_connect("localhost", "user" , "passw"); 
mysql_select_db("umfrage", $link);
mysql_query($sql, $link);  

//Ausgabe bei Erfolg
echo "<h1>Ihre Angaben wurden in die Datenbank aufgenommen</h1><br>";
echo "<a href=\"formular.htm\">Zurück zum Formular</a>";
?>
```


----------



## wal (30. November 2004)

Hi mccoy,

also ich denke du solltest dafür keine Checkboxen, sondern Radiobuttons verwenden. Grund: Entweder gibt es ja oder nein und nicht beides.

Anbei mal ein Stück einer Idee von einer meiner Umfragen:

Html:

```
...
        <tr> 
        <tr> 
            <td class="font_owner">Trifft es zu?</td>
        </tr>
        <tr> 
          <td class="t_content"> 
            <table width="100%" border="0" cellspacing="5" cellpadding="0">
              <tr>
			    <blockquote> 
                <td width="100%" class="blue_bold"><p><input name="Zeitraum" type="radio" checked value="1voll">
                        Trifft voll und ganz zu</p>
                                                   <p><input name="Zeitraum" type="radio" value="1meistens">
                        Trifft meistens zu</p>
                                                   <p><input name="Zeitraum" type="radio" value="1weniger">
                        Trifft weniger zu</p>
                                                   <p><input name="Zeitraum" type="radio" value="1selten">
                        Trifft selten zu</p>
                      <br>
			    </td>
				</blockquote>
              </tr>
            </table>
          </td>
        </tr>
```

nun der Code, der den Wert in die DB schreibt:

PHP

```
...
	// Umfragedaten speichern
	function saveData() {
		include 'c:\include_php\inc.mysql.php';

		$Zeitraum = $_REQUEST['Zeitraum'];

                                mysql_select_db("umfrage", $dbcnx);

        	$sql = "INSERT INTO Umfrage SET
		                 	UmfrageDate=CURDATE(),
		                 	Zeitraum='$Zeitraum'";
						 
        	if (@mysql_query($sql)){
				$back = 1;
			} else {
				$back = 2;
			}
				
		}
```

Mit back werte ich dann das Ergebnis aus und liefere eine entsprechende Antwort zurück. Bereits teilgenommen, Datenbank nicht erreichber etc.

Ich habe zwar ne Menge nun rausgelöscht, denke aber, dass das Prinzip klar geworden ist.

Ich hoffe dir geholfen zu haben.


----------



## mccoy (30. November 2004)

Hi wal,

du hast vollkommen recht, mit Radiobuttons ist es viel sinnvoller. 

Ich habe anhand deines Beispiels nun einen Wert des Radiobuttons in die DB übernehmen können. Aber sobald es mehrere Radiobuttons sind, deren Werte übernommen werden sollen, muss ich ja mit folgender Struktur arbeiten:

$sql="INSERT INTO [tabelle] (Spalte1,Splate2 (...)) values ('$Var1',$Var2, (...))";

Da funktioniert es wieder nicht ! Bekomme weder eine Fehlermeldung, noch landen die Daten in der DB. 

Ich bin langsam am verzeifeln....


----------



## mccoy (30. November 2004)

Hi wal,

konnte es lösen,,, danke!

ich glaube jetzt habe ich das Prinzip verstanden.


----------

