Barre de Recherche sans resultats

Par Vict8or, il y a 4 ans


Bonjour, Barre de Recherche qui ne retourne pas un resultats. J'ai deux classes differentes que vous pouvez voir.

<!DOCTYPE html> <html lang="fr"> <head> </head> <body> <nav> <input type="checkbox" id="check"> <label for="check" class="checkbtn"> <i class="fas fa-bars"></i> </label> <label class="logo">BONS PLANS SHOPPING</label> <?php echo $this->menu; ?> <input type="search" name="q" placeholder="Recherche..." /> <input type="submit" value="Valider" /> <form action='./src/control/Recherche.php' method='POST'> </nav> <section> <?php echo $this->feedback; ?> <?php echo $this->content; ?> </section> </body> </html> <meta charset="utf-8" /> <?php require_once("Router.php"); require_once("model/AnnoncesStorageSQL.php"); try { $bd = new PDO("mysql:host=".MYSQL_HOST.";dbname=".MYSQL_DB.";charset=utf8", MYSQL_USER, MYSQL_PASSWORD); $bd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { echo "Problème rencontré lors de la connexion à la BD : " . $e->getMessage(); } $ANNONCE = $bdd->query('SELECT titre FROM ANNONCE ORDER BY id DESC'); if (isset($_GET["s"]) AND !empty($_GET["s"] )){ $s = htmlspecialchars($_GET["s"]); //pour sécuriser le formulaire contre les intrusions html $ANNONCE = $bdd->query('SELECT titre FROM ANNONCE WHERE titre LIKE "%'.$s.'%" ORDER BY id DESC'); if($ANNONCE->rowCount() == 0) { $ANNONCE = $bdd->query('SELECT titre FROM ANNONCE WHERE CONCAT(titre, description) LIKE "%'.$s.'%" ORDER BY id DESC'); } if($ANNONCE->rowCount() > 0) { <ul> while($a = $ANNONCE->fetch()) { <li><?= $a['titre'] ?></li> } </ul> } else { Aucun résultat pour: <?= $q ?>... } } ?>

Ce que je veux

Avoir les annonces disponibles sur le site.

Ce que j'obtiens

Pas de resultats.

1 réponse

Carouge10, il y a 4 ans

Bonsoir,

  • C'est quoi cette balise meta pour le charset qui se balade ? (elle doit être entre <head> et </head>
  • Pas besoin de faire isset + !empty , seul !empty suffit la 1ère est comprise dans la seconde
  • Pas de htmlspecialchars sur les données entrée en BDD (c'est UNIQUEMENT à l'affichage)
  • La requête n'est pas préparer donc ouverte aux injections SQL et le moindre ' ou " dans la requête et ça plante
  • Pas de rowCount sur une requête de type SELECT -> utilise fetchColumn pour savoir si tu as un résultat
  • Les balises ul c'est du html donc il faut fermer puis ouvrir les balises php
  • $bd est différent de $bdd... -> erreur qui devrait s'afficher si elles sont activées