Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1708 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Les checkbox en php et JS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Les checkbox en php et JS

n°1753755
malicious
Posté le 30-06-2008 à 23:23:18  profilanswer
 

Bonjour,
J'ai un problème avec les checkbox lorsque je veux les utiliser à la fois avec php et javascript.
 
Dans le formulaire si j'écris :  

Code :
  1. <input type="checkbox" name="check[]" value="v1">
  2. <input type="checkbox" name="check[]" value="v2">
  3. <input type="checkbox" name="check[]" value="v3">


 
Je peux récupérer en php les cases cochées par un truc du genre :

Code :
  1. foreach ($_POST['check'] as $choix){ .... }


 
Par contre ça ne fonctionne plus lorsque je veux accéder en Javascript:

Code :
  1. for(i=0;i<document.form1.check.length;i++)
  2. if(document.form1.check[i].checked) {.....}


 
Le problème vient des [] dans le formulaire. Si je les enlève, Javascript fonctionnera mais plus php... Comment faire alors?  
 

mood
Publicité
Posté le 30-06-2008 à 23:23:18  profilanswer
 

n°1753780
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 01-07-2008 à 00:15:54  profilanswer
 

Salut,
 
eh bien je propose une autre solution plus récente :

Code :
  1. <input type="checkbox" id="box1" name="check[]" value="v1">
  2. <input type="checkbox" id="box2" name="check[]" value="v2">
  3. <input type="checkbox" id="box3" name="check[]" value="v3">


Puis le JS qui va bien :

Code :
  1. for(i=0;i<document.form1.check.length;i++)
  2.   if(document.getElemebtById('box' + i).checked) {.....}


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1753811
jeca
Posté le 01-07-2008 à 06:19:55  profilanswer
 

Bonjour,
 
Un exemple :

Code :
  1. <html>
  2.   <head>
  3.     <script type="text/javascript">
  4.       function ctrl(formulaire)
  5.       {
  6.         var elt = formulaire.elements['check[]'];
  7.         var nb = elt.length;
  8.         for (var i = 0; i < nb; i ++)
  9.         {
  10.           if (elt[i].checked)
  11.             alert('checkbox ' + (i + 1) + ' cochée');
  12.           else
  13.             alert('checkbox ' + (i + 1) + ' non cochée');
  14.         }
  15.         return false;
  16.       }
  17.     </script>
  18.   </head>
  19.   <body>
  20.     <form name="test" method="post" action="" onsubmit="return ctrl(this)">
  21.       <input type="checkbox" name="check[]" value="v1"><br>
  22.       <input type="checkbox" name="check[]" value="v2"><br>
  23.       <input type="checkbox" name="check[]" value="v3"><br>     
  24.       <input type="submit" value="valider">
  25.     </form>
  26.   </body>
  27. </html>

n°1753929
malicious
Posté le 01-07-2008 à 12:12:10  profilanswer
 

Ah oui! je vais tester ces solutions. J'ai déjà utilisé getElemebtById() mais je n'y avais pas pensé pour contourner ce problème. Merci


Message édité par malicious le 01-07-2008 à 12:12:48
n°1753941
bul3
Posté le 01-07-2008 à 12:33:04  profilanswer
 

bonjour,
 
"ou alors"
 
<form name="form1" ...>
 
   1. <input type="checkbox" id="box1" name="check[]" value="v1">
   2. <input type="checkbox" id="box2" name="check[]" value="v2">
   3. <input type="checkbox" id="box3" name="check[]" value="v3">
...
</form>
 
   1. for(i=0;i<document.form1["check[]"].length;i++)
   2.   if(document.form1["check[]"][i].checked) {.....}
 
@+


Message édité par bul3 le 01-07-2008 à 12:33:46

---------------
[mon site] [m'écrire]
n°1754247
malicious
Posté le 01-07-2008 à 21:06:57  profilanswer
 

Merci à bul3 aussi. Ta version est en fait la même que NewsletTux mais qui marche. En effet, c'est le document.form1.check.length de la boucle qui plante alors que document.form1["check[]"].length fonctionne.

n°1754249
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 01-07-2008 à 21:24:29  profilanswer
 

oui, c'est le seul truc de ma proposition que j'ai laissé tel quel ... En fait, document.forms c'est l'ancienne écriture, il aurait presque mieux valu tester, via l'ID, chaque item du form et si c'est une checkbox, alors rentrer dans la condition ...


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1754677
malicious
Posté le 02-07-2008 à 19:07:24  profilanswer
 

oui en fait tout ceci fonctionne bien maintenant exepté s'il n'y a qu'une seule checkbox !
 
Que ce soit document.form_del["check[]"].length de bul3 ou document.form_del.elements['check[]'] de Jeca ils retournent undefined s'il y a 1 checkbox.
 
Pour contourner ce petit problème je fais comme ceci:
 

Code :
  1. if((nb=document.form1["check[]"].length)==undefined) nb=1;
  2. for(i=0;i<nb;i++)
  3.  if(document.getElementById("check"+i).checked){ ....... }


 

n°1754899
bul3
Posté le 03-07-2008 à 09:55:54  profilanswer
 

oui.
on ne peut pas utiliser d'indice si ce n'est pas un tableau

 

soit tester si .length existe
       d'ailleurs  if (document.form1["check[]"].length) suffit
soit créer un 1er poste bidon ( et caché ) et faire la boucle à partir
       de l'indice 1 au lieu de 0 ( et ce serait plus mieux à mon humble avis )

 


remarque : j'utilisais
 1. for( i=0; i < document.form1["check[]"].length; i++ )
 2.   if( document.form1["check[]"][i].checked ) {.....}
 

 

Cordialement.


Message édité par bul3 le 03-07-2008 à 10:04:56

---------------
[mon site] [m'écrire]
n°1755341
malicious
Posté le 03-07-2008 à 21:29:57  profilanswer
 

Excellente solution que de d'utiliser une checkbox invisible, cela evite le test. Merci à vous tous pour toutes ces idées !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Les checkbox en php et JS

 

Sujets relatifs
[JS] Quel centre de formation pour une initiation au JS ?PB : masquer checkbox d'un treeview
Afficher des resultats sur plusieurs pages (checkbox)Problème infobulle JS sous IE
[JS] fondu de couleur de background d'une div[JS]Sélectionner feuille de style + script selon la résolution
[PHP] Variables dynamiques et CheckboxForm en variable JS
[JS/Ajax/Prototype] Problème de transmission de variables et paramètreAssigner à une variable JS le contenu d'un champ
Plus de sujets relatifs à : Les checkbox en php et JS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR