[SQL] Condition si requete vide

Résolu
finaldofus Messages postés 2 Statut Membre -  
finaldofus Messages postés 2 Statut Membre -
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

  1. joomliner Messages postés 93 Statut Membre 36
     
    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
  2. mpmp93 Messages postés 2931 Date d'inscription   Statut Membre Dernière intervention   1 343
     
    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
  3. finaldofus Messages postés 2 Statut Membre
     
    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