Enregistrement checkbox dans Array

Enregistrement checkbox dans Array - PHP - Programmation

Marsh Posté le 25-07-2014 à 22:32:13    

Bonjour,
 
Je sais que cette question est souvent posée mais j'ai beau tester tout ce que je trouve sur les forums, je n'arrive pas à obtenir ce que je veux...
 
J'ai un tableau de disponibilité avec en ligne les périodes (matin, Apres-midi, nuit) et en colonnes les jours de la semaine. Pour simplifier, le code ci-dessous représente qu'une ligne et 3 colonnes.
 
Voici mon formulaire, inclus dans des balises CODE HTML pour pouvoir être stocké dans une variable.

Code :
  1. $sForm = <<<CODE_HTML
  2. <table>
  3.   <tr>
  4.     <td>Matin</td>
  5.     <td><input name="matin[]" value="1" type="checkbox" /></td>
  6.     <td><input name="matin[]" value="2" type="checkbox" /></td>
  7.     <td><input name="matin[]" value="3" type="checkbox" /></td>
  8.   </tr>
  9. </table>
  10. CODE_HTML;


 
En ce qui concerne le code PHP, j'arrive à obtenir un array avec les valeurs cochées mais ce que j'aimerai c'est que mon array contienne 0 si la case n'est pas coché et 1 si elle l'est. Je vous met quand meme mon code.

Code :
  1. for ($i=0; $i<3; $i++)
  2. {
  3.     if(!empty ($_POST['matin'][$i]))
  4.     {
  5.        $matin[$i]=1; //coché
  6.     }
  7.     else
  8.     {
  9.        $matin[$i]=0; //pas coché
  10.     }
  11. }


 
Par exemple, si Lundi et Mercredi sont cochés, j'aimerai que $matin[0]==1, $matin[1]==0 et $matin[2]==1 pour ensuite stocker $matin dans ma BDD.
 
J'espère que mes explications sont claires!

Reply

Marsh Posté le 25-07-2014 à 22:32:13   

Reply

Marsh Posté le 26-07-2014 à 09:44:49    

Salut,
 
Un inout checkbox ne renvoie que les valeurs cochées, c'est un comportement du navigateur.
 
Si tu veux vraiment des 0/1, faut passer par un select à 2 options, ou des boutons radio (2 boutons pour chaque checbox initiale).


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 26-07-2014 à 10:29:10    

Alors soit tu fais :
 

Code :
  1. $matin = array_fill(0, 3, 0); // http://php.net/manual/fr/function.array-fill.php
  2. foreach ($_POST['matin'] as $value) {
  3.   $matin[$value - 1]=1;
  4. }


 
Ou sinon :
 

Code :
  1. $sForm = <<<CODE_HTML
  2. <table>
  3.   <tr>
  4.     <td>Matin</td>
  5.     <td><input name="matin[0]" value="0" type="hidden" /><input name="matin[0]" value="1" type="checkbox" /></td>
  6.     <td><input name="matin[1]" value="0" type="hidden" /><input name="matin[1]" value="1" type="checkbox" /></td>
  7.     <td><input name="matin[2]" value="0" type="hidden" /><input name="matin[2]" value="1" type="checkbox" /></td>
  8.   </tr>
  9. </table>
  10. CODE_HTML;


Message édité par czh le 26-07-2014 à 10:31:03
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed