[javascript] boutons tout cocher/decocher

saad0n -  
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   -
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 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
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 Statut Membre
 
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 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
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 Statut Membre
 
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 Statut Membre
 
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 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
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