Gyome314
Messages postés125Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention22 janvier 2009
-
1 mars 2006 à 09:41
Gyome314
Messages postés125Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention22 janvier 2009
-
1 mars 2006 à 16:38
Bonjour
Dans une page, j'ai un script PHP qui génère plusieurs cases à cocher nomées "box1", "box2", "box3", ...
lorsque qu'on valide le formulaire, je veux tester ces boxs, mais je ne connais pas le nombre exacte, je vise au max.
mais lorsque je teste une box qui n'existe pas dans ma boucle, j'ai forcemment une erreur du type "undefined":
Gyome314
Messages postés125Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention22 janvier 2009 1 mars 2006 à 15:38
Merci pour vos solutions les gars :)
Le pb avec la solution de Mindiell, c'est que dans la façon dont j'ai fait les choses, les numéros des box ne se suivent pas nécessairement linéairement :
on peut avoir box1, box2, box4,...
Donc le pb reste le meme.
Pour la solution de Bultez, j'ai pas testé, mais je pense que j'aurais eu le même pb...
J'ai trouvé une solution toute bête entre deux : mettre les boxes proprement dans un formulaire... lol
eval("box"+i) provoque une erreur si la boxe n'existe pas...
par contre : eval("document.monformulaire.box"+i) renvoit vrai ou faux en fonction de l'existance de la case...
Pourquoi ? je n'en ai aucune idée, mais comme quoi, quant on fait les choses proprement, tout marche à merveille :)
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 1 mars 2006 à 12:30
Bonjour,
un ch'tit exemple ?
<form name="frm">
</form>
<script type="text/javascript">
var n=1;
while ( frm["box"+n] )
{
alert(frm["box"+n].name+"="+frm["box"+n].checked);
n++;
}
</script>
à mon humble avis, il vaudrait mieux :
° mettre id=box1,box2... et traiter document.getElementById("box"+n).checked
° mettre le même nom, box par exemple et faire
for ( var n=0;n<frm.box.length;n++ )
{
frm.box[n].checked....
une remarque : à if ( quelque chose == true ) je préfère if ( quelque chose )
... mais chacun ses goûts ( et les vaches seront bien gardées ).
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 1 mars 2006 à 12:35
oh ... croisement avec MinDiell
qui donne une solution tout aussi valable
SI php connait le nombre de postes
( ce qui n'est pas toujours le cas )
donc tout dépend du contexte, comme toujours.
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>et quand je dis croisement, rien de sexuel là dedans, hein !</S< body>
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 1 mars 2006 à 16:00
si box# est dans un formulaire, il est nécessaire de
le dire : name_formulaire.name_box.? et aps name_box.?
sinon : inconnu.
quelle idée de générer des name/id non consécutifs ?
on pourrait aussi examiner tous les champs du formulaire
et traiter ceux qui sont des checkbox.
car eval, c'est assez gourmand, et tester si les champ existent,
je veux bien, mais on arrête quand ? avec une borne maxi ?
je n'aime pas trop moi, car si le nombre augmente, il faudra modifier
le script ( si on s'en souvient qu'il existe et est testé ce maxi ! )
Gyome314
Messages postés125Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention22 janvier 2009 1 mars 2006 à 16:38
En fait ma liste des boxes est liés à une liste stockée dans une BDD
Cette liste peut être gérée par les admins du site, pour ajouter de nouvelle case ou en supprimer d'autre...
de plus dans nom name="boxnum", num correspond à l'identifiant du champ dans ma BDD, ensuite, je fais une recherche sur les noms de boites validées pour savoir quels identifiants enregistrés (parceque je me sert du champ value pour tout autre chose).
Je sais pas si j'ai été clair, mais bon. c'est fait et ca marche impecc, c tout ce qui m'importe