Dans le dossier www du wamp, créez un dossier et renommez-le bdr; et ouvrez maintenant l'éditeur de texte en créant deux nouveaux fichiers php que vous allez nommer index.php et verif-form.php. Si vous avez bien compris, index.php et verif-form.php se trouveront dans le dossier bdr.
La page index.php contiendra le formulaire qui sera notre barre de recherche. Voici les codes que vous devez avoir sur index.php
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<title>Barre de recherche</title>
</head>
<body>
<form action = "verif-form.php" method = "get">
<input type = "search" name = "terme">
<input type = "submit" name = "s" value = "Rechercher">
</form>
</body>
</html>
_____________________________________________________________________
Normalement, PDO est activé par défaut. Pour le vérifier, faites un clic gauche sur l'icône de WAMP dans la barre des tâches, puis allez dans le menu PHP / Extensions PHP et vérifiez que php_pdo_mysql est bien coché.
<?php
try
{
$bdd = new PDO("mysql:host=localhost;dbname=bdr", "root", "");
$bdd ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e)
{
die("Une érreur a été trouvé : " . $e->getMessage());
}
$bdd->query("SET NAMES UTF8");
?>
____________________________________________
On traite maintenant notre formulaire. Pour s'assurer que l'utilisateur à appuyer sur le bouton Rechercher, et que ce bouton contient bel et bien le mot Rechercher, il faudra passer par des vérifications des instructions. Ajoutez ces codes dans le fichier verif-form.php
if (isset($_GET["s"]) AND $_GET["s"] == "Rechercher")
{
$_GET["terme"] = htmlspecialchars($_GET["terme"]); //pour sécuriser le formulaire contre les failles html
$terme = $_GET["terme'];
$terme = trim($terme); //pour supprimer les espaces dans la requête de l'internaute
$terme = strip_tags($terme); //pour supprimer les balises html dans la requête
}
__________________________________________________________
Dans les prochaines lignes de codes, j'ai créé une variable qui va contenir les articles de la table articles qui contiennent la valeur de la variable $terme. Avant ça, il faut utiliser la fonction strtolower pour mettre la valeur de $terme en minuscule. Voici les codes que vous allez ajouter après la ligne $terme = strip_tags($terme); //pour supprimer les balises html dans la requête :
if (isset($terme))
{
$terme = strtolower($terme);
$select_terme = $bdd->prepare("SELECT titre, contenu FROM articles WHERE titre LIKE ? OR contenu LIKE ?");
$select_terme->execute(array("%".$terme."%", "%".$terme."%"));
}
else
{
$message = "Vous devez entrer votre requete dans la barre de recherche";
}
______________________________________________________________________
Donc en tout, on aura ces codes sur la page verif-form
<?php
try
{
$bdd = new PDO("mysql:host=localhost;dbname=bdr", "root", "");
$bdd ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e)
{
die("Une érreur a été trouvé : " . $e->getMessage());
}
$bdd->query("SET NAMES UTF8");
if (isset($_GET["s"]) AND $_GET["s"] == "Rechercher")
{
$_GET["terme"] = htmlspecialchars($_GET["terme"]); //pour sécuriser le formulaire contre les intrusions html
$terme = $_GET["terme'];
$terme = trim($terme); //pour supprimer les espaces dans la requête de l'internaute
$terme = strip_tags($terme); //pour supprimer les balises html dans la requête
if (isset($terme))
{
$terme = strtolower($terme);
$select_terme = $bdd->prepare("SELECT titre, contenu FROM articles WHERE titre LIKE ? OR contenu LIKE ?");
$select_terme->execute(array("%".$terme."%", "%".$terme."%"));
}
else
{
$message = "Vous devez entrer votre requete dans la barre de recherche";
}
}
?>
_______________________________________
Tout ces codes seront placés au début du fichier verif-form.php. Maintenant créez une structure de page html qui va permettre d'afficher les résultats de la recherche.
Ajouter ces codes html et php en bas des codes que nous venons d'écrire.
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8" >
<title>Les résultats de recherche</title>
</head>
<body>
<?php
while($terme_trouve = $select_terme->fetch())
{
echo "<div><h2>".$terme_trouve['titre']."</h2><p> ".$terme_trouve['contenu']."</p>";
}
$select_terme->closeCursor();
?>
</body>
</html>