encore un problème de liste dynamique liée à sql :)

Etchoum
Invité n'ayant pas de compte PHPfrance

08 sept. 2005, 11:43

Bonjour à tous!

Voilà, cela fait plusieurs jours (eh oui...) que je me casse la tête sur ce problème, sans en trouver la solution... J'ai fouillé sur le web, ici même, la FAQ tout ça, mais impossible de mettre la main sur une liste unique renvoyant les champs sql d'une des optiosn de la liste( pas très clair?).

En gros, j'ai une liste déroulante qui affiche les différents materiels proposés dans la bdd. Jusque là, facile. Une fois un materiel choisi, on valide sur le petit bouton, et là, normalement, devraient s'afficher les caractéristiques de l'objet. Mais en fait non... Impossible de les faire s'afficher, au mieux je rafraichi la page...

Je mets mon code juste en dessous, si quelqu'un trouve la solution... il aura toute ma gratitude :D

ps : pour info, id = clé primaire, le numéro unique de chaque materiel (on sait jamais^^).

//Présentation du matériel disponible
		echo '<u>Voici le matériel que nous vous proposons :</u>';
	include "connect.php";	
	/* création d'un select liste dynamique en liaison avec la table materiel de la BDD */
	$sql= "SELECT * FROM `materiel` ORDER  BY `tarif_mat` ";
	$req=mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());	
	echo '<p><table class="table">';
	echo '<form method="post" action="materiel.php">';
	echo '<tr><td><select name="liste" class="liste">';	
	$nb=1;  
	while($ligne = mysql_fetch_array($req)){	
	echo '<option value="'.$nb.'">'.$ligne['type_mat'];
	$nb++;
	}		
	echo $ligne['id'];
	echo '</select>';
	echo '<td></td><td></td><td align="center"><input type="submit" value="Valider">';	
	echo '</tr></form></table></p>';			
	
		$nb=1;  // variable du compteur utilisé pour le matériel
		$count = ("SELECT COUNT `id` FROM `materiel`");
	while($nb<$count){
		$nb++; //on incrémente la boucle while	
	}  //fin du while

	// on créé la requête SQL pour trouver le matériel
	$sql = ("SELECT * FROM `materiel` WHERE 'id`=`$nb`");	
	$matos = mysql_query($sql) or die('Erreur SQL sur sql!<br>'.$sql.'<br>'.mysql_error());	
	
	//On vérifie si le résultat de la requête est pas vide
	if(mysql_affected_rows()>0){
	echo '<h3><u>materiel choisi : '.$nb.'</u></h3>';		
	echo '<table class="table" border=0>';	
	
	$nbmatos=mysql_num_rows($matos);			
	
	for ($i=0;$i<$nbmatos;$i++){  //DEBUT FOR
			
		/***** Boucle qui affiche les caractéristiques du matériel choisi ****/	
		$type_mat=mysql_result($matos,$i,"type_mat");
		$tarif_mat=mysql_result($matos,$i,"tarif_mat");
		$descr_mat=mysql_result($matos,$i,"descr_mat");   
		//Affichage des infos
		echo '<tr><td width="250"><b>matériel : '.$type_mat.'</b><td width="80" align="center">'.$descr_mat.
		'<td width="80" align="center">coeff '.$tarif_mat.'</tr>';
		
	}	//fin du for
	echo '</table>';
	} // fin du if(mysql_affected_rows()>0)
	else {echo 'Pas de résultat pour le matériel numéro '.$nb.'<br><br>';}
	

	
	mysql_close();	
	?>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 sept. 2005, 13:34

Tu le dis toi meme:
ps : pour info, id = clé primaire, le numéro unique de chaque materiel (on sait jamais^^).
Alors pourquoi ne pas t'en servir :wink:
 /* création d'un select liste dynamique en liaison avec la table materiel de la BDD */
    $sql= "SELECT * FROM `materiel` ORDER  BY `tarif_mat` ";
    $req=mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());    
    echo '<p><table class="table">';
    echo '<form method="post" action="materiel.php">';
    echo '<tr><td><select name="liste" class="liste">';    
    
    while($ligne = mysql_fetch_array($req))
   {    
        echo '<option value="'.$ligne['id'].'">'.$ligne['type_mat'];   
    }          
    echo '</select>';
    echo '<td></td><td></td><td align="center"><input type="submit" value="Valider">';    
    echo '</tr></form></table></p>';     


Traitement du formulaire :
    // on créé la requête SQL pour trouver le matériel
    $sql = "SELECT * FROM materiel WHERE id='".$_POST['liste']."' ";    
    $matos = mysql_query($sql) or die('Erreur SQL sur sql!<br>'.$sql.'<br>'.mysql_error());
... //ici affichage des données

Etchoum
Invité n'ayant pas de compte PHPfrance

08 sept. 2005, 13:42

Merciii, ça marche! :)

bon en effet, c'était balot... mais bon... je l'aurai pas trouvé tout seul, la preuve;)

encore merci ^^