Problème affichage texte selon recherche

Résolu
Lolo -  
 Lolo -
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. chankouti
     
    essaie if (!$req) a la place de if (!$donnees)
    0
  2. Profil bloqué
     
    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
  3. Lolo
     
    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
  4. Profil bloqué
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Lolo
     
    Il me marque ça :

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

    ???
    0
    1. Profil bloqué
       
      C'est une faute de frappe de la ligne 17, c'est quelle ligne ?
      0
    2. Lolo
       
      ligne : catch(Exception $e)
      0
    3. Profil bloqué
       
      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. Lolo
       
      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. Lolo
       
      Ayez je viens de trouver la solution.
      Merci beaucoup !
      0