checkboxen abfragen

anfeanger83

Mitglied
Hallo ich habe folgendes problem:

Ich habe Checkboxen, die eine fortlaufende ID zugewiesen bekommen ($sid). Frage ich diese Checkboxen nun ab bekomme ich als Rückgabewert immer nur den höchsten Wert.
Ich möchte aber wenn ich z.B. Checkbox1, Checkbox3 und Checkbox4 angeklickt haben die IDs von allen drei haben nicht nur von 4.

Das sind die 4 Checkboxen
<input type='checkbox' name='check' value='$sid'>
<input type='checkbox' name='check' value='$sid'>
<input type='checkbox' name='check' value='$sid'>
<input type='checkbox' name='check' value='$sid'>

die Postanweisung
<form action = "indexphp" method = "POST">
<input type="submit" value="test" name="submit">

Die Abfrage der Boxen lautet wie folgt:
if (isset($_POST["check"])) echo $_POST["check"];
else
echo "Checkbox nicht aktiv";
 
Moin,

notiere nach dem Namen der Checkbox eckige Klammern, dann werden alle ausgewählten übermittelt.
Code:
<input type='checkbox' name='check[]' value='$sid'>

$_POST["check"] steht dann als Array zur Verfügung.
 
Wenn ich das so mache

<input type='checkbox' name='check[]' value='$sid'>

if (isset($_POST["check"])) echo $_POST["check"];


bekomme ich als Wert array zurück aber kein Wert :(. Die Frage die sich dann anschließt wenn ich ein array mit den Werten habe wie kann ich den einzelnen Werten aus dem array eine Variable zuweisen ?

Danke schon mal im vorraus
 
Immer wenn du einen Array hast und nicht weiß wie dessen Inhalt aussieht, verwende den Code um dir das komplette Array anzuzeigen:

PHP:
echo "<pre>";
print_r($_POST['check']);
echo "</pre>";

Experimentiere etwas rum, du wirst dann schon merken wie das funktioniert :)

Gruß Thomas
 
So hab es nun geschafft, ich kann mir die Daten aus dem array anzeigen lassen. Wie kann ich die Daten aus meinem array zeilenweise in eine Datenbank eintragen ?

wenn ich es so probiere:

$eintrag = "INSERT INTO test (id) VALUES ('$_POST['check$sid']')";
$eintragen = mysql_query($eintrag);

bekomme ich folgende meldung

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
 
Hi,

bekomme ich als Wert array zurück aber kein Wert :(. Die Frage die sich dann anschließt wenn ich ein array mit den Werten habe wie kann ich den einzelnen Werten aus dem array eine Variable zuweisen ?

So ein Array möchte man in der Regel mit einer foreach-Schleife durchlaufen. Solltest Du die Werte einfach durch z.B. Kommata getrennt in eine Variable speichern wollen, ist [phpf]implode[/phpf] Dein Freund.

LG
 
Ah super ich hab es nun fast soweit


foreach( $_POST as $wert ) {
$eintrag = "INSERT INTO test(id) VALUES ('$wert')";
$eintragen = mysql_query($eintrag);

echo $wert;
}


so schreibt er mir das schön in die Datenbank wie ich es haben will nur nimmt er auch den value des submit buttons mit auf in die Datenbank, liegt wohl an $_POST. Kann ich das irgendwie umgehen das der mir die daten des buttons da nicht auch mit reinhaut ?
 
Hi,

Du solltest nicht pauschal alle Postwerte in die Datenbank hauen und schon gar nicht ungeprüft. Formulare können manipuliert werden. Wenn Du nur die Inhalte der Checkboxen eintragen willst, dann mach auch eine Schleife über $_POST['checkbox'] und überprüfe jeweils den Wert auf Gültigkeit, zumindest ein [phpf]intval[/phpf] (bei ganzzahligen IDs) darf da nicht fehlen.

LG
 
ich bins wieder ich komme mit meinem Script immer weiter nun habe ich wieder ein Problem wo ich keine Lösung finde:

ich habe eine bestell Tabelle die mir wo ich mir die Daten von $uid hole.
Dann habe ich die $dbuseid und die $dbautoid von dem aktullen User.

$query = "SELECT * FROM bestellung WHERE useid= '$uid'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$dbuseid = $row['useid'];
$dbautoid = $row['auto'];
}

Das $s enthält die checkbox iDs der Autos die, wenn ich ein Auto ausgeliehen habe schon in der Datenbank steht z.b. $uid 2 hat die Autos mit den IDs $s 1 und $s2 ausgeliehen. Nun möchte ich die Daten mit der Datenbank abgleichen so , dass $uid2 keine möglichkeit mehr hat die Autos $s1 und $s2 zu mieten da er diese ja schon gemietet hat. Wählt er nun aber das Auto $s3 aus sollen die IDs in die Datenbank aufgenommen werden.

Die Abfrage der schon geliehenen Auto funktioniert leider nicht, die Auto IDs werden mehrmals in die Datenbank geschrieben. Kann mir jemand meinen Fehler sagen ?


foreach( $_POST as $s ) {
if($uid == $dbuseid && $s== $dbautoid )
{
echo "fehler eintrag bereits vorhanden";
}
else
{
if ($s=="los") {}
else
{
$eintrag = "INSERT INTO bestellung (auto, useid) VALUES ('$s', '$uid')";
$eintragen = mysql_query($eintrag);
}
}
 
Zurück