PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : checkbox in datenbank abspeichern wie?



SUNZ
20.07.2009, 09:22
Hallo

ich will das mein fomular eine checkbox hat. die kann natürlich ausgewählt werden usw. wenn man auf senden klickt dann wird die auswahl in eine datenbank abgespeichert.

wie macht man das?

mfg

Barbers
20.07.2009, 09:28
http://aktuell.de.selfhtml.org/artikel/php/checkboxen/
vielleicht hilft dir das ;)

SUNZ
20.07.2009, 09:32
das sagt mir jetzt nicht viel.

da steht nur wie die checkbox aufgebaut ist. aber nicht wie die auswahl gesendet wird.

kann einer ein kleines beispiel schreiben

Barbers
20.07.2009, 09:39
ähm da steht doch die auswertung ...
es wird quasi wie ein normaler input ausgewertet, hat aber dne vorteil das nur vorgegebene werte eintreten können ...


<?php
$ausstattung_text = implode(', ',$ausstattung); //packt ein , zwischen die antworten
echo '<p>Besondere Ausstattung:<br><br>'.$ausstattung_text.'</p>'; //gibt den spaß aus
?>

Ich find das is sehr einfach

SUNZ
20.07.2009, 09:53
Also ich habe was gefunden mit dem ich besser zurecht komme.


<html>
<head><title>Online PHP-Kurs</title></head>
<body>
<h1>Formulare auswerten</h1>
<?
if (!empty($name)) { // Formularauswerung
echo "Sie haben folgende Nachricht gesendet:<P>";
echo "<B>Ihr Name:</B> $name<BR>";
echo "<B>Variable:</B> $var2<BR>";
echo "<FORM method=post action=f3.php>";
echo "<INPUT type=submit value=\"Neue Nachricht senden?\">";
echo "</FORM>";
}
else
{
?>
<H3>Namensabfrage</h3>
<FORM method=get action=f3.php>
Mein Name:
<INPUT type=text name=name size=50><br>
<?
// Nach Anwahl eines der 3 Radiobutton hat die Variable $var2
// beim nächsten Formularaufruf im if {} Teil den Wert "php", "asp" oder
// "perl"
?>
PHP <INPUT type=radio name=var2 value=php>
ASP <INPUT type=radio name=var2 value=asp>
PERL <INPUT type=radio name=var2 value=perl>
<br>
Windows <INPUT type=radio name=bet value=php>
Linux <INPUT type=radio name=bet value=asp>
<br>
<INPUT type=submit value="Neue Nachricht senden?">
</FORM>
<?
}
?>
</body>
</html>

Ist verständlicher für mich. Jetzt ist aber die frage wie ich das was ich ausgewählt habe in eine Datenbank abspeicher.

VeN0m
20.07.2009, 11:28
Also ganz einfach...
Du kannst jede Checkbox theoretisch auch als Text-Input darstellen. Die Checkbox / Radiobox / Select-Box hat jedoch den Vorteil, dass - wie schon gesagt - die Values (die Werte) vorselektiert sind und nicht so einfach verändert werden können.

Nun, wie speichert man z.B. einen normalen Text-Input in die Datenbank?
Man schaut sich an, mit welcher "method" das Formular übermittelt wird. Zwei stehen zur Auswahl: GET und POST, also entwededer per URL (GET) oder POST (unsichtbar "posten").
Je nachdem stehen die Arrays $_GET und $_POST zur Auswahl, die man auswerten kann.

Aber wie?
Beispiel:



<form action="form.php" method="post">
<input type="text" name="foo">
<input type="submit" value="Speicher mich!">
</form>


Der Name des Text-Inputs heißt "foo" und die method des Formulars "post".



$blubb = $_POST['foo'];


enthielte also den Wert des Textfeldes "foo", sofern etwas eingegeben wurde ;).

Selbiges bei Checkboxen:



<form action="form.php" method="post">
<input type="checkbox" value="1" name="agb">
<input type="submit" value="Speicher mich!">
</form>


Hier hat sich nur verändert, dass das Input nun einen value (also einen Wert, 1) hat und der type "checkbox" ist. Den Namen habe ich in "agb" geändert, da sowas z.B. als "Bestätigen Sie, unsere AGB gelesen zu haben" genutzt werden kann.

Ein komplettes Beispielformular. Ich mache sowas grundsätzlich per print in PHP.
Ist nur ein Beispiel, ich weiß nicht, ob es zu 100% geht ;).



<?php

if($_SERVER['REQUEST_METHOD'] != "POST") {

print "

<form action='".htmlentities($_SERVER['PHP_SELF'])."' method='post'>

<label for='user'>Username: </label><input type='text' name='username'><br>
<label for='pw'>Passwort: </label><input type='text' name='pw'><br>
<label for='email'>Email: </label><input type='text' name='email'><br>
<label for='hidden'>Hier markieren, wenn die Email nicht gezeigt werden soll!: </label><input type='checkbox' name='emailhide' value='1'><br><br>

<input type='submit' value='Registrieren'>

</form>

";

} else {

$user = $_POST['user'];
$password = md5($_POST['password']);
$email = $_POST['email'];
$emailhide = ($_POST['emailhide'] ? $_POST['emailhide'] : "0");

if(!$user OR !$password OR !$email OR !$emailhide) {

print "Sorry, bitte f&uuml;lle alle Felder aus!" and exit;

}

@include("mysql_connect.php");

$query = "INSERT INTO mytable (user,password,email,emailhide) VALUES ('$user','$password','$email','$emailhide');";
$insert = mysql_query($query);

if($insert) {

print "Registrierung war erfolgreich" and exit;

} else {

print "Upps... Da ist wohl ein Fehler aufgetreten o0";

}

}

?>


Sollte man sich erschließen können, was das Script tut. Ist das, was Du suchst ;).

ironud
21.07.2009, 05:09
Speicher halt einfach die checkbox als true oder false in die db ab.
Einfacher gehts ja wohl nich ;)

zum abspeichern einfach zur db connecten und einfügen


insert into tabelle ('show_mail') values ('$checkbox');

oder halt dann update statt insert wenns den eintrag schon gibt.

SUNZ
21.07.2009, 08:21
@Power-Sven: also codes funktionieren nicht

ich poste mal meinen quelltext. evtl. wird es klar was ich brauche

Es ist ein Fomular was das eingegebene in die Datenbank abspeichert.

zu erst _mysql.php (hier stehen die verbindungsdaten drinne)


<?
$dbname="sz_nutzeruebersicht";
$dbhost="localhost";
$dbuser="root";
$dbpass="";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);
?>


Das Fomular formular.html (hier wird alles eingegeben was der user braucht)



<html>
<head>
<title>Fomular</title>
<link href="_css.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.Stil1 {font-size: 19px}
-->
</style>
</head>
<body>
<p>&nbsp;</p>
<!--Script für die Aktivierung der Felder-->
<script>
function checkFields()
{
if( document.getElementById('Nachname').value.length > 3 && document.getElementById('Vorname').value.length > 3 && document.getElementById('Abteilung').value.length > 3 )
{
document.getElementById('Ort').disabled = false;
document.getElementById('Firma').disabled = false;
document.getElementById('tel').disabled = false;
document.getElementById('KST').disabled = false;
document.getElementById('Zimmer').disabled = false;
document.getElementById('Fax').disabled = false;
document.getElementById('Zusatz').disabled = false;
}
}
</script>
<!--Ende Script-->

<form method="post" action="test.php">

<p>
<!-- Eerste tabelle-->
</p>
<table width="389" border="0">
<tr>
<td width="126"><span class="Stil1">Nutzerblatt f&uuml;r: </span></td>
<td width="28"><label>neu</label></td>
<td width="20"><INPUT type=radio name=var2 value=neu> </td>
<td width="41">&auml;ndern</td>
<td width="20"><INPUT type=radio name=var2 value=ändern> </td>
<td width="44">l&ouml;schen</td>
<td width="80"><INPUT type=radio name=var2 value=löschen> </td>
</tr>
</table>
<p>&nbsp;</p>
<table width="797" border="0">
<tr>
<td width="93">Vorname:</td>
<td width="147"><input type="text" id="Vorname" name="Vorname" onKeyUp="checkFields()"></td>
<td width="10">&nbsp;</td>
<td width="139">Nachname:</td>
<td width="144"><input type="text" id="Nachname" name="Nachname" onKeyUp="checkFields()"></td>
<td width="9">&nbsp;</td>
<td width="77">Abteilung:</td>
<td width="144"><input type="text" id="Abteilung" name="Abteilung" onKeyUp="checkFields()"></td>
</tr>
<tr>
<td>Ort: </td>
<td><label>
<input type="text" id="Ort" name="Ort" disabled>
</label></td>
<td>&nbsp;</td>
<td>Firma:</td>
<td><input type="text" id="Firma" name="Firma" disabled></td>
<td>&nbsp;</td>
<td>Telefon-Nr.:</td>
<td><input type="text" id="tel" name="tel" disabled></td>
</tr>
<tr>
<td>KST:</td>
<td><input type="text" id="KST" name="KST" disabled></td>
<td>&nbsp;</td>
<td>Geb&auml;ude/Zimmer-NR:</td>
<td><input type="text" id="Zimmer" name="Zimmer" disabled></td>
<td>&nbsp;</td>
<td>Fax-Nr.:</td>
<td><input type="text" id="Fax" name="Fax" disabled></td>
</tr>
</table>

<p>&nbsp;</p>
<!--/*Zweite tabelle (Benötigte Anwendungen)*/-->
<table width="585" border="0,11">
<tr>
<td width="179" height="22">Ben&ouml;tigte Anwendungen: </td>
<td width="46"><div align="center">Internet</div></td>
<td width="66"><div align="center">Outlook</div></td>
<td width="51"><div align="center">Office</div></td>
<td width="164"><div align="center">AS400 (Client Express) </div></td>
<td width="53"><div align="center">SAP</div></td>
</tr>
<tr>
<td height="41">Ben&ouml;tigt:</td>
<td><div align="center">
<input name="internet" type="checkbox" id="internet" value="checkbox" />
</div>
</label></td>
<td><div align="center">
<input name="outlook" type="checkbox" id="outlook" value="checkbox" />
</div></td>
<td><div align="center">
<input name="office" type="checkbox" id="office" value="checkbox" />
</div></td>
<td><div align="center">
<input name="AS400" type="checkbox" id="AS400" value="checkbox" />
</div></td>
<td><div align="center">
<input name="SAP" type="checkbox" id="SAP" value="checkbox" />
</div></td>
</tr>
</table>
<table width="602" border="0">
<tr>
<td width="305" height="24">zus&auml;tzliche Software, z.B. Dialog, Anzeigesystem: </td>
<td width="287"><label>
<input type="text" disabled id="Zusatz" name="Zusatz" size="45">
</label></td>
</tr>
</table>
<p><br />
<table width="200" border="0">
<tr>
<td>Welcher Drucker wird Ben&ouml;tigt? </td>
</tr>
<tr>
<td><textarea name="auswahl" cols="30" rows="5" id="auswahl"></textarea></td>
</tr>
</table>
<p>


<p>
<label>
<input type="submit" name="absenden" value="Senden" />
</label>
<p>&nbsp;</p>
</form>
</body>
</html>


wenn die daten eingegeben werden und auf den button senden geklickt wird kommen sie hier an die es dan letzendlich abspeichern.
test.php


<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("sz_nutzeruebersicht", $con);
$sql="INSERT INTO sz_nutzeruebersicht (Vorname, Nachname, Abteilung, Ort, Firma, Nummer, KST, Zimmer, Fax, Zusatz)
VALUES
('$_POST[Vorname]','$_POST[Nachname]','$_POST[Abteilung]','$_POST[Ort]','$_POST[Firma]','$_POST[tel]','$_POST[KST]','$_POST[Zimmer]','$_POST[Fax]','$_POST[Zusatz]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "Nutzerübersicht wurde Gespeichert und Bearbeitet";
mysql_close($con)
?>


so wie man sieht ist in fomular.html mehrere checkboxen und ein paar radio button. wie kann ich nun in test.php schreiben das er es in die db abspeichert?


P.S.: Nicht iritieren lassen das im fomular.html ein jvascript drinne ist. dieser javascript schaltet die textfelder frei

VeN0m
21.07.2009, 09:47
Ist doch egal, ob mein Code funktioniert oder nicht... Das war ein Beispiel. Besser erklären kann ich das echt nicht mehr.



<input name="AS400" type="checkbox" id="AS400" value="checkbox" />


wird mit



$_POST['AS400'];


angesprochen. Was ist denn daran so schwer?

Bei den Radioboxen gilt das selbe. Du kannst sie mit


$_POST['var2'];

ansprechen und den value der markierten Box bekommen.
Das einfügen in die Datenbank sollte dann ganz einfach sein.

SUNZ
21.07.2009, 10:22
Also müsste ich in mein test.php so schreiben (damit es reingeschrieben wird)


<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("sz_nutzeruebersicht", $con);
$sql="INSERT INTO sz_nutzeruebersicht (Vorname, Nachname, Abteilung, Ort, Firma, Nummer, KST, Zimmer, Fax, Zusatz)
VALUES
('$_POST[Vorname]','$_POST[Nachname]','$_POST[Abteilung]','$_POST[Ort]','$_POST[Firma]',
'$_POST[tel]','$_POST[KST]','$_POST[Zimmer]','$_POST[Fax]',
'$_POST[Zusatz]','$_POST[AS400]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "Nutzerübersicht wurde Gespeichert und Bearbeitet";
mysql_close($con)
?>

Ich teste es gleich aber ich bezweifel das dass so funktioniert

wie ich es mir gedacht habe.
hier der fehler der mit bei test.php angezeigt wird

"Parse error.parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\Program Files\xampp\htdocs\xampp\sz\Fomular\test.php on line 12"

was tun den line 12 ist das hier


('$_POST[Vorname]','$_POST[Nachname]','$_POST[Abteilung]','$_POST[Ort]','$_POST[Firma]',
'$_POST[tel]','$_POST[KST]','$_POST[Zimmer]','$_POST[Fax]',
'$_POST[Zusatz]','$_POST[AS400]')";

fehler gefunden und behoben Großen dank an euch.

Werde bestimmt noch weitere fragen haben also nicht closen