Bonjour,
J'ai créé un moteur de recherche interne pour mon site.
<?php
require('bddconnect.php');
$annonce = $bdd->query('SELECT titre FROM articles ORDER BY id DESC');
if (isset($_GET['search']) AND !empty($_GET['search']))
{
$search=htmlspecialchars($_GET['search']);
$annonce = $bdd->query('SELECT titre FROM articles WHERE titre LIKE "%'.$search.'%" ORDER BY id DESC');
}
?>
Page de résultat des recherches
<?php
require_once('bddconnect.php');
require_once('set_barre_recherche.php');
?>
<!DOCTYPE html>
<html>
<head>
<title>Recherche</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<?php require_once('header.php');?>
<?php require_once('loading.php');?>
<div align="center" class="body">
<section class="userinfo">
<!-- boucle les résultats du moetur de recherche -->
<ul class="affiche_info_barre_recherche">
<?php require_once ('barre_recherche.php');?>
<?php while ($a = $annonce->fetch()){ ?>
<li> <b> <?= $a ['titre'] ?> </b> </li><?php } ?>
</ul>
<p><?php if (isset($msg)){echo $msg;}?></p>
</section>
</div>
</body>
</html>
J'aimerais savoir comment mettre un lien dans les résultats de recherche qui va directement dirigé l'internaute vers chaque article inscrit dans le bdd.
Merci d'avance pour votre aide.
Bonjour.
Ton code est en généralité mal optimisé, car l'orsqu'une recherche est effectuée, tu fais deux requêtes SQL, alors qu'une seule est largement suffisante.
Tu devrais donc plutôt faire quelque chose comme :
if (isset($_GET['search']) AND !empty($_GET['search']))
{
$search = htmlspecialchars($_GET['search']);
$annonce = $bdd->query('SELECT titre FROM articles WHERE titre LIKE "%'.$search.'%" ORDER BY id DESC');
} else {
$annonce = $bdd->query('SELECT titre FROM articles ORDER BY id DESC');
}
De plus, tu devrais penser à la pagination pour le listage, car au début tu n'as/auras que peu d'articles, mais plus tard tu risques d'afficher près de 50 articles, ce qui déjà pour l'utilisateur ne sera pas plaisant, tu devrais donc inclure une limite à tes requêtes.
Sinon pour ta question, j'ai du mal à comprendre ton problème, s'il est au niveau HTML ou PHP.
Car niveau HTML il te suffit d'utiliser la balise <a>
qui sert à créer des liens, pour le PHP il suffit que tu utilises les infos que tu récupères des enregistrements de la base de données, soit par exemple :
<a href="article?id=<?= a["id"] ?>">Voir l'article</a>
Par contre il te faut ajouter le champ dont tu as besoin dans la liste des champs à récupérer dans ta requête SQL.
Bonjour Lartak et merci pour ta réponse. J'ai travaillé dessus en suivant tes indications. J'ai bien avancé.
En mon problème il était au niveau du PHP. C'est juste que je n'avais pas la méthode pour mettre le lien qui va pointer vers un résultat comme quand tu fais des recherche dans GOOGLE. Tu cliques sur un résultat de recherche et tu es dirigé vers le site web.
En suivant tes conseils, j'ai essayé la méthode suivante mais quand je clique sur le résultat du moteur de recherche, je suis dirigé vers le pas d'accueil de toutes les annonces et non vers l'article en question. Tu vois.
<?php while ($a = $annonce->fetch()){ ?>
<li>
<a href="affichcontenannonce.php?id=<?= $a['id']?>">
<img src="miniatures/<?= $a['id']?>.jpg" width="150"/><br/>
<?=$a['titre']?></a>
</li>
<?php } ?>
Il te faut créer une page (qui par conséquent n'existe pas encore à priori) sur l'aquelle tu récupères l'ID passée en paramêtre de l'url qui te permettra de récupérer l'article en question en base de données.
Ok ! Je te remercie ! Je crois que je vais tous recommancer.
Je vais trouver un tuto plus complet pour réaliser ce moteur de recherche. Je suis encore débutant en PHP.
Merci A+