Case à cocher [Résolu]

Signaler
Messages postés
17
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
8 avril 2010
-
Messages postés
17
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
8 avril 2010
-
Salut,
Quelqu'un peut-il me donner un coup de main ça un moment que je galère.
Voilà mon soucis: je veux compter le nombre de cases cochées. J'ai essayé de faire une fonction javascript que j'ai mis à l'événement onClick et je lui demande de m'afficher le nombre dans un champ texte. Il me renvoie bien le nombre de cases cochées mais une fois que j'enregistre et que je décide de cocher de nouvelles cases il reprends le compte depuis le début. c'est normal c'est un peu ce que je lui demande dans mon code:
Code Javascript :
Code :


var compteur1 = 0;

function inc_decr1(val_input) {

if (val_input) {
compteur1++;
}else{

compteur1--;

}

if (compteur1<=0) {

document.getElementById('pertinence').value = "Pertinence est égale à 0";

}else{

document.getElementById('pertinence').value = "la pertinence est égale à : "+(compteur1/5);

}

}


le champ text où il va afficher le résulat:
Code HTML :

Code :


/>
f("pertinence") ?>" />



Je veux lui dire de parcourir la liste des cases s'il y a une case cochée il doit la compter avec les nouvelles cases que je vais cocher et si je la décoche il décrémente le compteur.

Merci pour votre aide

15 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
<script type="text/javascript">
function inc_decr1()
{ var compteur1 = 0;
for (var nc=0;nc<document.toto["chk[]"].length;nc++)
if (document.toto["chk[]"][nc].checked)
{ compteur1++; }
if (compteur1<=0)
{ document.getElementById('pertinence').value = "Pertinence est égale à 0"; }
else { document.getElementById('pertinence').value = "la pertinence est égale à : "+(compteur1/5); }
}
</script>
<form name="toto" method="post" action="page.php">





</form>



et dans pge.php, $_POST['chk'] est un array
avec les checkbox cochés
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
Bonjour,

_ je ne comprend pas du tout ce que vous cherchez à faire ???
le click sur le checkbox fait +1 les fois
impaires et -1 les fois paires....
le résultat est donc toujours égal à 1 ou 0.
_ évitez de nous mettre du php !!!
comment en devinerait-on le contenu ???
mettez nous l'extrait nécessaire de la
page html résultante

>>Je veux lui dire de parcourir la liste des cases
quelle liste ?
dans votre exemple, il n'y en a qu'un ????

peut-être ci-dessous ?
mais c'est de la divination....
<script>
function inc_decr1() 
{	var compteur1 = 0;
for (var nc=0;nc<document.toto.chk.length;nc++)
if (document.toto.chk[nc].checked) 
{	compteur1++;	}
if (compteur1<=0) 
{	document.getElementById('pertinence').value = "Pertinence est égale à 0";	}
else	{	document.getElementById('pertinence').value = "la pertinence est égale à : "+(compteur1/5);	}
}
</script>
<form name="toto">
 
</form>



Cordialement [mon Site] [M'écrire] Bul
Messages postés
17
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
8 avril 2010

Oui c'est exactement ça que je veux faire.
Mais j'ai juste pas le mm formulaire:
je génére mes checkbox depuis une boucle qui va chercher toutes les informations
concernant la case cochée dans une base
echo "
";

while ($db_u1->next_record()) {
?>


 


<?php
}

echo "
";

Ce qui me génère ça:



  

  

  

 







je sais pas quoi mettre à la place de document.toto.chk.length;et
document.toto.chk[nc].checked
j'ai essayé de mettre le nom du div à la place du nom du formulaire mais ça ne marche pas
Merci
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
>>Mais j'ai juste pas le mm formulaire:
ben ???? mettez les name qui sont à vous ??? non ???

_ pourquoi mettre des name différents ????
vous vous compliquez la vie inutilement
mettez le même name
_ vos checkbox ne sont pas dans un formulaire ?????
enfin, on ne le voit pas
_ un id ou un name commencent par une lettre
id="1" est normalement incorrect

on pourrait aussi utiliser
si id="p1", id="P2".... id="p#"

var n=1;
while ( document.getElementById("p"+n) )
{ tester document.getElementById("p"+n)
n++
}


mais si vous devez récupérer les checkbox cochés
le name est obligatoire, alors
si oui : mettez un name avec des crochets,
en php vous aurez un array de transmis
Messages postés
17
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
8 avril 2010

>>Mais j'ai juste pas le mm formulaire:
ben ???? mettez les name qui sont à vous ??? non ???

Je voulais dire que mes checkbox sont dans un div pas dans un form

_ pourquoi mettre des name différents ????
vous vous compliquez la vie inutilement
mettez le même name

j'ai besoin de mettre des noms différents parce que je stocke les valeurs des cases cochées dans une base. Pour après les appeler et afficher les cases cochées
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
vous vous mélangez les yeux !

>>mes checkbox sont dans un div pas dans un form
et alors ???? comment allez vous envoyer
ces checkbox vers le serveur sans formulaire ?????

>>des noms différents parce que je stocke les valeurs
>>des cases cochées dans une base.
c'est ce que je tente de vous expliquer !
si vous mettez des names différents,
primo, c'est gênant à gérer coté client en javascript !
deuxio, ça l'est aussi coté serveur !
mettez donc le même name, avec des crochets
et dans un form
Messages postés
17
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
8 avril 2010

Ce que je veux dire c'est que je ne peux pas écrire : document.toto1.chk.length;
document.toto.chk[nc].checked

j'ai par exemple mon formulaire toto1 mais dedans un div toto2 et dans ce div mes cases.
J'ai essayé de faire document.toto1.toto2.chk.length
document.toto1.toto2.chk[nc].checked
mais ça marche pas
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
soit ne mettez pas de div
soit n'en tenez pas compte
document.toto1.chk.... ça doit le faire....
Messages postés
17
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
8 avril 2010

Je vous remercie ça marche nikel. au lieu de mettre le mm name j'ai mis le mm id.
J'avais une autre question.
mes cases cochés s'affichent cote à cote
je voudrais qu'il y est un retour à la ligne après chaque case j'ai fais ça:
<form name="adminForm">



 <label>Fréquence lubrification</label> 


 <label>Réference lubrification</label> 

  <label>Fabricant lubrification</label> 		



</form>

Mais toutes les cases se mettent sur la même ligne (je travaille avec mozilla c peut etre lié)
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
>>j'ai mis le mm id.
aïe !
[*] un id doit être unique dans une page !!!!
[*] ce ne sera pas un array qui sera transmis vers le php !!!
[*] for (var nc=0;nc<document.toto["chk[]"].length;nc++)
ne fonctionnera plus du coup !


>>toutes les cases se mettent sur la même ligne
pas de raisons, sauf le css ?
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
>>toutes les cases se mettent sur la même ligne
et surtout pas avec ce que vous nous montrez !
2
après </label>
ou alors c'est quand vous ne mettez pas de
?
oui, mais avec tous les navigateurs
Messages postés
17
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
8 avril 2010

peut importe le nombre de j'en ai mis un au début après label ça n'a pas marché alors j'en ai mis 2 et là ça ne marche pas non plus
Messages postés
17
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
8 avril 2010

pourtant ça marche. est ce qu'il ne faut pas non plus mettre le mm id pour une liste de cases?
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
ça ne peut pas marcher !
je répète ?
° un id est obligatoirement unique
° s'il n'y pas le même name avec des [],
ce n'est pas un array qui sera transmis
vers le php
° la fonction javascript mise en exemple
plante obligatoirement

quand à votre souci de retour à la ligne,
l'erreur est donc "ailleurs"
vous ne devez pas regarder la page
html résultante mais le php
Messages postés
17
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
8 avril 2010

Ok ça marche merci pour votre aide