🏍️TP 02 : Recherche : autocomplétion du formulaire + résultats
Modification du formulaire de recherche pour remplir automatiquement notre liste de proposition d’auteurs et affichage des résultats de recherche
Préambule
Nous avons vu lors du TD04 comment faire une liste de propositions dans le champs de recherche grace à <datalist>
.
Pour le moment cette liste est écrire à la main, nous avons nous même entré les propositions à donner à l'utilisateur.
Nous allons automatiser la création de cette liste à partir des données stockées dans notre base.

Partie 1 : Modification de la page du fomulaire de recherche
Création de la fonction
Création de la fonction de génération des <option>
du <datalist>
dans notre librairie de fonctions lib_crud.inc.php
...
// Génération de la liste des auteurs dans le formulaire de recherche
function genererDatalistAuteurs($mabd) {
// on sélectionne le nom et prénom de tous les auteurs de la table auteurs
$req = "SELECT auteur_nom FROM auteurs";
try {
$resultat = $mabd->query($req);
} catch (PDOException $e) {
// s'il y a une erreur, on l'affiche
echo '<p>Erreur : ' . $e->getMessage() . '</p>';
die();
}
// pour chaque auteur, on met son nom <option>
foreach ($resultat as $value) {
echo '<option value="'. ??? .'">';
}
}
Modification du formulaire de recherche
Modifier le code de votre page form_recherche.php
afin de générer automatiquement la <datalist>
à partir de la BDD
...
<input type="search" id="real" list="auteurs" name="texte" autocomplete="off" />
<datalist id="auteurs">
<?php
// On va afficher ici la datalist
require 'lib_crud.inc.php';
$co=connexionBD();
genererDatalistAuteurs($co);
deconnexionBD($co);
?>
</datalist>
Partie 2 : Création de la page des resultats de recherche : reponse_recherche.php
Ecriture de la requête
Ecrivez tout d'abord la requete
Testez-la sur phpMyAdmin
Créez ensuite la fonction qui génère les resultats
Par exemple :
SELECT *
FROM chiens
WHERE nom_chiens LIKE 'bu%';
Affichera tous les chiens dont le nom commence par "bu"
Création de la fonction
Création de la fonction d'affichage des resultats de recherche dans notre librairie de fonctions lib_crud.inc.php
// affichage des resultats de recherche
function afficherResultatRecherche($mabd) {
$req = "SELECT * FROM bandes_dessinees
INNER JOIN auteurs
ON bandes_dessinees._auteur_id = auteurs.auteur_id
WHERE ???";
try {
$resultat = $mabd->query($req);
} catch (PDOException $e) {
// s'il y a une erreur, on l'affiche
echo '<p>Erreur : ' . $e->getMessage() . '</p>';
die();
}
// ICI VOTRE CODE POUR AFFICHER LES ALBUMS FILTRES
// ...
// ...
}
Création de la page de résultats
Votre page reponse_recherche.php
et très similaite à listing.php
et devrait ressembler à cela :
<h1>Nos albums</h1>
<p>Résultats de votre recherche</p>
<hr />
<?php
require 'lib_crud.inc.php';
$co=connexionBD();
afficherResultatRecherche($co);
deconnexionBD($co);
?>
Dernière mise à jour