If & résultat requête
Résolu
maxireussite
Messages postés
372
Date d'inscription
Statut
Membre
Dernière intervention
-
maxireussite Messages postés 372 Date d'inscription Statut Membre Dernière intervention -
maxireussite Messages postés 372 Date d'inscription Statut Membre Dernière intervention -
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"; } }
A voir également:
- If & résultat requête
- Resultat foot - Télécharger - Vie quotidienne
- Lexer resultat - Télécharger - Sport
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Virus
- Requête sql pix - Forum Python
- Resultat loto 5/90 - Forum Excel
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.
si ta requête ne retourne rien. ..tu n'entre pas dans le while.... donc ton if ne sert à rien à cet endroit.
Mon problème demeure entier !
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.
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 :)
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:
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.
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
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.
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.
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 :
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" ) ; }