> (in_array($_POST['Kleur'], $kleuren))
Het lijkt mij geen goede programmeergewoonte om direct na het POSTen weer het formulier te tonen.
is het nu trouwens $_POST['kleuren'] of $_POST['Kleur']?
Anyhow, dit is niet alle code voor de checkboxen.
Wellicht doe je er ook verstandig aan om de kleuren een volgnummer/index te geven? Dan kun je op deze key controleren, dat werkt doorgaans beter.
> (in_array($_POST['Kleur'], $kleuren))
Het lijkt mij geen goede programmeergewoonte om direct na het POSTen weer het formulier te tonen.
is het nu trouwens $_POST['kleuren'] of $_POST['Kleur']?
Anyhow, dit is niet alle code voor de checkboxen.
Wellicht doe je er ook verstandig aan om de kleuren een volgnummer/index te geven? Dan kun je op deze key controleren, dat werkt doorgaans beter.
Het was kleuren, dus die sowieso aangepast. Alleen ik vind het gek dat als ik zeg als kleuren bestaat en zit in array dan echo check tekst, maar waarom werkt dat niet dan?
Ik denk dat het handig is om de (toegestane) waarden op één plek te definiëren middels een array, en dit dan te gebruiken om:
- de formulierelementen op te bouwen bij:
* het toevoegen van informatie (leeg formulier)
* het wijzigen van informatie (vooringevuld formulier)
- geldige/toegestane waarde te valideren
Checkboxen komen alleen in de POST array voor als ze daadwerkelijk ge-checked zijn door de gebruiker. Je zult dus moeten controleren of ze "bestaan" of niet. Hier een werkend voorbeeldje
<?php
// array met drie checkboxen initialiseren
$optieCheckboxen = array(
1 => array(
'label' => 'Dit is optie 1',
'checked' => false,
),
2 => array(
'label' => 'Dit is optie 2',
'checked' => false,
),
5 => array(
'label' => 'Dit is optie 3',
'checked' => true,
),
);
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
foreach($optieCheckboxen as $id => $checkbox)
{
// checkboxen komen enkel in de POST array als ze "aan" staan. Als ze dus niet aanwezig zijn betekent het dat de checkbox niet ge-checked was
$optieCheckboxen[$id]['checked'] = false;
// nu zetten we de checkbox weer op aan als ze wel in de POST array aanwezig zijn. de waarde is verder niet belangrijk. Het is aan of uit!
if(isset($_POST['options'][$id])) {
$optieCheckboxen[$id]['checked'] = true;
}
}
// zo ziet de post array er uit...
echo '<pre>' . print_r($_POST, TRUE) . '</pre>';
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>een titel</title>
</head>
<body>
<form action="" method="post">
<?php foreach ($optieCheckboxen as $id => $checkbox) : ?>
<div class="form-row">
<label>
<input type="checkbox" name="options[<?php echo $id; ?>]"<?php if($checkbox['checked']) echo ' checked'; ?> />
<?php echo $checkbox['label']; ?>
</label>
</div>
<?php endforeach; ?>
<button type="submit">Verzenden</button>
</form>
</body>
</html>