[php] tableaux avec buttons radio

Résolu/Fermé
saad0n - 26 juil. 2010 à 11:08
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
- 27 juil. 2010 à 15:01
Bonjour,
J'ai un tableau résultant d'une requête mysql .Voila un extrait du code ( rien de bien compliqué ):
	<table align="center" align="center">

	<tr align="center" ><TH align="center" >Libéllé tronçon</TH ><TH align="center" >Longueur prévisionnelle</TH><TH align="center" >Coût prévisionnel</TH></tr>   

	<?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);
	
	$table = $_GET['table'];
	$previsionnel=$table.'_previsionnel';

	$result = mysql_query("SELECT * FROM $previsionnel ");
	while ($table_arcachon_previ = mysql_fetch_assoc($result))
{
	echo '<tr align="center" ><td align="center" >'.$table_arcachon_previ['libelle_troncon'].'</td>';
	echo '<td align="center" >'.$table_arcachon_previ['longueur_previsionnelle'].'</td>';
	echo '<td align="center" >'.$table_arcachon_previ['cout_previsionnel'].'</td></tr>';
	
	
}
	
		
mysql_close($link);
?>
</table>
	   


ce que je voudrais c'est associer à chaque ligne un bouton radio pour pouvoir calculer par exemple le cout previsionnel de plusieurs entrées sélectionnées .
Si quelqu'un a une idée je suis preneur
Merci

3 réponses

Defouille
Messages postés
388
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2011
54
26 juil. 2010 à 11:11
Bonjour,

que veux tu calculer exactement, et à partir de qu'elles données ?
et pourquoi utiliser des boutons radios ? choisir des années ?
0
salut

je veux que l'utilisateur puisse calculer le le cout previsionnel de plusieurs lignes. Voila un exemple : imaginons que je genere le tableau suivant :
libelle longueur cout
a 20 1000
b 10 2000
c 5 3000
d 15 1500
l'utilisateur peut choisir de calculer le cout previsionnel de a+b+d ce qui doit lui donner 4500
J'espere que c'est plus clair
0
désolé si le tableau n'est pas visible mais jpense que l'idée est claire
0
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
73
26 juil. 2010 à 11:33
Bon voila, tout n'est pas fait mais tu as les grandes lignes :
<form name="radio" method="post" action=""> // AJOUT 
	<table align="center" align="center">

		<tr align="center" >
			<TH align="center" >Libéllé tronçon</TH >
			<TH align="center" >Longueur prévisionnelle</TH>
			<TH align="center" >Coût prévisionnel</TH>
			<TH align="center" >Checkbox</TH>// AJOUT 
		</tr>   

		<?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);

			$table = $_GET['table'];
			$previsionnel=$table.'_previsionnel';

			$result = mysql_query("SELECT * FROM $previsionnel ");
			$i = 0;
			while ($table_arcachon_previ = mysql_fetch_assoc($result)){
				echo '<tr align="center" ><td align="center" >'.$table_arcachon_previ['libelle_troncon'].'</td>';
				echo '<td align="center" >'.$table_arcachon_previ['longueur_previsionnelle'].'</td>';
				echo '<td align="center" >'.$table_arcachon_previ['cout_previsionnel'].'</td></tr>';
				echo '<td align="center" ><input name="'.$i.'" type="checkbox" value="'.$table_arcachon_previ['id'].'"></td></tr>'; // AJOUT 
				$i++;
			}
			mysql_close($link);
		?>
	</table>
</form> // AJOUT 

----------------------TRAITEMENT--------------------------
<?php 
// on compte le nombre de ligne possible pour connaitre le nombre de name d'input possible
$sql = "SELECT COUNT(*) FROM table"; 
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$row = mysql_fetch_row($req);
$tot = $row[0];

$i = 0;
// on prépare le début de la requête
$rqt = "SELECT * FROM table WHERE ";

while ($i != $tot){
	if (isset ($_POST['$i']){
		$id = $_POST['$i'];
		$rqt .= "id='$id' AND ";
	}
	$i++;
}

$rqt .= ";";
// Expression régulière pour éviter une requête de la forme " WHERE id='2' AND id ='4' AND; "
// je connais pas bien les fonctions d expression régulieres sous php mais en gros ta regexp doit donner ca : /AND;/;/ Je remplace AND; par ;.
echo $rqt;

mysqlquery ($rqt);

?>
0
merci fixtaa
c'est exactement ca que je veux
je vais tester ca et je tiens au courant

merci de ta reponse
0
Defouille
Messages postés
388
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2011
54
26 juil. 2010 à 11:49
Désolé j'ai posté après sans voir que tu venais de poster ^^
0
je reviens a toi . j'ai mis ta partie TRAITEMENT dans une nouvelle page que j'ai mise comme cible pour mon formulaire
 action="traitement.php" 
. j'ai ajouté un bouton submit à la premiere page.
lorsque je coche les entrées qui m'interessent et que je valide , on m'affiche :
SELECT * FROM arcachon_previsionnel WHERE ;
. apparement la boucle while n'est pas parcourue.
je ne sais pas pourquoi
0
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
73
26 juil. 2010 à 14:42
fais un echo de $tot pour voir le résultat, ca vient ptet de la
0
ca me donne 5 ce qui correspond au nombre de mes entrées
par contre quand je fais un echo $id dans la boucle ca me donne rien ( tout comme un var_dump )
0
Defouille
Messages postés
388
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2011
54
26 juil. 2010 à 11:45
Tu peux le faire, mais il te faut des checkbox et non pas des radios boutons

voila un bout de code qui fait ce que tu veux, j'ai supposé que tes enregistrements ont un identifiant dans la base :

<?php
$s = "";
echo '<table>\n';
$result = mysql_query("SELECT * FROM $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" >\n';
	echo '<td align="center" >'.$table_arcachon_previ['libelle_troncon'].'</td>\n';
	echo '<td align="center" >'.$table_arcachon_previ['longueur_previsionnelle'].'</td>\n';
	echo '<td align="center" id="td_cout_'.$table_arcachon_previ['id'].'">'.$table_arcachon_previ['cout_previsionnel'].'</td>\n';
	echo '<td align="center" ><input id="check_box_'.$table_arcachon_previ['id'].'" type="checkbox" checked="checked"/></td>\n';
	echo '</tr>\n';
}
echo '<tr align="center" >\n';
echo '<td colspan="4" id="td_total">&nbsp;</td>\n';
echo '</tr>\n';
echo '<table>\n';
echo '<script type="text/javascript">;
	var liste_troncon = new Array();
	liste_troncon = ['.$s.'];
	function calcul_total()
	{
		var total=0;
		for(var i=0; i<liste_troncon.length ;i++)
		{
			if(document.getElementById("check_box_"+liste_troncon[i]).checked)
				total+=document.getElementById("td_cout_"+liste_troncon[i]).innerHTML ;
		}
		document.getElementById("td_total"+liste_troncon[i]).innerHTML = total ;
	}
</script>\n';
?>


A modifier et ajuter pour ton code :)
0
merci pour ton code mais ca marche pas pour moi .
ca m'affiche beaucoup de
/n
/n
a la suite. Et au chargement les cases sont deja cochées . d'une autre part je ne comprends pas pourquoi il n'y a pas de bouton submit dans ton code. Je suis désolé si j'en demande trop mais j'ai pas trop compris comment ton code marchait :) donc si tu pouvais m'aider merci
0
Defouille
Messages postés
388
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2011
54
26 juil. 2010 à 14:38
En fait j'ai ajouté des checkbox sur chaque ligne. Deja cochées car au début le total de toute les lignes est calculé.

Il faut que tu ajoutes un bouton qui appelle la fonction javascript "calcul_total". Pas besoin de recharger la page pour le calcul, le javascript se base sur les informations déjà présente dans la page.

Pour les \n, c'est vrai il faut remplacer les ' par des " quand il y a des echos, sinon les sauts à la ligne (\n) ne sont pas fait.
(Tu peux aussi les enlever, mais si quelqu'un regarde ton code généré, ça sera pas beau à voir :p)

Tu comprends mieux ? ^^
0
oué ca va mieux déjà
je vais fairfe tes modifs et je reviens à toi
merci en tout cas
0
j'ai fais quelques modifs que je te montrerai plus tard .
question : comment je fais pour afficher le resultat de calcul_modif ??? un echo ne marche pas pcq c'est du javascript
0
Defouille
Messages postés
388
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2011
54
26 juil. 2010 à 15:07
La fonction fait :
document.getElementById("td_total"+liste_troncon[i]).innerHTML = total ;

petite erreur de ma part il faut modifier
document.getElementById("td_total").innerHTML = total ;

Cela affichera automatique le résultat dans la cellule td_total.
0