Checkbox unsichtbar machen

Ich habe jetzt mein Form abgeändert..
PHP:
<input type='checkbox'    name='aktiv[]'   value= '1'/><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'] ?>">

Jetzt gebe ich 1,2,5 ein...

Resultat:
Array
(
[aktiv] => Array
(
[0] => 1
[1] => 0
[2] => 1
[3] => 0
[4] => 0
[5] => 0
[6] => 1
[7] => 0
[8] => 0
[9] => 0
[10] => 0
[11] => 0
[12] => 0
)

[id] => Array
(
[0] => 11
[1] => 12
[2] => 13
 
Nein, kein Missverständnis, mein Formular kannst Du nicht 1-zu-1 übernehmen, es ist nur für Demozwecke.
Die Info, ob eine Checkbox gecheckt ist bzw. ob ein Feld blau werden soll, ist dadurch gegeben, dass das zugehörige Element in $_POST['aktiv'] existiert. Die Info über den Index der Checkbox fehlt dabei zunächst. Deshalb habe ich den Index in das value-Attribut geschrieben.
Sieh dir dieses PHP an:
Code:
var_dump($_POST['aktiv']);
$nr = 10;
$aktiv2 = [];

for ($i = 0; $i < $nr; $i++) {
    $aktiv2[$i] = 0;
}

for ($j = 0; $j < count($_POST['aktiv']); $j++) {
    $i = $_POST['aktiv'][$j];
    $aktiv2[$i] = 1;
}
var_dump($aktiv2);
Liefert diese Ausgabe:
Code:
array (size=5)
  0 => string '0' (length=1)
  1 => string '2' (length=1)
  2 => string '4' (length=1)
  3 => string '6' (length=1)
  4 => string '8' (length=1)

array (size=10)
  0 => int 1
  1 => int 0
  2 => int 1
  3 => int 0
  4 => int 1
  5 => int 0
  6 => int 1
  7 => int 0
  8 => int 1
  9 => int 0
Ich denke, das zweite Array dürfte das sein, was Du brauchst.
Die hidden-Felder habe ich in meinem Testformular gelöscht:
Code:
    <form action="testpost-superzahlen.php" method="post">
        <input type="checkbox" name="aktiv[]" value="0">
        <input type="checkbox" name="aktiv[]" value="1">
        <input type="checkbox" name="aktiv[]" value="2">
        <input type="checkbox" name="aktiv[]" value="3">
        <input type="checkbox" name="aktiv[]" value="4">
        <input type="checkbox" name="aktiv[]" value="5">
        <input type="checkbox" name="aktiv[]" value="6">
        <input type="checkbox" name="aktiv[]" value="7">
        <input type="checkbox" name="aktiv[]" value="8">
        <input type="checkbox" name="aktiv[]" value="9">
        <input type="submit" name="submit">
    </form>
 
Versuche dieses PHP:
Code:
$nr = count($_POST['wochentag']);
$aktiv2 = [];

for ($i = 0; $i < $nr; $i++) {
    $aktiv2[$i] = 0;
}

for ($j = 0; $j < count($_POST['aktiv']); $j++) {
    $i = $_POST['aktiv'][$j];
    $aktiv2[$i] = 1;
}

var_dump($aktiv2);

if (isset($_GET['sz_aendern'])) {
    $error = false;

    for ($i = 0; $i < $nr; $i++) {
        $id = $_POST['id'][$i];
        $wochentag = $_POST['wochentag'][$i];
        $superzahl = $_POST['superzahl'][$i];
        $aktiv = $aktiv2[$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));
    }
}
(jetzt ungetestet). Und in dem Formulat musst Du die hidden-Felder für "aktiv" weg lassen.
 
Meinst du das Form so ?

PHP:
<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" 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'] ?>">
    <input type="checkbox" name="aktiv[]" value="0">
        <input type="checkbox" name="aktiv[]" value="1">
        <input type="checkbox" name="aktiv[]" value="2">
        <input type="checkbox" name="aktiv[]" value="3">
        <input type="checkbox" name="aktiv[]" value="4">
        <input type="checkbox" name="aktiv[]" value="5">
        <input type="checkbox" name="aktiv[]" value="6">
        <input type="checkbox" name="aktiv[]" value="7">
        <input type="checkbox" name="aktiv[]" value="8">
        <input type="checkbox" name="aktiv[]" value="9">
 
Nein, Du hattest da ja eine Schleife, demnach müsste es so aussehen:
Code:
<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'  ";
$i = 0;
foreach ($pdo->query($sql) as $sz_td) {
?>

<td>
    <input type='checkbox'    name='aktiv[]' value='<?php echo $i; ?>' id="sz_<?php echo $sz_td['id'] ?>"/><label for="sz_<?php echo $sz_td['id'] ?>"><?php echo $sz_td['superzahl'] ?></label>
    <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
  $i++;
} ?>
</form>
 
Na super... Jetzt funktioniert es einwandfrei... FRRREEEEUUUUUU

Vielen Dank an alle und noch erholsame Feiertage und vor allem GESUNDHEIT
 
Zurück