Case à cocher

Résolu
nina599 Messages postés 17 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 8 avril 2010 - 17 août 2009 à 10:11
nina599 Messages postés 17 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 8 avril 2010 - 18 août 2009 à 09:18
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

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
17 août 2009 à 15:17
<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
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
17 août 2009 à 10:46
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
0
nina599 Messages postés 17 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 8 avril 2010
17 août 2009 à 12:19
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
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
17 août 2009 à 12:45
>>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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nina599 Messages postés 17 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 8 avril 2010
17 août 2009 à 13:57
>>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
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
17 août 2009 à 14:05
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
0
nina599 Messages postés 17 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 8 avril 2010
17 août 2009 à 14:58
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
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
17 août 2009 à 15:10
soit ne mettez pas de div
soit n'en tenez pas compte
document.toto1.chk.... ça doit le faire....
0
nina599 Messages postés 17 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 8 avril 2010
17 août 2009 à 16:16
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é)
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
17 août 2009 à 16:24
>>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 ?
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
17 août 2009 à 16:28
>>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
0
nina599 Messages postés 17 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 8 avril 2010
17 août 2009 à 16:34
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
0
nina599 Messages postés 17 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 8 avril 2010
17 août 2009 à 16:37
pourtant ça marche. est ce qu'il ne faut pas non plus mettre le mm id pour une liste de cases?
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
17 août 2009 à 16:45
ç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
0
nina599 Messages postés 17 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 8 avril 2010
18 août 2009 à 09:18
Ok ça marche merci pour votre aide
0
Rejoignez-nous