Page 1 sur 1

Menu deroulant dynamique

Posté : 02 mars 2006, 11:40
par Darkbibou
Bonjour a tous :)

J'ai créé un menu déroulant se remplissant à partir des données d'une base MySQL à l'aide de requête spécifique générée de manière automatique.

Mon problème réside dans le traitement du cas ou ma requête de sélection ne trouve rien. J'aimerai que le menu déroulant présente quand même un choix "No results". J'ai essayé comme ceci mais cela ne donne rien :(

Quelqu'un aurait une solution à me proposer ?
<?php	
							
//connexion au SGBD:
$connexion2= mysql_connect('localhost','root','')or die('Connexion au serveur impossible');
// selection de la base à remplir:	
mysql_select_db("triannot_link")or die("Impossible de se connecter à la base de données");
								
$resultat_sql_select_tri2= mysql_query($sql_select_tri2);
								
echo "<select name='tri_2'>";
																						
while($aff_select_tri2 = mysql_fetch_row($resultat_sql_select_tri2)){ 
								
	if(!$aff_select_tri2){
								
	       echo "<option value='No_data'>No results</option>";
									
	}else{
										
		echo"<option>".$aff_select_tri2[0]."</option>";	
										
	}
								
}
							
echo "</select>";

....
Merci d'avance

Posté : 02 mars 2006, 11:56
par charabia
Il ne faut pas que tu l'intègres dans la boucle :
if (!mysql_fetch_row($resultat_sql_select_tri2)) {

echo "Aucun enregitrement";

}

else {

	while($aff_select_tri2 = mysql_fetch_row($resultat_sql_select_tri2)){
	//ton code
	}

}

Posté : 02 mars 2006, 12:01
par Darkbibou
Merci je vais essayer :D

Posté : 02 mars 2006, 12:35
par Darkbibou
Cela regle bien certain cas où il n'y avait aucun résultat neanmoins si je fait a ta méthode certains résultats qui existe ne sont jamais affichés.

Je suis sure de la requête executée car elle donne des résultat dans phpmyadmin.

Je me demande pourquoi bien qu'il rentre dans le else de ton if le contenu du while n'est pas affiché :(

Posté : 02 mars 2006, 12:38
par KooKiz
Si je ne m'abuse :
if (!mysql_fetch_row($resultat_sql_select_tri2)) {

echo "Aucun enregitrement";

}

else {

	while($aff_select_tri2 = mysql_fetch_row($resultat_sql_select_tri2)){
	//ton code
	}

}
On perd un résultat lors du premier test avec mysql_fetch_row non ? Il faudrait plutôt faire quelque chose comme :
if (mysql_num_rows($resultat_sql_select_tri2) == 0) {

echo "Aucun enregitrement";

}

else {

	while($aff_select_tri2 = mysql_fetch_row($resultat_sql_select_tri2)){
	//ton code
	}

}

Posté : 02 mars 2006, 12:39
par charabia
Mmmhhh je ne suis pas tout. Quels résultats ne sont pas affichés ?

Tu n'as pas oublié une accolade quelque part ?

Posté : 02 mars 2006, 12:47
par Hermès
Je crois que Kookiz a raison, lorsque tu fais le test pour savoir s'il y a un résultat et qu'il y en a effectivement un, tu vas perdre la première ligne de résultat vu que tu vas enchaîner un mysql_fetch_row (pour le test) avec le mysql_fetch_row de la boucle.

Posté : 02 mars 2006, 12:49
par charabia
Ah oué pas mal d'apprendre ça :) Darkbidou tu pourras nous confirmer tout ça ?

Sinon pour ton problème tu peux utiliser la fonction mysql_num_rows en plus :
$compte = mysql_num_rows($resultat_sql_select_tri2);

if($compte>0) {
	while($aff_select_tri2 = mysql_fetch_row($resultat_sql_select_tri2)) {
	//ton code
	}
}
else {
	echo "aucun résultat";
}

Posté : 02 mars 2006, 12:56
par Darkbibou
Je change mon code et je fait des test :)

Posté : 02 mars 2006, 13:20
par Darkbibou
Avec le dernier code que vous m'avez donné tout semble fonctionner correctement :D

Merci beaucoup