Afficher les données de mysql (image...) à partir la barre de recherche sur php

Fermé
mouls22 - 29 oct. 2021 à 14:11
jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 - 29 oct. 2021 à 14:24
Bonjour,

Je suis dans la dernière partie de mon projet, et je cherche à connecter les informations (titre, photos, email...) se trouvant dans ma base de données, à la barre de recherche, c'est à dire qu'en cliquant sur rechercher, j'arrive à AFFICHER les informations sur ma page web. Faut-il inclure du javascript, ou est-ce suffisant avec du php et du mysql?
Comment réecrire le code ci-dessous? Merci.


<?php
 
$bdd= new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
 
$articles = $bdd->query('SELECT nom FROM annonces ORDER BY id DESC');
if(isset($_GET['q']) AND !empty($_GET['q'])) {
   $q = htmlspecialchars($_GET['q']);
   $articles = $bdd->query('SELECT titre FROM annonces WHERE titre LIKE "%'.$q.'%" ORDER BY id DESC');
   if($articles->rowCount() == 0) {
      $articles = $bdd->query('SELECT nom FROM annonces WHERE CONCAT(titre, photo) LIKE "%'.$q.'%" ORDER BY id DESC');
   }
}
?>


<html lang="fr">
<head>
  <meta charset="utf-8">
  <title>Titre de la page</title>
  <link rel="stylesheet" href="style.css">
  <script src="script.js"></script>
</head>
<body>
<header>

<div class= "boutons">
<button class="favorite styled" onclick="window.location.href = 'connexion.php';"
        type="button">
    Connexion
</button>

<button class="favorite styled" onclick="window.location.href = 'register.php';"
        type="button">
    Inscription
</button>

</div>
   


</header>
<nav>
   <ul>
        <li class="menu-accueil"><a href="accueil.php">Accueil</a></li>
        <li class="menu-informatique"><a href="informatique.asp">Informatique et Multimédia</a>
        <ul class= "submenu">
         <li><a href="#">Téléphones</a> </li>
         <li><a href="#">Oordinateurs Portables</a> </li>
         <li><a href="#">Accessoires Informatiques</a></li>
         <li><a href="#">Ordinateur de bureaux</a> </li>
      </ul>
      </li>



        <li class="menu-immobilier"><a href="immobilier.asp">Immobilier</a>
        <ul class= "submenu">
         <li><a href="#">Appartements</a> </li>
         <li><a href="#">Maisons et Villas</a> </li>
         <li><a href="#">Location </a></li>
         <li><a href="#">Bureaux</a> </li>
         <li><a href="#">Terrain </a> </li>
      </ul>
      </li>


        <li class="menu-vehicules"><a href="voiture.asp">Véhicules</a>
        <ul class= "submenu">
         <li><a href="#">Voitures</a> </li>
         <li><a href="#">Motos</a> </li>
         <li><a href="#">Pièces et accessoires pour véhicules</a> </li>
         <li><a href="#">Vélos</a> </li>
         <li><a href="#">Véhicules professionnels</a> </li>
      </ul>
      </li>


        <li class=menu-entreprises><a href="entreprises.asp">Entreprises</a>
         <ul class= "submenu">
         <li><a href="#">Matériels Professionnels </a></li>
         <li><a href="#">Business et Affaires Commerciales </a> </li>
         <li><a href="#">Stocks et vente en gros </a></li>
      </ul>
      </li>


        <li class= "menu-cours"><a href="cours.asp">Cours</a>
        <ul class= "submenu">
         <li><a href="#">Privés </a></li>
         <li><a href="#">Collectifs </a></li>
       </ul>
      </li>


        <li class="menu-annonce"><a href="formannonce.php">Déposer une annaonce</a>
      </li>
        <li class= "menu-contact"><a href="contact.php">Nous contacter</a></li>
      </ul>
</nav>  
</body>
</html>
<br> <br> <br> <br>
<div id="searchbar">
<form method="GET">
                
   <h1>Que recherchez-vous?</h1>
   <input type="search" name="q" placeholder="maison, voiture..." />
   <input type="submit" value="Rechercher" />
</form>

<?php if($articles->rowCount() > 0) { ?>
   <ul>
   <?php while($a = $articles->fetch()) { ?>
      <li><?= $a['titre'] ?></li>
   <?php } ?>
   </ul>
<?php } else { ?>
Aucun résultat pour: <?= $q ?>...
<?php } ?>
</div>


1 réponse

jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712
29 oct. 2021 à 14:24
Bonjour,

Attention... lignes 101/102 .. tu as des balises de fermeture du body et du html ...
ce n'est pas possible !!! il faut virer ces deux lignes.

Ensuite,
tu peux remplacer
 $articles = $bdd->query('SELECT titre FROM annonces WHERE titre LIKE "%'.$q.'%" ORDER BY id DESC');
   if($articles->rowCount() == 0) {
      $articles = $bdd->query('SELECT nom FROM annonces WHERE CONCAT(titre, photo) LIKE "%'.$q.'%" ORDER BY id DESC');
   }

par :
 $articles = $bdd->query('SELECT titre , nom  FROM annonces WHERE titre LIKE "%'.$q.'%" 
 OR photo LIKE "%'.$q.'%"  ORDER BY id DESC');



Sachant que dans l'idéal, il faudrait utiliser de préférence les requêtes préparées au lieu de la méthode query
(il faudrait également activer l'affichage des erreurs PDO dans la connexion)
Voir conseils donnés ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
0