Compteur de checkbox CHECKED

Eléphant du PHP | 114 Messages

22 sept. 2005, 16:51

Bonjour a tous,

Ce que je voudrai est faire est comme le dit le titre de mon POST: compter les checbox que j'ai coché et ceci de maniere dynamique (d'ou mon post dans la catégorie JS 8) )
Cependant apres avoir lu les différent post (celui ci entre autres) sur cette grande question "Comment compter les checkbox ?" je n'ai pas reussi a l'integrer a mon code.

voici la fonction JS pour compter les checkox que j'ai trouvé sur ce forum:

Code : Tout sélectionner

function countChecked() { var total = 0; for ( var i = 0; i < document.nom_du_formulaire.elements.length; i++ ) { if ( document.nom_du_formulaire.elements[ i ].type == 'checkbox' ) { if ( document.nom_du_formulaire.elements[ i ].checked == true ) { total += parseInt( document.nom_du_formulaire.elements[ i ].value ); } } } return total; }
En ce qui concerne MON CODE voici la checkbox en question, et pour information cette checkbox est dans un tableau qui va lister le contenu d'une base de donnée. Plus precisement cette checkbox est sur chaque fin de ligne ce qui rend la checkbox differente a chaque ligne etant donné qu'elle renvoi un id ($row[0]) différent a chaque ligne.
echo "<td align='center' bgcolor='#3366CC'><input type='checkbox' id='article_".$row[0]."' name='article_".$row[0]."' value='".$row[0]."'></td>";
je voudrai recuperer ce que me retourne le compteur dans un chps type text HTML...comment dois je faire ? que dois je changer à la fonction pour qu'elle s'adapte a mon code checkbox?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 sept. 2005, 19:59

Salut, intégre le javascript dans ton code de tel manière:

Dans le head:
<script language="javascript">
function countChecked()
{
   var total = 0;

   for ( var i = 0; i < document.nomFormulaire.elements.length; i++ )
   {
      if ( document.nomFormulaire.elements[ i ].type == 'checkbox' )
      {
         if ( document.nomFormulaire.elements[ i ].checked == true )
         {
            total += parseInt( document.nomFormulaire.elements[ i ].value );
         }
      }
   }
   //ici le champ text pour afficher le nombre de cases cochées
   document.nomFormulaire.nomChampText.value=total;
} 
</script>
Dans ton formulaire:
echo "<td align='center' bgcolor='#3366CC'><input type='checkbox' id='article_".$row[0]."' name='article_".$row[0]."' value='".$row[0]."' onClick='countChecked()></td>";

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

22 sept. 2005, 23:26

Salut, intégre le javascript dans ton code de tel manière:

Dans le head:
<script language="javascript">
function countChecked()
{
   var total = 0;

   for ( var i = 0; i < document.nomFormulaire.elements.length; i++ )
   {
      if ( document.nomFormulaire.elements[ i ].type == 'checkbox' )
      {
         if ( document.nomFormulaire.elements[ i ].checked == true )
         {
            total += parseInt( document.nomFormulaire.elements[ i ].value );
         }
      }
   }
   //ici le champ text pour afficher le nombre de cases cochées
   document.nomFormulaire.nomChampText.value=total;
} 
</script>
Dans ton formulaire:
echo "<td align='center' bgcolor='#3366CC'><input type='checkbox' id='article_".$row[0]."' name='article_".$row[0]."' value='".$row[0]."' onClick='countChecked()></td>";
OK je test tout ca demain (vendredi) et je te redis ca.... ;)

Eléphant du PHP | 114 Messages

23 sept. 2005, 09:56

ok très bien, cela marche a merveille juste apres avoir trouvé un petit stratagème à mon problème... j'ai essayé de faire ceci a tout a hazard et je m'suis rendu compte que cela marchait a merveille...

problème:

avec le code que tu m'avais donné il se mettais a faire une addition de mes identifiant correspondant à la ligne ou se trouvais la checkbox...
car regarde:
echo "<td align='center' bgcolor='#3366CC'><input type='checkbox' id='article_".$row[0]."' name='article_".$row[0]."' [b]value='".$row[0]."'[/b] onClick='countChecked()></td>";
si je laissais ceci il me retournais dans mon champs texte nommé compteur l'id et me fesais si je selectionnais plusieurs box l'addition de ces id.

voici la méthode que j'ai essayé de faire et que au final je me suis rendu compte que cela était possible, comme quoi...
echo "<td align='center' bgcolor='#3366CC'><input type='checkbox' id='article_".$row[0]."' name='article_".$row[0]."' value='".$row[0]."' value2='1' onClick='countChecked()'></td>";
j'ai rajouter le ptit value2='1' qui me retournerai pour chaque checkbox coché 1 ensuite la fonction JS fera le reste pour faire l'addition des cases coché.
ce n'est peut etre pas la meilleur des solutions et pas la plus propre mais cela marche a merveille...

Voila je tenais simplement a le dire, et dévoilé la solution trouvé a mon problème...

Merci encore pour ton aide 8)

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

23 sept. 2005, 10:09

Peux tu mettre Résolu alors ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 114 Messages

23 sept. 2005, 10:20

Peux tu mettre Résolu alors ?
Tu me prend de vitesse j'allais justement le faire...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 sept. 2005, 11:43

ce n'est peut etre pas la meilleur des solutions et pas la plus propre
et oui et methode bizarre en plus :wink:
Il aurrai siffit de remplacer:
total += parseInt( document.nomFormulaire.elements[ i ].value );
par
total ++;
:wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

lab
Invité n'ayant pas de compte PHPfrance

17 nov. 2005, 18:16

Bonjour,
ce topic m'a beaucoup aidé je l'ai adapté à mon script php sauf que mes cases à cochées sont "pré checked" au chargement. Résultat dans le champ text d'affichage je n'ai pas le total d'inscrit il faut que je décoche une case pour que le total s'affiche .
Vous avez une idée, je maitrise beaucoup mieux php que javasript :P
Merci d'avance

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

18 nov. 2005, 00:35

Salut, tu peut mettre en "value", de ton champ texte qui compte le nombre de cases, directement le nombre de cases que tu as :D

Ex: tu as 10 cases:
<input type="checkbox" value=10 ... >

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

lab
Invité n'ayant pas de compte PHPfrance

18 nov. 2005, 10:35

Bonjour,

Merci beaucoup ça marche nickel !

:D :D