Chekbox en boucle

Eléphanteau du PHP | 12 Messages

28 janv. 2013, 18:05

Bonjour à tous !
J'ai essayé une dizaine de script permettant de coché ou décoché l'ensemble des checkbox cependant aucun ne marche !
Je pense que cela est du à la création des checkbox qui sont faites dans une boucle
Pour chaque champs dans une base de données, celui-ci devient une chekbox:
  
<form action="do.php" method="POST">

    <div id="checkProduit">
        <?php
           //on affiche chaque champ sous forme de checkbox 
                    
          for($i=0;$i<$nb;$i++){
               echo ("<div id='produit'>
                              <input type='checkbox' id='prod'  name='prod[]' value=' ". $result[$i]["codeProduit"]. "'>". $result[$i]["codeProduit"]."&nbsp&nbsp"."
                                    <input type='text' id='annee' name='annee[]' value='".$annee."' style='width:45px; float:right; margin-right:30px' readonly></input>"."</br>
                              </div>");  
                    }
                    
                    
                    if(isset($_POST['prod'])){
                        
                        for($j=0;$j<=$nb;$j++ ){
                            $tabProd['coProd'] = $_POST['prod'][$j];
                            $tabProd['annee'] = $_POST['millesime'];
                            
                           
                        }
                    }

                ?>
                </div>
                <input type="button" value="tout cocher" name="bouton" onclick="swapliste(this.form.elements['prod[]'],this);"/>
                <input type="hidden" name="action" value="selectionProduits" ></input>
            </form>
Pour info, il y a plus de 500 checkbox, ça peut paraitre embêtant de les cochées une à une .
Je suis preneur de n'importe quel bout de code qui pourrait m'aider

Merci à tous !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 janv. 2013, 01:05

Est-ce qu'une recherche Google ne te donne pas les informations nécessaire ?
http://blog.yann.info/2010/03/16/jquery ... -checkbox/
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 1996 Messages

02 févr. 2013, 08:59

Bonjour,

Zeus a (toujours) raison : utilise Jquery. Je dirais juste que le lien ne permets pas de fonctionner si jquery est > 1.6. Comme nous en sommes à 1.9, il faut modifier un peu le script pour le rendre compatible :
En fait il faut remplacer attr() par prop(). (http://jquery.com/upgrade-guide/1.9/#attr-versus-prop-)
De même l'utilisation de la fonction ready n'est pas utile ici. J'ai utilisé on() à la place.
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
	<style>
	</style>
	<script type="text/javascript">
		$(document).on({
			click : function (event) {
				var cases = $("#cases").find(':checkbox'); // on cherche les checkbox qui dépendent de la liste 'cases'
				if(this.checked)
				{ // si 'cocheTout' est coché
					cases.prop('checked', true); // on coche les cases
					$('#cocheText').html('Tout decocher'); // mise à jour du texte de cocheText
				}
				else{ // si on décoche 'cocheTout'
					cases.prop('checked', false);// on coche les cases
					$('#cocheText').html('Cocher tout');// mise à jour du texte de cocheText
				}  
			}
		},'#cocheTout');
	</script>
	</head>
	<body>
		<input type='checkbox' id='cocheTout'/>
		<span id='cocheText'>Cocher tout</span>

		<ul id='cases'>
			<li><input type='checkbox' id='1'/>Case 1</li>
			<li><input type='checkbox' id='2'/>Case 2</li>
			<li><input type='checkbox' id='3'/>Case 3</li>
		</ul>
	</body>
</html>
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr