<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Moteur de recherche de theprogrammeur</title>
</head>
<body>
<form method="post" action="recherche.php">
Votre recherche:
<input type="text" name="recherche" value="<?php $_POST['recherche']; ?>" /><br />
<input type="submit" value="Rechercher" name="rechercher" />
</form>
if(isset($_POST['recherche']) && !empty($_POST['recherche'])){
$connection = mysql_connect('localhost', 'root', '') or die('Informations de connection incorrectes!');
mysql_select_db('recherche') or die('Erreur lors de la connection à la BDD');
//Calcul du temps
$execution = microtime();
$execution = explode(' ',$execution);
$execution_debut = $execution[1]+$execution[0]
//Fin de calcul
:pourquoi faut-il séparer les termes, on ne peut pas se contenter de faire "SELECT * FROM recherche WHERE description='$recherche'" ?
Non, sinon il aurait fallu que les termes de la recherches soient tous mis dans la BDD et dans le même ordre, ce qui est pratiquement impossible.
$recherche = htmlspecialchars(htmlentities($_POST['recherche']));
//Sécurisation des termes de la recherche
$mots = explode(" ", $recherche);
//On sépare les mots à chaque espace trouvé
$nb_mots = count ($mots);
//Comptage du nombre de mots
:quel problème, ça me semble simple, on selectionne les entrées qui correspondent au mot tapé!
Ce système ne fonctionnera pas pour la bonne raison que, si nous avons cet enregistrement dans la BDD:"J'aime le chocolat en barres" et que l'utilisateur tape ce mot clé:"chocolat", il ne pourra jamais trouver la phrase car l'enregistrement ne correspond pas au mot-clé tapé.
$requete_bdd = null;
$words_while = null;
//Initialisation des variables utilisées dans la boucle
while($words_boucle < $nb_mots){
$requete_bdd .= "OR titre LIKE '%$mots[$words_boucle]%'
OR description LIKE '%$mots[$words_boucle]%'
OR keywords LIKE '%$mots[$words_boucle]%'";
$words_boucle++;
}
$requete_bdd = substr($requete_bdd, 2);
$sql = "SELECT * FROM recherche WHERE $valeur_requete ORDER BY id DESC";
$resultats_recherche = mysql_query($sql) or die('La recherche à échoué');
//Requête
$nb_resultats = mysql_num_rows($resultats_recherche);
//Comptage des résultats
//Début calcul temps
$execution = microtime();
$execution = explode(' ',$execution);
$execution_fin = $execution[1]+$execution[0];
$temps = $execution_fin-$execution_debut;
echo'Recherche effectuée en '.$temps.' secondes.';
//Fin temps
if($nb_resutats == 0){
echo'Aucun résultat n\a été trouvé dans notre base de données essayez avec des termes plus globaux
et vérifiez votre orthographe.';
}
//Petite condition pour afficher le nombre de résultats
else{
echo'Il y a '.$nb_resultats.' résultats.';
//Boucle pour afficher les résultats
while($erire_results = mysql_fetch_array($resultats_recherche) ) //boucle affichant les resultats
{
echo'<a href="'.$ecrire_results['lien'].'"><'.$ecrire_results['titre'].'</a><br />';
echo $ecrire_results['description'].'<br /><br />';
}
}//Fin du else
}//Fin du if
mysql_close($connection);
//N'oublions pas de nous déconnecter