Une fois de plus, je me retrouve ici car je ne trouve pas de solution a mon problème.
ce forum est en fin de compte est toujours le dernier recours quand je ne trouve pas de solution.

Alors voici mon problème, j'essaie de créer un formulaire qui permettra de calculer un cout par rapport à un prix défini et une quantité de watt, le formulaire est sur la bonne voie mais je bloque avec "checkbox"

Je vous épargne tous les calculs du formulaire final et pour comprendre ce checkbox, je ne presente qu'une partie du formulaire final sur l'exemple suivant

http://www.lescalaireducentre.be/pages/aquacalcul/consomation_test.php

Je sais que le calcul watt, etc, n'est pas bon, pour le moment je cherche juste a comprendre

Le but ici est de
mettre un chiffre dans 1er case, cocher un certain nombre de checkbox
Le résultat souhaité est une multiplication du chiffre par le nombre de checkbox cochées

Ensuite, la page deviendra beaucoup plus complex, bien entendu

Mais si j’arrivais déjà a faire que ce calcul fonctionne, ca m’avancerais pas mal
Voici la page zippé
http://www.lescalaireducentre.be/pages/aquacalcul/consomation_test.zip

Merci a tous pour votre aide
Marc
Hello Marc Smiley cligne ,

Une première remarque : les balises de bases du html (<html>, <head>, </head, etc...) ne sont pas facultatives Smiley murf !

Tu pourrais essayer avec ce code :
<?php
header('Content-type: text/html; charset=iso-8859-1');
$actuel = htmlspecialchars($_SERVER['PHP_SELF']);

$tab_coch = array();

if ($_POST) {
	$nb_coch = count($_POST['checkbox_id']);
	$ecl = !empty($_POST['ecl']) ? intval($_POST['ecl']) : 0;
	$tot = $ecl * $nb_coch;
	for ($i = 0; $i < $nb_coch; $i++) {
		$tab_coch[] = $_POST['checkbox_id'][$i];
	}
}
?>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		<title>Tarif Electricité</title>
		<style type="text/css">
		</style>
		<script type="text/javascript">
		function calculer() {

			var W3CDOM = document.createElement && document.getElementsByTagName;
			if(!W3CDOM) { return; }

			var ecl = document.getElementById('ecl').value;
			ecl = ecl * 1;
			
			oCases = document.getElementById('cases');
			cases = oCases.getElementsByTagName('INPUT');
			
			var nb_coch = 0;
			for (j = 0; j < cases.length; j++) {
				if (cases[j].checked) nb_coch += 1;
			}

			document.getElementById('tot').value = ecl * nb_coch;
		}
		</script>
	</head>
<body>
<form action="<?php echo $actuel; ?>" method="post" onsubmit="calculer(); return false;">
	<p>
	<table width="100%" cellpadding="0" cellspacing="0" align="center">
		<tr><td class="leftside" width="4"> </td><td bgcolor="#9cbcec">
	
	<table cellspacing="0" cellpadding="0" width="100%" border="0" align="center" style="border-bottom: 1px solid #FFFFFF;" height="343">
	<tr class="tdbanniere"><td> <div id= "clickInText">
	<table cellspacing="0" cellpadding="0" border="0" align="center" width="100%">
	
	<tr><td width="12" background="#7798DB"> </td>
	<td bgcolor="#ddebff"><br>
	<br>
	
	<table align="center" width="80%" style="border: 1px solid #7798DB;" cellspacing="1" cellpadding="6" class="titrenews">
	<tr><td bgcolor="#7798DB" align="center" colspan="2">Puissances et dures</td></tr><tr><td bgcolor="#A5C2EF" nowrap><b>Eclairage 
	1</b></td><td bgcolor="#A5C2EF">
	<input type="text" name="ecl" id="ecl" value="<?php echo $ecl; ?>" size="10" maxlength="7">Watts</td></tr>
	<tr><td bgcolor="#A5C2EF" style="border-bottom: 1px solid #7798DB;" nowrap>Plage horaire(1)</td>
	<td bgcolor="#A5C2EF"style="border-bottom: 1px solid #7798DB;"><table cellspacing="0" cellpadding="0"><tr>
	<?php
	for ($i = 0; $i < 24; $i++) {
		if (($i > 6) && ($i < 22)) {
			$bgc = '';
		} else {
			$bgc = ' bgcolor="#7798DB"';
		}
		echo '<td align="center"'.$bgc.'><font size="1">'.$i.'</font></td>'."\n\t";
	}
	?>
</tr><tr id="cases">
	<?php
	for ($i = 0; $i < 24; $i++) {
		// couleur
		if (($i > 6) && ($i < 22)) {
			$bgc = '';
		} else {
			$bgc = ' bgcolor="#7798DB"';
		}
		// coché ?
		if (!in_array($i, $tab_coch)) {
			$chk = '';
		} else {
			$chk = ' checked="checked"';
		}
		echo '<td align="center"'.$bgc.'><input type="checkbox"'.$chk.' name="checkbox_id[]" value="'.$i.'"></td>'."\n\t";
	}
	?>
	</tr></table></td></tr>
	</table>
<p align="center"><font face="Arial" size="2" align="center">
<input type="submit" value="Calculer"></font></p>
<p align="center"><font face="Arial" size="2" align="center">
<input disabled type="text" name="tot" id="tot" size="10" value="<?php echo $tot; ?>"></font></p>
<br> </td><td width="7" background="#7798DB"></td></tr>
</table>
</div>
</table>
</td></tr>
</table>
</form>
</body></html>

A noter : j'ai eu la flemme de retoucher au tableau de mise en forme mais ce serait bienvenu Smiley lol !

A+
Ok merci ca fonctionne, mais !
Ben oui il y a un mais Smiley biggrin

Ce moins simple que je pensais ton code englobe les 24 checkbox
Mon but final est d'obtenir 3 resultats differents
1. Tout les checkbox cochés X ecl
2. Les checkbox 1 à 6 + 22 à 24 X ecl
3. Les checkbox 6 à 21 X ecl
Le but final est d'obtenir 3 type de consommation
24 heures avec un compteur normal
et 2 somme differente nuit jour avec un compteur bi-horaire.
Par la suite je multiplie encore les montant obtenu par le cout, pas simple comme tu vois.

Je vais bien relire ton code et essayer de travailler avec ca !
Mais je doute m'en sortir car je pense pas être assez experimenté !
Merci beaucoup

http://www.lescalaireducentre.be/pages/aquacalcul/consomation_testd.php

Marc
Modifié par lol2 (20 Jan 2008 - 19:03)
lol2 a écrit :
Mais je doute m'en sortir car je pense pas être assez experimenté !

Ce n'est pourtant pas une grosse modif Smiley cligne :
<?php
header('Content-type: text/html; charset=iso-8859-1');
$actuel = htmlspecialchars($_SERVER['PHP_SELF']);

$tab_coch = array();

if ($_POST) {
	$nb_coch = count($_POST['checkbox_id']);
	$ecl = !empty($_POST['ecl']) ? intval($_POST['ecl']) : 0;
	$conso_jour = 0;
	$conso_nuit = 0;
	for ($i = 0; $i < $nb_coch; $i++) {
		$num_case = $_POST['checkbox_id'][$i];
		$tab_coch[] = $num_case;
		if (($num_case > 6) && ($num_case < 22)) {
			$conso_jour += 1;
		} else {
			$conso_nuit += 1;
		}
	}
}
?>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		<title>Tarif Electricité</title>
		<style type="text/css">
		</style>
		<script type="text/javascript">
		function calculer() {

			var W3CDOM = document.createElement && document.getElementsByTagName;
			if(!W3CDOM) { return; }

			var ecl = document.getElementById('ecl').value;
			ecl = ecl * 1;
			
			oCases = document.getElementById('cases');
			cases = oCases.getElementsByTagName('INPUT');
			
			var conso_jour = 0;
			var conso_nuit = 0;
			for (j = 0; j < cases.length; j++) {
				if (cases[j].checked) {
					if ((j > 6) && (j < 22)) {
						conso_jour += 1;
					} else {
						conso_nuit += 1;
					}
				}
			}
			document.getElementById('nuit').value = ecl * conso_nuit;
			document.getElementById('jour').value = ecl * conso_jour;
			document.getElementById('tot').value = ecl * (conso_nuit + conso_jour);
		}
		</script>
	</head>
<body>
<form action="<?php echo $actuel; ?>" method="post" onSubmit="calculer(); return false;">
	<p>
	<table width="100%" cellpadding="0" cellspacing="0" align="center">
		<tr><td class="leftside" width="4"> </td><td bgcolor="#9cbcec">
	
	<table cellspacing="0" cellpadding="0" width="100%" border="0" align="center" style="border-bottom: 1px solid #FFFFFF;" height="343">
	<tr class="tdbanniere"><td> <div id= "clickInText">
	<table cellspacing="0" cellpadding="0" border="0" align="center" width="100%">
	
	<tr><td width="12" background="#7798DB"> </td>
	<td bgcolor="#ddebff"><br>
	<br>
	
	<table align="center" width="80%" style="border: 1px solid #7798DB;" cellspacing="1" cellpadding="6" class="titrenews">
	<tr><td bgcolor="#7798DB" align="center" colspan="2">Puissances et dures</td></tr><tr><td bgcolor="#A5C2EF" nowrap><b>Eclairage 
	1</b></td><td bgcolor="#A5C2EF">
	<input type="text" name="ecl" id="ecl" value="<?php echo $ecl; ?>" size="10" maxlength="7">Watts</td></tr>
	<tr><td bgcolor="#A5C2EF" style="border-bottom: 1px solid #7798DB;" nowrap>Plage horaire(1)</td>
	<td bgcolor="#A5C2EF"style="border-bottom: 1px solid #7798DB;"><table cellspacing="0" cellpadding="0"><tr>
	<?php
	for ($i = 0; $i < 24; $i++) {
		if (($i > 6) && ($i < 22)) {
			$bgc = '';
		} else {
			$bgc = ' bgcolor="#7798DB"';
		}
		echo '<td align="center"'.$bgc.'><font size="1">'.$i.'</font></td>'."\n\t";
	}
	?>
</tr><tr id="cases">
	<?php
	for ($i = 0; $i < 24; $i++) {
		// couleur
		if (($i > 6) && ($i < 22)) {
			$bgc = '';
		} else {
			$bgc = ' bgcolor="#7798DB"';
		}
		// coché ?
		if (!in_array($i, $tab_coch)) {
			$chk = '';
		} else {
			$chk = ' checked="checked"';
		}
		echo '<td align="center"'.$bgc.'><input type="checkbox"'.$chk.' name="checkbox_id[]" value="'.$i.'"></td>'."\n\t";
	}
	?>
	</tr></table></td></tr>
	</table>
<p align="center"><font face="Arial" size="2" align="center">
<input type="submit" value="Calculer"></font></p>
<p align="center"><font face="Arial" size="2" align="center">nuit :
<input disabled type="text" name="nuit" id="nuit" size="10" value="<?php echo $conso_nuit * $ecl; ?>"></font></p>
<p align="center"><font face="Arial" size="2" align="center">jour :
<input disabled type="text" name="jour" id="jour" size="10" value="<?php echo $conso_jour * $ecl; ?>"></font></p>
<p align="center"><font face="Arial" size="2" align="center">total :
<input disabled type="text" name="tot" id="tot" size="10" value="<?php echo ($conso_nuit + $conso_jour) * $ecl; ?>"></font></p>
<br> </td><td width="7" background="#7798DB"></td></tr>
</table>
</div>
</table>
</td></tr>
</table>
</form>
</body></html>
Non c'est tous simple !
Franchement ! j'y serais surement arrivé, car je suis obstiné, mais quand ?

Merci 1000 X
Heyoan

Marc