Comment tester résultat requête nul
Résolu
razily
Messages postés
285
Statut
Membre
-
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 :
mais y l'écran affiche une page blanche
j'ai déjà essayé :
merci d'avance pour vos réponses
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ée") ;
$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
-
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] ? -
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 ) ) { ........ -
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 -
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ée") ; $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 !!