comment tester si le résultat de la requête est nul [résolu]

comment tester si le résultat de la requête est nul [résolu] - PHP - Programmation

Marsh Posté le 15-06-2010 à 17:46:28    

Bonjour ,
 
j'exploite une base access donc j'utilise ODBC  
 
dans ce code j'essai d'afficher le nom et prénom d'une personne sauf que si cette personne n'existe pas dans la base on affiche  
aucun nom (ici kim ) dans la base et on finit le traitement  
j'ai fais ce code et testé mais on entre jamais dans la partie else au cas où le nom existe  
 

Code :
  1. <?php
  2. $cnx = odbc_connect( "DSN_personnes", "root", "" ) or die("Impossible de se connecter à la bas de donn&eacutee" ) ;
  3.   $sql = "SELECT nom , prenom ,count(nom) as nombre  FROM [perso nnes] where nom like 'kim'
  4.   group by nom , prenom ";
  5.  
  6.  
  7. $requete = odbc_do($cnx, $sql) ;
  8. $affected = odbc_num_rows($requete);
  9. echo $affected."<br />";
  10. if($affected==-1)
  11. {
  12.   echo 'aucun kim dans la base '."<br />";
  13. }
  14. else
  15. {
  16.     //affichage des données:
  17.     while( $result = odbc_fetch_object( $requete ) )
  18.     {
  19. // if(empty($result))
  20.  {
  21.        echo $result->nom." ".$result->prenom." <br>";
  22.      
  23.        
  24.      
  25.         }
  26.     //    else
  27.         {
  28.  //  echo 'aucun kim dans la base '."<br />";
  29.  }
  30.              $nombre += $result->nombre ;
  31.  }
  32. }
  33.  echo 'le nombre est ' .$nombre."<br />";
  34. odbc_close( $cnx); // ferme la connexion


 
est ce quelqu'un a une idée ??
 
merci d'avance  :jap:


Message édité par dovic31 le 17-06-2010 à 08:38:17
Reply

Marsh Posté le 15-06-2010 à 17:46:28   

Reply

Marsh Posté le 15-06-2010 à 17:54:28    

Ben tout est dans la doc ici. Ca retourne -1 en cas d'erreur, mais je ne vois pas pourquoi il y aurait une erreur sql dans le cas ou il n'y a pas d'enregistrements, mais plutot 0 lignes retournees.
donc

Code :
  1. if($affected==0)


Reply

Marsh Posté le 15-06-2010 à 22:35:54    

par contre dans ce code  avec kim comme test
 

Code :
  1. echo $affected."<br />";    // affiche -1
  2. if($affected==0) // on entre pas dans cette boucle  
  3. {
  4.   echo 'aucun kim dans la base '."<br />";
  5. }


 
en fait c'est testé ; le problème c'est qu'il retourne tout le temps -1 quelque soit la situation  

Code :
  1. echo $affected."<br />";    // affiche -1


Message édité par dovic31 le 15-06-2010 à 22:39:48
Reply

Marsh Posté le 17-06-2010 à 08:36:15    

j'ai trouvé voici la réponse  
 
<code>
$requete = odbc_do($cnx, $sql) ;
 
// echo 'la requete '. $requete ."<br />";
 
  $affected = odbc_fetch_row($requete);
 
  // echo $affected."<br />";
 
 
   if($affected!=1)
{
    echo 'aucun kim dans la base '."<br />";
 
}
 
     else
{
 
 
         // si on ne met pas cette ligne , il affiche le suivant sans passer à la première valeur  
       $affected = odbc_fetch_row($requete,0);
 
   
 
    //affichage des données:
    while( $result = odbc_fetch_object( $requete ) )
    {
</code>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed