Problème bouton-radio // tableau associatif

Résolu
Signaler
Messages postés
260
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 novembre 2010
-
Messages postés
29
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
13 octobre 2008
-
Bonjour à tous,

j'ai un petit problème de récupération d'une valeur d'un bouton radio.
Voici mon code php qui me créé dynamiquement mes boutons:

 
while($l=mysql_fetch_row($tab_prestations))
   {
       for($i=1;$i<=$nombre_de_versements;$i++)
       {
           echo "";
       }
       echo "
";
}


J'obtient donc plusieurs lignes de boutons radios (un groupe de bouton par ligne).
Je voudrais donc récupérer la valeur du bouton coché dans la ligne, mais là, j'ai un problème.

alert (eval("form_vers_th.th["+vers+"].value")); m'affiche quelque chose du genre "form_vers_th.th.72" lorsque vers vaut 72.

En faite, je ne connais pas vraiment javascript et je ne sais pas pourquoi le crochet disparait.

Si quelqu'un peut m'aider, je lui en serait très reconnaissant.
Si mon explication est confuse, n'hésitez pas à me demander plsu d'explications.

Merci!!

Lowkey

10 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
effectivement si tu traites ça comme ça coté php,



     </td><td>
     </td><td>
       ...



     </td><td>
     </td><td>

             ...

    coté javascript : document.name_du_formulaire["vers_ht[40]"][indice].checked
                                document.name_du_formulaire["vers_ht[40]"].length

      on peut             document.name_du_formulaire["vers_ht["+valeur+"]"][indice].checked

                                                              

<hr />
Cordialement            Bul     [mon Site]     [M'écrire]
<hr />
Messages postés
260
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 novembre 2010
1
Correction :

alert (eval("form_vers_th.versement["+vers+"].value")); m'affiche quelque chose du genre "form_vers_th.versement.72" lorsque vers vaut 72.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,

   qu'est-ce qu'on fait nous pour voir $tab_prestations ou $nombre_de_versements ????
         
    donnes nous un extrait de la page html générée !
   
    si c'est l'histoire des noms avec crochets...
    utiliser document.name_du_formulaire["names_des_champs[]"]...
       veiller à bien respecter les points, les []
   
    très souvent c'est inutile d'ailleurs. mettre le même name suffit
    et si c'est pour récupérer un tableau en php, c'est name="toto[]"
          qu'il faut mettre.


   

<hr />
Cordialement            Bul     [mon Site]     [M'écrire]
<hr />
Messages postés
260
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 novembre 2010
1
Salut !!

Voici le code html généré :

<tr><td>
      </td><td>
      </td><td>
      </td></tr>
<tr><td>
      </td><td>
      </td><td>
      </td></tr>
<tr><td>
      </td><td>
      </td><td>
      </td></tr>
<tr><td>
      </td><td>
      </td><td>
      </td></tr>

Sachant que le numero après vers_th est créé dynamiquement.
Dans ce cas, $nombre_de_versements vaut 4 et $tab_prestations est le résultat d'une requete qui me retourne ('40', '41', '42', '43').

Je vais essayer ta solution avec les crochets et je te dirais si ça marche.

Merci pour ta réponse rapide !
Messages postés
260
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 novembre 2010
1
Oups, désolé, j'ai 'encore' dit une connerie...

Dans ce cas, $nombre_de_versements vaut 3 et $tab_prestations est le résultat d'une requete qui me retourne ('40', '41', '42', '43').
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,

perso je générerais sans les crochets ( syntaxe plus simple,
       mais peut-être n'ais-je pas compris ton besoin ! )

<tr><td>
      </td><td>
      </td><td>
      </td></tr>
<tr><td>
      </td><td>
      </td><td>
      </td></tr>
...

le php récupérant ( mettons en post )
    $_POST['vers_th40'],  $_POST['vers_th41'] ...

le javascript quand à lui gérant ,    par exemple :
    var t40= document.name_du_formulaire.vers_th40;
    traitement de t40[0]  à  t40[t40.length-1]
    t40[ indice ].checked est true si coché, false sinon.

    on peut, coté avascript user
       de document.name_du_formulaire["vers_th"+nombre]...

       par exemple :

       var nombre =40; // si les 1ers radios commencent à 40 !
       while (document.name_du_formulaire["vers_th"+nombre])
       {   traiter document.name_du_formulaire["vers_th"+nombre][indice].checked
                   document.name_du_formulaire["vers_th"+nombre].length
                   ...
           nombre++;
        }

              




<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
260
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 novembre 2010
1
Salut,

en effet, les crochets me sont forts utiles car les nombres (ici 40 à 43) sont issus de ma base de donnée et je ne les connais pas.
Donc, pour parcourir toutes mes cases à cocher, j'utilise un foreach sur ce tableau :

foreach ($_POST['vers_th'] as $id => $val)

c'est pour cela que je souhaitais garder les crochets.

Mais ne connaissant pas vraiment Js, je vais suivre ton conseil. Le code php sera vite adapté.

Merci bultez.
Messages postés
260
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 novembre 2010
1
Parfait !!

C'est exactement ce qu'il me fallait.

Merci encore Bultez!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
il vous en prie.
nickel si ça baigne, merci de l'avoir dit.
<hr />


Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
29
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
13 octobre 2008

Merci