Checkbox unsichtbar machen

Das mit den Checkboxen habe ich auch hin bekommen.
Allerdings habe ich Probleme mit dem Speichern der auserwählten Zahlen.

Die Werte in den "hidden"-Feldern werden richtig ausgegeben.

Wenn ich z.B. 1,2,3 wähle, wird in meiner SQL-Datenbank 1,3,5 aktiviert, bzw. erhält den Wert 1.
das gleiche bei 5,6,7. Dann werden die Zahlen 5,8,9 aktiviert.
Wenn ich keine Zahl auswähle, werden all Zahlen auf 0 gesetzt, so wie es auch sein soll.

Worin kann das liegen ?

mein Form
PHP:
<form action="lotto.php?sz_aendern" method="post" onSubmit="return check_form();">
<?php
$wochentag = $wochentag = $_GET['wochentag'];
$sql = "SELECT * FROM super_zahlen  WHERE wochentag = '$wochentag'  ";
foreach ($pdo->query($sql) as $sz_td) {
?>

<td>
    <input type='checkbox'    name='aktiv[]' value='1' id="sz_<?php echo $sz_td['id'] ?>"/><label for="sz_<?php echo $sz_td['id'] ?>"><?php echo $sz_td['superzahl'] ?></label>
    <input type="hidden" name="aktiv[]" value="0">
    <input type="hidden" class="form-control" name="id[]" value="<?php echo $sz_td['id'] ?>">
    <input type="hidden" class="form-control" name="wochentag[]" value="<?php echo $sz_td['wochentag'] ?>">
    <input type="hidden" class="form-control" name="superzahl[]" value="<?php echo $sz_td['superzahl'] ?>">
    <input type="hidden" class="form-control" name="anzahl[]" value="<?php echo $sz_td['anzahl'] ?>">
    <br />
    <button type="submit" class="btn btn-info btn-sm">speichern</button>
</td>
<?php } ?>
</form>

PHP:
<?php
if(isset($_GET['sz_aendern'])) {
$error = false;
 
for ($i = 0; $i < count($_POST['aktiv']); $i++) {
$id = $_POST['id'][$i];
$wochentag = $_POST['wochentag'][$i];
$superzahl = $_POST['superzahl'][$i];
$aktiv = $_POST['aktiv'][$i];
$anzahl = $_POST['anzahl'][$i];
 
$statement = $pdo->prepare("UPDATE super_zahlen SET aktiv = :aktiv_neu, wochentag = :wochentag_neu, superzahl = :superzahl_neu, anzahl = :anzahl_neu WHERE id = :id");
$statement->execute(array('id' => $id, 'aktiv_neu' => $aktiv, 'wochentag_neu' => $wochentag, 'superzahl_neu' => $superzahl, 'anzahl_neu' => $anzahl));
  }
}
?>
 
Zuletzt bearbeitet:
Ich bekomme es einfach nicht gebacken..
Das Formular speichert zwar, aber der grundsätzlich falsche Zahlen. Zumindest nicht die, wo ich die Checkbox aktiviert habe. Kann das am Namen "aktiv" der Checkbox liegen ? Oder vielleicht, weil ich onSubmit die Checkbox wieder deaktivieren kann ?
 
Meinst du so ??
PHP:
if(isset($_GET['sz_aendern'])) {
$error = false;
 

$id = $_POST['id'][$i];
$wochentag = $_POST['wochentag'][$i];
$superzahl = $_POST['superzahl'][$i];
$aktiv = $_POST['aktiv'][$i];
$anzahl = $_POST['anzahl'][$i];
 for ($i = 0; $i < count($_POST['aktiv']); $i++) {

$statement = $pdo->prepare("UPDATE super_zahlen SET aktiv = :aktiv_neu, wochentag = :wochentag_neu, superzahl = :superzahl_neu, anzahl = :anzahl_neu WHERE id = :id");
$statement->execute(array('id' => $id, 'aktiv_neu' => $aktiv, 'wochentag_neu' => $wochentag, 'superzahl_neu' => $superzahl, 'anzahl_neu' => $anzahl));
  }
}

Gleiche Resultat !
 
Ich denke mal, es liegt daran, dass in $_POST nur die Checkboxen auftauchen, die gecheckt sind. Die, die nicht gecheckt sind, fallen unter den Tisch. D. h. wenn z. B. Checkbox 1 gecheckt ist, CB 2 nicht und CB 3 gecheckt, hast Du in $_POST nur CB 1 und CB 3. Wenn Du dann in der Schleife bei CB 3 bist hat i den Wert 1 statt 2 und Du kommst mit der ganzen Zählung durcheinander.
 
Die Checkboxen haben ja auch ein value-Attribut, dieses kannst Du mit dem Index bei der Generierung des Formulars vorbesetzen und dann bei der Auswertung statt der Variablen i den Wert von $_POST['aktiv'][i] verwenden.
 
Zuletzt bearbeitet:
Zurück