[php] tableaux avec buttons radio

Résolu
saad0n -  
fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. Defouille Messages postés 404 Statut Membre 54
     
    Bonjour,

    que veux tu calculer exactement, et à partir de qu'elles données ?
    et pourquoi utiliser des boutons radios ? choisir des années ?
    0
    1. saad0n
       
      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
    2. saad0n
       
      désolé si le tableau n'est pas visible mais jpense que l'idée est claire
      0
  2. fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   74
     
    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
    1. saad0n
       
      merci fixtaa
      c'est exactement ca que je veux
      je vais tester ca et je tiens au courant

      merci de ta reponse
      0
    2. Defouille Messages postés 404 Statut Membre 54
       
      Désolé j'ai posté après sans voir que tu venais de poster ^^
      0
    3. saad0n
       
      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
    4. fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   74
       
      fais un echo de $tot pour voir le résultat, ca vient ptet de la
      0
    5. saad0n
       
      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
  3. Defouille Messages postés 404 Statut Membre 54
     
    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
    1. saad0n
       
      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
    2. Defouille Messages postés 404 Statut Membre 54
       
      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
    3. saad0n
       
      oué ca va mieux déjà
      je vais fairfe tes modifs et je reviens à toi
      merci en tout cas
      0
    4. saad0n
       
      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
    5. Defouille Messages postés 404 Statut Membre 54
       
      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