[javascript] boutons tout cocher/decocher

Fermé
saad0n - 27 juil. 2010 à 12:15
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 - 27 juil. 2010 à 14:33
Bonjour,
je cherche à inclure des boutons tout cocher/tout decocher/ inverser selection dans une page php. Etant nul en javascript je me suis inspiré d'un code existant. Voila mon code que je genere:
<form>
<input type="button" value="Tout cocher" onClick="GereChkbox('div_chck','1');">&nbsp;&nbsp;&nbsp;
<input type="button" value="Tout décocher" onClick="GereChkbox('div_chck','0');">&nbsp;&nbsp;&nbsp;
<input type="button" value="Inverser la sélection" onClick="GereChkbox('div_chck','2');">
<br /><br />
<div id="div_chck">

<?php
require ('./conf/config.inc.php'); // fichier de config
require ('./functions/mysql.php'); // fichier des fonctions
	
$link = mysql_connect("$host","$login","$password") or die ("Connexion au serveur impossible"); 

mysql_select_db($database,$link);
$s = "";
echo '<table>';
$result = mysql_query("SELECT * FROM arcachon_previsionnel ");
while ($table_arcachon_previ = mysql_fetch_assoc($result))
{
	if($s=="")
		$s.=$table_arcachon_previ['id'];
	else
		$s.=", ".$table_arcachon_previ['id'];
	echo '<tr align="center" >';
	echo '<td align="center" >'.$table_arcachon_previ['numero'].'</td>';
	echo '<td align="center" >'.$table_arcachon_previ['libelle_troncon'].'</td>';
	echo '<td align="center" id="td_longueur_'.$table_arcachon_previ['id'].'">'.$table_arcachon_previ['longueur_previsionnelle'].'</td>';
	echo '<td align="center" id="td_cout_'.$table_arcachon_previ['id'].'">'.$table_arcachon_previ['cout_previsionnel'].'</td>';
	echo '<td align="center" ><input id="check_box_'.$table_arcachon_previ['id'].'" type="checkbox" checked="checked"/></td>';
	echo '</tr>';
}
echo '<tr align="center" >';
echo '<td colspan="5" id="td_total">&nbsp;</td>';
echo '</tr>';
echo '</table>';
echo '<script type="text/javascript">;
	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>';
?>
</div>
</form>


le problème est tout simple : rien ne se passe même si j'ai l'impression d'avoir bien placé mes balises <div>
toute aide serait la bienvenue
merci

2 réponses

varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
27 juil. 2010 à 12:31
Il faut que tu mettes ton code qui coche tout/decoche tout/inverse la selection dans la div avec tes bouttons.

Pour plus d'info, tout est expliqué ici
0
saad0n Messages postés 19 Date d'inscription mardi 6 juillet 2010 Statut Membre Dernière intervention 10 août 2010
27 juil. 2010 à 13:31
voila je l'ai postitionné ici et ca ne marche toujours pas :
echo '<div id="div_chck">';
	echo '<td align="center" ><input id="check_box_'.$table_arcachon_previ['id'].'" type="checkbox" checked="checked"/></td>';
	echo '</div>';

la source qu etu m'as donnée est celle dont je me suis inspiré :)
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
27 juil. 2010 à 14:04
Voici une page ou ça marche.
Essaye de reprendre ce code, et de rajouter ton truc dedans doucement en verifiant a chaque fois si sa fonctionne toujours:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
	<head>
		<title>Bienvenue sur mon site !</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	</head>
	<body>
		<script type="text/javascript">
			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>

		<form>
			<input type="button" value="Tout cocher" onClick="GereChkbox('div_chck','1');">&nbsp;&nbsp;&nbsp;
			<input type="button" value="Tout décocher" onClick="GereChkbox('div_chck','0');">&nbsp;&nbsp;&nbsp;
			<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>
		<noscript>
			<a href="http://www.editeurjavascript.com/">ajax</a>
		</noscript>
	</body>
</html>

0
saad0n Messages postés 19 Date d'inscription mardi 6 juillet 2010 Statut Membre Dernière intervention 10 août 2010
27 juil. 2010 à 14:17
c'est sur cet exemple que je m'etais basé au tout début.
Mon problème vient de mon attribut id dans mon checkbox
le probleme c'est que je suis obligé de le nommer de cette facon car je l'utlise comme argument pour uen autre fonction javascript
0
saad0n Messages postés 19 Date d'inscription mardi 6 juillet 2010 Statut Membre Dernière intervention 10 août 2010
27 juil. 2010 à 14:21
voila ma deuxième fonction que j'utlise:
var liste_troncon = new Array();
liste_troncon = ['.$s.'];
function calcul_cout()
{
	var total=0;
	for(var i=0; i<liste_troncon.length ;i++)
	{
		if(document.getElementById("check_box_"+liste_troncon[i]).checked)
			total+=parseFloat(document.getElementById("td_cout_"+liste_troncon[i]).innerHTML) ;
		}
		document.getElementById("td_total").innerHTML = total ;
	}
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
27 juil. 2010 à 14:33
Je te conseillerais de reprendre a partir de l'exemple qui marche, de le mettre sous forme php avec les echo, puis de rajouter ton code php.

Parceque la t'as du faire une fausse manip avec ton html, et je n'ai pas a ma disposition de quoi tester ton code en php
0