If & résultat requête
Résolu
maxireussite
Messages postés
405
Statut
Membre
-
maxireussite Messages postés 405 Statut Membre -
maxireussite Messages postés 405 Statut Membre -
Bonjour,
De guerre las, je vous soumets mon problème.
Dans mon script ci-dessous la condition else s'affiche quand il y a des résultats, par contre la 1ère condition de "if" n'affiche rien quand la requête ne donne rien.
Qqu'un peut-il me dire où ça coince ?
Merci.
De guerre las, je vous soumets mon problème.
Dans mon script ci-dessous la condition else s'affiche quand il y a des résultats, par contre la 1ère condition de "if" n'affiche rien quand la requête ne donne rien.
Qqu'un peut-il me dire où ça coince ?
Merci.
$sql = "SELECT *
FROM pt_trouve
LEFT JOIN pt_objets ON pt_objets.objet_id = pt_trouve.objet_id
LEFT JOIN pt_regions ON pt_regions.region_id = pt_trouve.region_id
WHERE date_trouve between '$datedebut1' and '$datefin1'
AND pt_trouve.region_id = '$region_id'
AND pt_trouve.categorie_id = '$categorie_id'";
//exécution de la requête:
$requete = mysql_query($sql) ;
//affichage des données:
while($result = mysql_fetch_array($requete))
{
if (($result) == NULL)
{
echo '<font color="red">Aucun résultat trouvé.</font>';
}
else
{
"<div align=\"center\">".$result->trouve_id."------".$result->region."------".$result->objet." <a href=\"modification2.php?idPersonne=".$result-> date_trouve."\">modifier
--- <a href=\"#\" onClick=\"confirme('".$result->trouve_id."')\" >supprimer</a></div>\n";
}
}
7 réponses
-
Bonjour
si ta requête ne retourne rien. ..tu n'entre pas dans le while.... donc ton if ne sert à rien à cet endroit.
-
-
Comme indiqué tu dois faire ton if avant ton while :
//affichage des données: if (!$result) { echo '<font color="red">Aucun résultat trouvé.</font>'; } else { while($result = mysql_fetch_array($requete)) { echo $result['region']; } }- Bon ! Toujours pas de résultat quand la requete est vide...
J'ai tenté d'adapter ton conseil. Je te mets le script au complet, merci de voir ce qui cloche.
Cdlt.
<?php if(isset($_POST['region_id'])) $region_id=$_POST['region_id']; else $region_id=""; if(isset($_POST['categorie_id'])) $categorie_id=$_POST['categorie_id']; else $categorie_id=""; if(isset($_POST['datedebut'])) $datedebut=$_POST['datedebut']; else $datedebut=""; if(isset($_POST['datefin'])) $datefin=$_POST['datefin']; else $datefin=""; $datedebut1 = $datedebut?date('Y-m-d', strtotime($datedebut)):date('Y-m-d'); $datefin1 = $datefin?date('Y-m-d', strtotime($datefin)):date('Y-m-d'); // On vérifie si les champs sont vides if(empty($region_id) OR empty($categorie_id) OR empty($datedebut) OR empty($datefin)) { echo '<font color="red">Tous les champs doivent être rempli.</font>'; echo"<html><br /><BR><a href=\"javascript:window.history.go(-1)\">Retour</a></html>"; } elseif(($region_id == 'vide') AND ($categorie_id == 'vide')) { echo '<font color="red">Les champs Région et Categorie doivent être remplis.</font>'; echo"<html><br /><BR><a href=\"javascript:window.history.go(-1)\">Retour</a></html>"; } else { //requête SQL: $sql = "SELECT * FROM pt_trouve LEFT JOIN pt_objets ON pt_objets.objet_id = pt_trouve.objet_id LEFT JOIN pt_regions ON pt_regions.region_id = pt_trouve.region_id WHERE date_trouve between '$datedebut1' and '$datefin1' AND pt_trouve.region_id = '$region_id' AND pt_trouve.categorie_id = '$categorie_id'"; //exécution de la requête: $requete = mysql_query($sql) ; //affichage des données: if (!$requete) { echo '<font color="red">Aucun résultat trouvé.</font>'; } else { while($result = mysql_fetch_array($requete)) { echo "<div align=\"center\">".$result->trouve_id."------".$result->region."------".$result->objet." <a href=\"modification2.php?idPersonne=".$result-> date_trouve."\">modifier --- <a href=\"#\" onClick=\"confirme('".$result->trouve_id."')\" >supprimer</a></div>\n"; } } }
-
-
Je pense qu'il serait bien de commencer par un print_r($result) dans le while pour voir ce que contient le réellement résultat.
C'est peut-être
if($result==FALSE) // au lieu de NULL
Sinon je pense que le print_r() ou var_dump() te donneront la solution :) -
Bonjour,
Et se profilera à l'horizon 2 nouveaux problèmes sur cette ligne:"<div align=\"center\">".$result->trouve_id."------".$result->region."------".$result->objet." <a href=\"modification2.php?idPersonne=".$result-> date_trouve."\">modifier --- <a href=\"#\" onClick=\"confirme('".$result->trouve_id."')\" >supprimer</a></div>\n";
Car il n'y a pas d'echo et d'autre part, faire un mysql_fetch_array() n'a aucun sens (hormis d'obtenir un joli message d'erreur PHP) si on veut afficher des objets comme par exemple $result->trouve_id
Cdlt. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Merci à tous pour vos pistes. Je prends le temps de voir tout cela.
-
Effectivement la condition sur $result est fausse (plus l'habitude de travailler avec l'api mysql) : $result vaut FALSE si la requête a échouée, sinon elle retourne dans tous les cas une variable ressource sur laquelle tu peux utiliser mysql_num_rows() pour récupérer le nombre de résultat, soit :
if (!$result) { echo 'Erreur sql : ' . mysql_error(); } elseif (mysql_num_rows($result) == 0) echo '<font color="red">Aucun résultat trouvé.</font>'; } else { while($result = mysql_fetch_array($requete)) { echo $result['region']; } }-
-
-
Correction : il s'agit bien de la variable $requete et non $result.
if (!$requete) { echo 'Erreur sql : ' . mysql_error(); } else { $nb_resultats = mysql_num_rows($requete); if ($nb_resultats == 0) { echo '<font color="red">Aucun résultat trouvé.</font>'; } else { echo '<font color="green">' . $nb_resultats . ' résultats trouvés.</font>'; while($result = mysql_fetch_array($requete)) { var_dump($result); } } }
Ton nouveau problème doit venir de la requête sql et/ou des données en bdd. Utilises un client mysql (PhpMyAdmin ou autre) pour tester ta requête directement sur la base. -
-
En fait c soit il me retourne 2 lignes qd il faut, mais à ce moment la là condition "$Requete == Nul" ou "mysql_num_rows($requete) == 0" donne une page blanche
ou bien vice-versa.
Quand (mysql_num_rows($requete) == 0) afiiche aucun résultat trouvé, le sript ne me donne qu'une ligne là ou il devrait y avoir 2.
Ce truc me rend dingue !
dernière version :
if (!$requete) { echo 'Erreur sql : ' . mysql_error(); } elseif(mysql_num_rows($requete) == 0) echo '<font color="red">Aucun résultat trouvé.</font>'; else { echo ("<div align=\"center\">".$result->trouve_id."------".$result->region."------".$result->objet." <a href=\"modification2.php?idPersonne=".$result-> date_trouve."\">modifier --- <a href=\"#\" onClick=\"confirme('".$result->trouve_id."')\" >supprimer</a></div>\n" ) ; }
-
-
//affichage des données: while($result = mysql_fetch_object($requete)) { echo( "<div align=\"center\">".$result->date_trouve."------".$result->ville."------".$result->objet." <a href=\"modification2.php?trouve_id=".$result-> trouve_id."\">consulter</a></div>\n" ) ; }