Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/01/2008, 00h29   #1
Futur Membre du Club
 
Inscription : novembre 2004
Messages : 139
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 139
Points : 18
Points : 18
Par défaut [SQL] Déterminer si le résultat d'une requête est vide ou non

bonsoir,

voici tout d'abord mon code:
Code :
1
2
3
4
5
6
7
8
9
 
while( $result = mysql_fetch_array( $requete ) ) {
			         if (empty($result["Id"])){
			echo ("<option value=\"rien\">rien</OPTION>");
						}
					else {
						echo ("<option value=\"".$result["Id"]."\">".$result["marque"].", ".$result["type"].", ".$result["modele"]."</option>");
			        }
		        }
le principe me semble assez simple mais je peine à le mettre en place

la boucle me permet donc de créer une liste déroulante reprenant chaque occurrence trouvée dans ma base selon une requete sql .

je veux corser un peu les chose en testant ma requete sql ($result) et mentionner dans ma liste déroulante, si ma requete est vide: "rien"

ca focntionne très bien quand ma requete sql contient des occurrences (elles s'affichent), par contre quand la requete ne contient rien, ben ma liste reste deseperement vide.

je suis perdu

@ votre bon coeur msieur, dame

Merci

PS: mon ideal était de faire, d'abord un "if" puis si ma requete était non vide, alors faire une while pour remplir la liste déroulante. Dans le cas ou elle était vide, créer une boite texte avec marqué "rien" dedans. mais marche encore moins bien.
khamett est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 00h37   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
La condition doit être placée hors de l'itération et en se basant sur le résultat de la fonction mysql_num_rows (retourne le nombre de résultats) :
Code :
1
2
3
4
5
6
7
if (mysql_num_rows($requete) == 0) {
	echo '<option value="rien">rien</option>';
} else {
	while ($result = mysql_fetch_assoc($requete)) {
		echo '<option value="'.$result['Id'].'">'.$result['marque'].', '.$result['type'].', '.$result['modele'].'</option>';
        }
}
Si j'ai bien compris l'affaire.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2008, 21h21   #3
Futur Membre du Club
 
Inscription : novembre 2004
Messages : 139
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 139
Points : 18
Points : 18
bonsoir,

merci julp, pour ta réponse, ca marche nickel.

je n'avais pas pensé à utilisé "mysql_num_rows".

Par contre je ne vois pas la différence entre
- mysql_fetch_assoc et
- mysql_fetch_array

il y a une subtilité entre les 2 mais je ne vois pas pourquoi utiliser l'un plutot que l'autre.

Merci
khamett est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2008, 21h53   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Comme expliqué dans leur documentation respective mysql_fetch_assoc retourne chaque résultat sous la forme d'un tableau associatif alors que mysql_fetch_array les renvoie, par défaut, sous la forme d'un tableau associatif et d'un tableau numériquement indexé. Le comportement de cette dernière peut être modifié en jouant sur son deuxième paramètre facultatif (si valeur MYSQL_ASSOC, elle se comportera comme mysql_fetch_assoc et avec MYSQL_NUM, elle se comportera comme mysql_fetch_row).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h08.


 
 
 
 
Partenaires

Hébergement Web