Menu deroulant dynamique

Eléphant du PHP | 158 Messages

02 mars 2006, 11:40

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
°°°Darkbibou°°°

Avatar du membre
ViPHP
ViPHP | 3008 Messages

02 mars 2006, 11:56

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
	}

}

Eléphant du PHP | 158 Messages

02 mars 2006, 12:01

Merci je vais essayer :D
°°°Darkbibou°°°

Eléphant du PHP | 158 Messages

02 mars 2006, 12:35

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é :(
°°°Darkbibou°°°

Eléphanteau du PHP | 15 Messages

02 mars 2006, 12:38

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
	}

}

Avatar du membre
ViPHP
ViPHP | 3008 Messages

02 mars 2006, 12:39

Mmmhhh je ne suis pas tout. Quels résultats ne sont pas affichés ?

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

Eléphant du PHP | 312 Messages

02 mars 2006, 12:47

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.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

02 mars 2006, 12:49

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";
}

Eléphant du PHP | 158 Messages

02 mars 2006, 12:56

Je change mon code et je fait des test :)
°°°Darkbibou°°°

Eléphant du PHP | 158 Messages

02 mars 2006, 13:20

Avec le dernier code que vous m'avez donné tout semble fonctionner correctement :D

Merci beaucoup
°°°Darkbibou°°°