Problème affichage texte selon recherche

Résolu
Bonjour,

Lorsque l'on tape une recherche dans mon moteur de recherche il affiche des photos correspondantes mais lorsqu'il n'y en a pas je souhaiterais qu'il affiche un message type : Il n'y a aucun résultat correspondant à votre recherche.

J'ai utilisé un booléen et ça marche dans l'ensemble sauf que il me marque le message "d'erreur" même quand la recherche est bonne. Il affiche les photos + message.

Voici mon code :

<?php
try
{
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=album_photos', 'root', '', $pdo_options);

$req = $bdd->prepare('SELECT chemin FROM cliches WHERE categorie = ? OR nom = ? OR prix = ?');
$req->execute(array($_POST['photos'], $_POST['photos'], $_POST['photos']));

// On affiche chaque entrée une à une
while ($donnees = $req->fetch())

{
echo '<p><img src="'.$donnees['chemin'].'"/></p>';
}
if (!$donnees)
{
echo "Il n y a pas de résultats correspondants à votre recherche";
}


$req->closeCursor(); // Termine le traitement de la requête

}
catch(Exception $e)
{
// En cas d'erreur précédemment, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}
?>

Quel est le problème ?

5 réponses

  1. essaie if (!$req) a la place de if (!$donnees)
    0
    1. Essaie de changer

      {
      echo '<p><img src="'.$donnees['chemin'].'"/></p>';
      }
      if (!$donnees)
      {
      echo "Il n y a pas de résultats correspondants à votre recherche";
      }

      par

      {
      echo '<p><img src="'.$donnees['chemin'].'"/></p>';
      }
      if (!isset($donnees) || empty($donnees))
      {
      echo "Il n y a pas de résultats correspondants à votre recherche";
      }
      0
      1. Bonjour,

        Merci pour vos réponses mais aucunes ne fonctionnent.
        J'ai toujours le même résultat : photos + message (message ci-dessus) et/ou photos quand la recherche est valable et rien quand elle ne l'est pas (page blanche exemple ci-dessous).

        <?php
        try
        {
        // On se connecte à MySQL
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $bdd = new PDO('mysql:host=localhost;dbname=album_photos', 'root', '', $pdo_options);

        $req = $bdd->prepare('SELECT chemin FROM cliches WHERE categorie = ? OR nom = ? OR prix = ?');
        $req->execute(array($_POST['photos'], $_POST['photos'], $_POST['photos']));

        // On affiche chaque entrée une à une
        while ($donnees = $req->fetch())

        {
        echo '<p><img src="'.$donnees['chemin'].'"/></p>';
        }
        if (!$req)
        {
        echo "Il n y a pas de résultats correspondants à votre recherche";
        }


        $req->closeCursor(); // Termine le traitement de la requête

        }
        catch(Exception $e)
        {
        // En cas d'erreur précédemment, on affiche un message et on arrête tout
        die('Erreur : '.$e->getMessage());
        }
        ?>

        Avez vous d'autres idées ?
        0
        1. Au lieu de ton code, essaies peut-être ça:

          <?php
          try
          {
          // On se connecte à MySQL
          $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
          $bdd = new PDO('mysql:host=localhost;dbname=album_photos', 'root', '', $pdo_options);
          catch(Exception $e)
          {
          // En cas d'erreur précédemment, on affiche un message et on arrête tout
          die('Erreur : '.$e->getMessage());
          }

          $req = $bdd->prepare('SELECT chemin FROM cliches WHERE categorie = ? OR nom = ? OR prix = ?');
          $req->execute(array($_POST['photos'], $_POST['photos'], $_POST['photos']));

          // On affiche chaque entrée une à une
          while ($donnees = $req->fetch())
          {
          echo '<p><img src="'.$donnees['chemin'].'"/></p>';
          }
          if (!$donnees)
          {
          echo "Il n y a pas de résultats correspondants à votre recherche";
          }
          $req->closeCursor(); // Termine le traitement de la requête
          }

          ?>
          0
          1. Il me marque ça :

            Parse error: parse error in C:\wamp\www\album_photos\rechercher.php on line 17

            ???
            0
            1. C'est une faute de frappe de la ligne 17, c'est quelle ligne ?
              0
            2. ligne : catch(Exception $e)
              0
            3. Remplace ça

              try
              {
              // On se connecte à MySQL
              $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
              $bdd = new PDO('mysql:host=localhost;dbname=album_photos', 'root', '', $pdo_options);
              catch(Exception $e)
              {
              // En cas d'erreur précédemment, on affiche un message et on arrête tout
              die('Erreur : '.$e->getMessage());
              }

              par ça

              try
              {
              // On se connecte à MySQL
              $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
              $bdd = new PDO('mysql:host=localhost;dbname=album_photos', 'root', '', $pdo_options);
              }
              catch(Exception $e)
              {
              // En cas d'erreur précédemment, on affiche un message et on arrête tout
              die('Erreur : '.$e->getMessage());
              }
              0
            4. J'ai déjà essayé mais il me note ça :

              Parse error: parse error in C:\wamp\www\album_photos\rechercher.php on line 36
              0
            5. Ayez je viens de trouver la solution.
              Merci beaucoup !
              0