Comment tester résultat requête nul

Résolu
razily Messages postés 285 Statut Membre -  
razily Messages postés 285 Statut Membre -
Bonjour,
voilà ce problème semble facile ; mais j'ai passé énormément du temps pour trouver la solution ; en fait voilà y a une requête qui recherche le nom et prénom d'une personne
et si le nom n'y figure pas dans la base ; dans cet exemple le nom kim n'existe pas
et normalement le résultat devra être :
 echo 'aucun kim dans la base '."<br />";

mais y l'écran affiche une page blanche

<?php 



 $cnx = odbc_connect( "DSN_personnes", "root", "" ) or die("Impossible de se connecter à la bas de donn&eacutee") ; 
  $sql = "SELECT * FROM [perso nnes] where nom like 'kim' "; 
   
   
  

$requete = odbc_do($cnx, $sql) ; 



  
   
  
    //affichage des données: 
    while( $result = odbc_fetch_object( $requete ) ) 
    { 
   
  if(!empty($result->nom)) 
  { 
  
       echo $result->nom." ".$result->prenom." <br>"; 
        
        } 
        else 
        { 
    
    echo 'aucun kim dans la base '."<br />"; 
  } 
     

  } 




?> 


j'ai déjà essayé :
if(!empty($result))
		{
	
       echo $result->nom." ".$result->prenom." <br>";
       
        }
        else
        {
			
			 echo 'aucun kim dans la base '."<br />";
		}





merci d'avance pour vos réponses

4 réponses

  1. Ametisse
     
    Peut être faut-il tester une égalité avec la chaîne "".

    ou alors peut être que
    $sql = "SELECT * FROM [perso nnes] where nom like 'kim' ";
    contient un espace de trop : [perso nnes] ?
    0
  2. Manny78
     
    Faut que tu fasse un mysql_num_rows($requete)
    Il te retourne le nombre de résultats, si il est égal a zéro, tu fais afficher le message, sinon tu continu avec ton code :

    while( $result = odbc_fetch_object( $requete ) ) 
        { 
       
    ........
    0
    1. Manny78
       
      Jme suis trompé, tu utilise odbc, il faut donc remplacer mysql par odbc !
      0
  3. razily Messages postés 285 Statut Membre 2
     
    j'ai suivi ce que Manny78 a répondu

    $requete = odbc_do($cnx, $sql) ; 
    
    $affected = odbc_num_rows($requete); 
    
    
    if($affected==-1) 
    { 
       echo 'aucun kim dans la base '."<br />"; 
      
    } 
    
    else 
    { 
      
    
    
    
      
       
      
        //affichage des données: 
        while( $result = odbc_fetch_object( $requete ) ) 
        { 
    
    
    


    je crois qu'il y a un problème ;
    on entre jamais dans le else mais si le nom existe
    0
  4. razily Messages postés 285 Statut Membre 2
     
    en fait j'ai trouvé ce qui semble être la solution et çà marche

    <?php
    
    
    
    
     $cnx = odbc_connect( "DSN_personnes", "root", "" ) or die("Impossible de se connecter à la bas de donn&eacutee") ;
      $sql = "SELECT nom , prenom ,count(nom) as nombre  FROM [perso nnes] where nom like 'kim'
      group by nom , prenom ";
      
      
     
    
    $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 ) )
        {
    		
    		//if($result!=-1)
    		{
    	
           echo $result->nom." ".$result->prenom." <br>";
           
            
           
            }
    
    }
    
    
    
    
    


    en tout cas merci à tous !!
    0