Datenbank updaten mit Checkboxen

Ronja

Räubertochter
ID: 51429
L
4 Mai 2006
1.010
33
Hallo,

ich habe folgendes Problem. Datumsangaben (Tage) sollen auf einer Seite per Checkboxen geupdatet werden. Beispiel: von den Tagen 1-31 sollen die Tage 5,6 und 7 angehakelt und damit ausgewählt werden und die Tage 14 bis 20 sollen weggehakelt und damit deaktiviert werden. (Die in der DB vorhandenen Angaben werden vorher ausgelesen und in die Seite eingelesen). Ein Klick auf Abschicken soll die neuen Daten in die DB übertragen.

1. Problem: Bei Checkboxen werden ja nur die übertragen, die "checked" sind. Ich muß ja aber nicht nur neu ausgewählte Häckchen eintragen, sondern auch ausgehackelte austragen. Wie kann ich das erreichen?

2. Problem: Ich schaffe es nicht, die Daten in die Datenbank zu updaten. Bitte nicht schimpfen, ich bin Newbie in Thema php und bin mir sicher, das mein Code ziemlich verknödelt ist.

PHP:
<?
error_reporting(E_ALL); 
include("setup.ini.php");

$db = @mysql_connect($host,$dbuser,$pass)
or
die($dbfehler);
@mysql_select_db($dbase, $db)
or
die($dbfehler2);

while(list($name,$belegt) = each($HTTP_POST_VARS)) {
    echo "<p>$name: $belegt</p>";
}

$aendern = "UPDATE plan set belegt = 'x' WHERE id ='$name'";
$update = mysql_query($aendern);
if (FALSE !== $update){
echo 'upgedated';
}
else
{
echo 'nicht upgedated';
}

?>

Mit der while-Schleife wollte ich erst mal sehen, ob und was überhaupt auf meiner Seite ankommt.

Das sieht so aus:
2007017: check
2007018: check
2007019: check
2007020: check
2007021: check
send: abschicken
upgedated

z.b. 2007017 ist in der DB gleichzeitig meine Spalte "id", check bedeutet, angehakelt (nur hier wichtig), belegt in der DB ist entweder "x" oder "no".

Es wird also alles so auf meine neue Seite übertragen, wie ich es brauche. Aber, es steht zwar upgedated drunter, passieren tut aber nichts.

Nachdem ich nun 2 Tage Google genervt habe und keine wirkliche Lösung gefunden habe, bitte ich Euch nun um Hilfe!

Herzlichen Dank, Ronja
 
Hallo

Ich hätte das spontan so gemacht

[...]
<input type="checkbox" name="tag5" value="5"> 5
<input type="checkbox" name="tag6" value="6"> 6
<input type="checkbox" name="tag7" value="7"> 7
[...]

<?php
$tage = [...] $tag5.$tag6.$tag7 [...]
$sql = "UPDATE tabelle SET tage = '$tage' WHERE bedingung = 'true'";
[...]
?>

Hoffe ich konnte helfen! Ist zwar sehr schlecht gelöst, sollte aber funktionieren :ugly:

MfG, Andy
 
Du must einen array übergeben.

<input type="checkbox" name="tag[]" value="1">1</input>
<input type="checkbox" name="tag[]" value="2">2</input>
<input type="checkbox" name="tag[]" value="3">3</input>
<input type="checkbox" name="tag[]" value="4">4</input>
...

Und den Array gehst du miteiner foreach schleife durch dann hast du deinen Tage.