[PHP] selection de toute les chekbox d'1 page
Fermé
maverick56
Messages postés
169
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
22 octobre 2007
-
11 juil. 2007 à 08:38
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 11 juil. 2007 à 16:46
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 11 juil. 2007 à 16:46
A voir également:
- [PHP] selection de toute les chekbox d'1 page
- Supprimer une page word - Guide
- Word numéro de page 1/2 - Guide
- Comment traduire une page - Guide
- Page d accueil google - Guide
- Bordure de page word - Guide
6 réponses
Salut !
Ton probleme se résoud plutôt avec du Javascript et non du PHP.
Essaie ce petit bout de code :
Ca devrait marcher, bonne chance, n'hésite pas à demander si tu ne comprends pas comment ca marche ce script ;) !
Ton probleme se résoud plutôt avec du Javascript et non du PHP.
Essaie ce petit bout de code :
<html> <head> <title> Checkboxes </title> </head> <script type="text/javascript"> <!-- function select_all() { document.check_form.check_1.checked = true; document.check_form.check_2.checked = true; document.check_form.check_3.checked = true; } function unselect_all() { document.check_form.check_1.checked = false; document.check_form.check_2.checked = false; document.check_form.check_3.checked = false; } //--> </script> <body> <form name="check_form" method="post" action="traitement.php"> <input type="checkbox" name="check_1"> Checkbox 1<br> <input type="checkbox" name="check_2"> Checkbox 2<br> <input type="checkbox" name="check_3"> Checkbox 3<br> </form> <input type="button" name="select_all" value="Tout sélectionner" onclick="select_all()"> <input type="button" name="unselect_all" value="Tout Désélectionner" onclick="unselect_all()"> </body> </html>
Ca devrait marcher, bonne chance, n'hésite pas à demander si tu ne comprends pas comment ca marche ce script ;) !
maverick56
Messages postés
169
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
22 octobre 2007
12
11 juil. 2007 à 10:34
11 juil. 2007 à 10:34
alors voila j'ai trouvé ce code :
Entre <HEAD> et </HEAD> :
Entre <BODY> et </BODY> :
et puis j'ai essayer de l'adapter pour moi ...
mais moi j'ai un tableau, et la j'ai des gros problemes avec le <div>
voila a peu pres ce que j'ai :
mais dès que j'ajoute les div, ba ca marche plus ....
:roll:
avez vous une idée de prk ?
merci
Entre <HEAD> et </HEAD> :
<script type="text/javascript"> <!-- // conteneur = id du bloc (<div>, <p> ...) contenant les checkbox // a_faire = '0' pour tout décocher // a_faire = '1' pour tout cocher // a_faire = '2' pour inverser la sélection function GereChkbox(conteneur, a_faire) { var blnEtat=null; var Chckbox = document.getElementById(conteneur).firstChild; while (Chckbox!=null) { if (Chckbox.nodeName=="INPUT") if (Chckbox.getAttribute("type")=="checkbox") { blnEtat = (a_faire=='0') ? false : (a_faire=='1') ? true : (document.getElementById(Chckbox.getAttribute("id")).checked) ? false : true; document.getElementById(Chckbox.getAttribute("id")).checked=blnEtat; } Chckbox = Chckbox.nextSibling; } } //--> </script>
Entre <BODY> et </BODY> :
<form> <input type="button" value="Tout cocher" onClick="GereChkbox('div_chck','1');"> <input type="button" value="Tout décocher" onClick="GereChkbox('div_chck','0');"> <input type="button" value="Inverser la sélection" onClick="GereChkbox('div_chck','2');"> <br /><br /> <div id="div_chck"> <input type="checkbox" name="checkbox1" id="checkbox1" value="1"><label for="checkbox1">Choix 1</label><br /> <input type="checkbox" name="checkbox2" id="checkbox2" value="2"><label for="checkbox2">Choix 2</label><br /> <input type="checkbox" name="checkbox3" id="checkbox3" value="3"><label for="checkbox3">Choix 3</label><br /> <input type="checkbox" name="checkbox4" id="checkbox4" value="4"><label for="checkbox4">Choix 4</label><br /> <input type="checkbox" name="checkbox5" id="checkbox5" value="5"><label for="checkbox5">Choix 5</label> </div> </form>
et puis j'ai essayer de l'adapter pour moi ...
mais moi j'ai un tableau, et la j'ai des gros problemes avec le <div>
voila a peu pres ce que j'ai :
<div id="div_chck"> <td> <input type="checkbox" name="checkbox1" id="checkbox1" value="1"><label for="checkbox1">Choix 1</label> </td> </div>
mais dès que j'ajoute les div, ba ca marche plus ....
:roll:
avez vous une idée de prk ?
merci
Houla... Reivax952 et moi t'avons proposé une solution plus simple, je crois que tu vas te compliquer la vie inutilement en utilisant ce script... L'avantage de ce script c'est que t'as pas besoin de savoir comment les <input> se nomment, ni combien y'en a car le script s'en charge... Mais je trouve que passer d'un gosse du DOM à l'autre ca fait lourd :|
Sinon je vois pas d'ou viens le problème sur ce que tu nous montres... peut-être les <td> solitaires qui buggent ?
Sinon tu peux aussi utiliser les fonctions select_all() et unselect_all() que je t'ai un peu modifiée afin qu'elles fassent la même chose que le script que t'as trouvé :
De cette manière, peu importe le nombre de checkboxes ou leur nom, elles seront toutes cochées ou décochées.
En espérant que ca t'aideras...
Sinon je vois pas d'ou viens le problème sur ce que tu nous montres... peut-être les <td> solitaires qui buggent ?
Sinon tu peux aussi utiliser les fonctions select_all() et unselect_all() que je t'ai un peu modifiée afin qu'elles fassent la même chose que le script que t'as trouvé :
function select_all() { var i = 0; while( document.check_form.elements[i] != null ) if( document.check_form.elements[i].getAttribute("type") == "checkbox" ) document.check_form.elements[i++].checked = true; } function unselect_all() { var i = 0; while( document.check_form.elements[i] != null ) if( document.check_form.elements[i].getAttribute("type") == "checkbox" ) document.check_form.elements[i++].checked = false; }
De cette manière, peu importe le nombre de checkboxes ou leur nom, elles seront toutes cochées ou décochées.
En espérant que ca t'aideras...
maverick56
Messages postés
169
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
22 octobre 2007
12
11 juil. 2007 à 12:35
11 juil. 2007 à 12:35
je le trouve bien ce script, il marche bien tan qu'il n'est pas dans une table ... et ca j'aimerais comprendre pourquoi !!!
une idée ?
sinon le probleme du script que vous proposer c'est qye c'est un POST qui va recharger la page, et ca je veux pas ...
mais merci pour la proposition quand meme ;)
une idée ?
sinon le probleme du script que vous proposer c'est qye c'est un POST qui va recharger la page, et ca je veux pas ...
mais merci pour la proposition quand meme ;)
maverick56
Messages postés
169
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
22 octobre 2007
12
11 juil. 2007 à 14:34
11 juil. 2007 à 14:34
j'ai trové un bon lien mais j'arrive pas a le faire fonctionner :
https://www.developpez.net/forums/showthread.php?t=306430
une idée svp ?
merci
https://www.developpez.net/forums/showthread.php?t=306430
une idée svp ?
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ben le problème dans ton cas alors c'est celui la je crois :
dans le script que tu as trouvé, la fonction fait ceci :
pour obtenir les éléments fils du <div>, donc les <input> et les <label>.
Or il semblerait que dans ton code tu as fait de ces <input> et <label> des éléments fils du <td>, donc la fonction GereChkbox ne va traiter que les <td> mais pas les <input> qui sont au niveau inférieur du DOM.
Essaie ca, je l'ai pas essayé mais ca devrait marcher, remplace ta fonction GereChkbox par celle-ci :
dans le script que tu as trouvé, la fonction fait ceci :
var Chckbox = document.getElementById(conteneur).firstChild;
pour obtenir les éléments fils du <div>, donc les <input> et les <label>.
Or il semblerait que dans ton code tu as fait de ces <input> et <label> des éléments fils du <td>, donc la fonction GereChkbox ne va traiter que les <td> mais pas les <input> qui sont au niveau inférieur du DOM.
Essaie ca, je l'ai pas essayé mais ca devrait marcher, remplace ta fonction GereChkbox par celle-ci :
function GereChkbox(conteneur, a_faire) { var blnEtat=null; var Chktd = document.getElementById(conteneur).firstChild; while (Chktd != null) { var Chkbox = document.getElementById(Chktd).firstChild; while (Chckbox!=null) { if (Chckbox.nodeName=="INPUT") if (Chckbox.getAttribute("type")=="checkbox") { blnEtat = (a_faire=='0') ? false : (a_faire=='1') ? true : (document.getElementById(Chckbox.getAttribute("id")).checked) ? false : true; document.getElementById(Chckbox.getAttribute("id")).checked=blnEtat; } Chckbox = Chckbox.nextSibling; } Chcktd = Chcktd.nextSibling; } }
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
11 juil. 2007 à 16:46
11 juil. 2007 à 16:46
Il y a aussi un truc bizarre dans ta table :
Peut-être que l'analyseur DOM n'aime pas avoir un schéma non valide comme celui-ci...
<div id="div_chck"> <td> <input type="checkbox" name="checkbox1" id="checkbox1" value="1"><label for="checkbox1">Choix 1</label> </td> </div>Les éléments <td> ne peuvent pas être placés ailleurs que dans un <tr>, qui lui-même ne peut être que dans un <table> (ou <tbody>)
Peut-être que l'analyseur DOM n'aime pas avoir un schéma non valide comme celui-ci...
11 juil. 2007 à 10:07
Pour ton tableau, j'imagine que quelque part, tu as une boucle. A l'intérieur de cette boucle, tu as une ligne qui génère la case à cocher, j'imagine. A cet endroit-là, en php, tu connais le futur nom de la check box. Disons que c'est un truc du genre "check_".$i, comme dans l'exemple de mr Penguin.
Juste en dessous de cette ligne, rajoute donc
$script_checkall .= "document.check_form.check_".$i.".checked = true;\n"
$script_uncheckall .= "document.check_form.check_".$i.".checked = false;\n"
Ainsi, dans les variables $script_checkall et $script_uncheckall, tu as le contenu des scripts fournis par mr Penguin.
Il te suffit ensuite de l'envoyer à la page :
Voilà :)
Xavier