[SQL] Condition si requete vide

Résolu/Fermé
finaldofus Messages postés 2 Date d'inscription samedi 1 août 2009 Statut Membre Dernière intervention 21 juin 2011 - Modifié par finaldofus le 21/06/2011 à 06:57
finaldofus Messages postés 2 Date d'inscription samedi 1 août 2009 Statut Membre Dernière intervention 21 juin 2011 - 21 juin 2011 à 17:06
Bonjour,

J'aimerais faire une condition pour différencier le cas où il y a ou pas une réponse à ma requête:

$data3 = mysql_query('SELECT * FROM soonc_commentaire WHERE lieu="'.$boite.'"');  

while($ElmCom = mysql_fetch_array($data3)){  
   if($ElmCom){  
      // il y a au moins une réponse.  
   }else{  
      // il n'y a pas de réponse.  
   }     
}  


J'ai essayé if($ElmCom>0) et if(isset($ElmCom)) et if(!empty($ElmCom)) rien ne marche donc je dois pas viser au bon endroit...

Help me plz!

3 réponses

joomliner Messages postés 89 Date d'inscription jeudi 9 juin 2011 Statut Membre Dernière intervention 1 août 2016 36
21 juin 2011 à 07:11
Valeurs de retour de mysql_query() prises dans le manual php


Pour les requêtes du type SELECT, SHOW, DESCRIBE, EXPLAIN et les autres requêtes retournant un jeu de résultats, mysql_query() retournera une ressource en cas de succès, ou FALSE en cas d'erreur.

Pour les autres types de requêtes, INSERT, UPDATE, DELETE, DROP, etc., mysql_query() retourne TRUE en cas de succès ou FALSE en cas d'erreur.

La ressource de résultat retournée doit être passée à la fonction mysql_fetch_array(), et les autres fonctions permettant d'explorer le résultat des tables, pour accéder aux données retournées.

Utilisez mysql_num_rows() pour trouver le nombre de lignes retournées pour une requête du type SELECT ou mysql_affected_rows() pour trouver le nombre de lignes affectées par les requêtes du type DELETE, INSERT, REPLACE, ou UPDATE.

mysql_query() échouera et retournera FALSE si l'utilisateur n'a pas les autorisations nécessaires pour accéder à la (aux) table(s) référencée(s) par la requête. 



Donc, suivant la lancée de votre requête..
un :

if ($data3)  {
 // requête effectuée avec succès... Vrai!
// Ensuite pour connaître le nombre d'enregistrement retourné :

 echo mysql_num_rows($data3);

}
else // Sinon
{
   // message d'erreur / traitement dans le cas ou la requête n'a pas       fonctionné
}


Bonne journée,
JoomLiner
1
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
21 juin 2011 à 09:49
Bonjour,

Remplacer

SELECT * FROM soonc_commentaire WHERE lieu="'.$boite.'"'

par

SELECT SQL_CALC_FOUND_ROWS * FROM soonc_commentaire WHERE lieu="'.$boite.'"'

et faire une seconde requête avant de traiter les données:

SELECT FOUND_ROWS();

Cette seconde requête renvoie le nombre de fiches trouvées sans avoir à traiter les données récupérées. S'il n'y a pas de données, on ne traite rien. Dans le cas contraire, on traite...


A+
0
finaldofus Messages postés 2 Date d'inscription samedi 1 août 2009 Statut Membre Dernière intervention 21 juin 2011
21 juin 2011 à 17:06
Merci à vous deux.
J'ai choisis la première solution qui me parait plus simple:

if(mysql_num_rows($data3)){
while($ElmCom = mysql_fetch_array($data3)){

// 1 ou plusieurs réponse

}
}else{

// Pas de réponse

}
0