Je souhaite réaliser un moteur de recherche sur mon site, une recherche par mot-clé, l'utilisateur rentre un mot ou une expression et le site lui retourne les annonces dont le titre ou le texte descriptif contient ce mot ou cette expression.
J'ai voulu utiliser des requêtes sql avec LIKE
Voila le code
<?php
//Cherchons dans les différents titres et textes descriptifs s'il y a ce que cherche l'utilisateur
include("Modele/connexion-bdd.php");
$req = $bdd->prepare('SELECT * FROM description WHERE titre LIKE %?% ORDER BY id_logement DESC');
$req->execute(array($search));
$reponse = $req->fetch();
if (!empty($reponse))
{
while ($reponse = $req->fetch())
{
//On renomme les variables
$id_logement = $reponse['id_logement'];
$id_membre = $reponse['id_membre'];
$titre = $reponse['titre'];
$texte = $reponse['texte'];
$type = $reponse['type'];
$capacite = $reponse['capacite'];
$surface = $reponse['surface'];
$photo = $reponse['photo1'];
//On va chercher la région et le département associés au logement
$req2 = $bdd->query('SELECT region, departement FROM localisation WHERE id_logement = ' . $id_logement);
$donnees2 = $req2->fetch();
$region = $donnees2['region'];
$departement = $donnees2['departement'];
//On va chercher le nombre de contraintes associées au logement
$req3 = $bdd->query('SELECT * FROM contraintes WHERE id_logement = ' . $id_logement);
$donnees3 = $req3->fetch();
$nbcontraintes = 0;
for ($i = 1; $i <= 5; $i++)
{
if (!empty($donnees3['contrainte' . $i]))
{
$nbcontraintes += 1;
}
}
//On va chercher le nombre de services associés au logement
$req4 = $bdd->query('SELECT * FROM services WHERE id_logement = ' . $id_logement);
$donnees4 = $req4->fetch();
$nbservices = 0;
for ($j = 1; $j <= 5; $j++)
{
if (!empty($donnees4['service' . $j]))
{
$nbservices += 1;
}
}
?>
<a class="accueil-publication-lien" href="index.php?page=annonce&logement=<?php echo $id_logement; ?>">
<div class="accueil-publication-container">
<div class="accueil-publication-photo" style="background: url('../Images/photos-annonce/<?php echo $photo; ?>') center no-repeat; background-size: cover;"></div>
<div class="accueil-publication-infos">
<h3 class="accueil-publication-titre"><?php echo $titre; ?> — <?php echo $type; ?></h3>
<p class="accueil-publication-texte"><?php echo $texte; ?></p>
<p class="accueil-publication-infos-sup">
<ul>
<li class="accueil-infos-sup"><?php echo $region; ?> — <?php echo $departement; ?></li>
<li class="accueil-infos-sup">Surface : <?php echo $surface; ?>m2</li>
<li class="accueil-infos-sup"><?php echo $capacite; ?> personne(s)</li>
<li class="accueil-infos-sup"><?php echo $nbcontraintes; ?> contraintes</li>
<li class="accueil-infos-sup"><?php echo $nbservices; ?> services</li>
</ul>
</p>
</div>
</div>
</a>
<?php
}
}
else
{
?>
<p class="recherche-simple-message">Il n'y a pas de résultats pour cette recherche.</p>
<a class="recherche-retour-lien" href="index.php?page=recherche">Retourner à la recherche</a>
<?php
}
?>
La variable $search contient ce qu'a rentré l'utilisateur dans le barre de rechercheLe problème est que le code est mal lu, ou mal écrit plutot, car il n'affiche absolument rien. :/
Est-ce que je m'y prends de la bonne facon avec la requete sql contenant le LIKE?
Qu'est ce qui ne vas pas dans mon code?
thx