par
AB » 01 sept. 2011, 02:06
Alors ça avance ? On peux faire un truc comme ça :
<?php
//tableau des checkbox
$checkbox = array();
$checkbox['id1'] = 1;
$checkbox['id2'] = 1;
$checkbox['id3'] = 1;
if (isset($_POST['my_check']) && is_array($_POST['my_check']))
{
function Checked (&$value, $key, $tab)
{
$no_check = 0;
$value = array_key_exists($key,$tab)? $value : $no_check;
}
$result_check = $checkbox;
array_walk($result_check, 'Checked', $_POST['my_check']);
foreach ($result_check as $key => $value)
{
echo $key. '=' .$value. '<br />';
}
}
?>
<!--html-->
<form method="post" action="#">
<?php
foreach ($checkbox as $key => $value) echo '<input name="my_check['.$key.']" type="checkbox" value="'.$value.'" />';
?>
<input type="submit" value="ok" />
</form>
Ici toutes les checkbox ont la valeur 1 mais tu pourrais choisir autre chose. De même pour la variable "$no_check" de la fonction "Checked" qui défini la valeur pour les cases non cochées.
Pour faire le tableau de résultat j'ai utilisé "array_walk" associé à une fonction "Checked" mais tu pourrais aussi bien utiliser un classique foreach pour faire l'équivalent :
if (isset($_POST['my_check']) && is_array($_POST['my_check']))
{
$no_check = 0;
$result_check = array();
foreach ($checkbox as $key => $value)
{
$result_check[$key] = array_key_exists($key,$_POST['my_check'])? $value : $no_check;
}
foreach ($result_check as $key => $value)
{
echo $key. '=' .$value. '<br />';
}
}