Créer Module De Recherche Php Complexe
Besoin d'aide urgent :)
-
naruto-94 Messages postés 904 Statut Membre -
naruto-94 Messages postés 904 Statut Membre -
Bonjour,
J'ai un site et je voudrais intégré un système de recherche à travers mes News , je voudrais que lorsque qu'on ne donne pas le nom exacte , ca fasse une recherche est donne les noms des News proche .
Example :
Je recherche : La News sur le film Avatar .
Dans la barre de recherche je marque : avatar news .
Ca m'affiche : Rien trouvé .
Bah je voudrais que ca m'affiche quand même La News sur le film Avatar , donc un système pour retrouvé les news proche du nom donné dans la barre de recherche . Dsl si je m'explique mal mais je sais pas si vous avez compris :s
Merci de m'aider
J'ai un site et je voudrais intégré un système de recherche à travers mes News , je voudrais que lorsque qu'on ne donne pas le nom exacte , ca fasse une recherche est donne les noms des News proche .
Example :
Je recherche : La News sur le film Avatar .
Dans la barre de recherche je marque : avatar news .
Ca m'affiche : Rien trouvé .
Bah je voudrais que ca m'affiche quand même La News sur le film Avatar , donc un système pour retrouvé les news proche du nom donné dans la barre de recherche . Dsl si je m'explique mal mais je sais pas si vous avez compris :s
Merci de m'aider
12 réponses
-
Salut ,
tu utilises le PHP et les news sont dans une base de données MySQL ? -
-
Et bien tu peux utilise la commande LIKE en sql .
ex : ton champs recherche se nomme "recherche" et tu recherches la news d'avatar
si par exemple le visiteur tape "ava" la requete sql sera
SELECT titre,message FROM les_news WHERE titre LIKE "%ava%" ;
donc ça va recherche toutes les news qui ont dans leur titre ~ava~
http://sql.1keydata.com/fr/sql-like.php -
pour commencer fragmente la recherche en plusieurs éléments
//mots recherchés en minuscules
$rec=strtolower($_POST['recherche']);
//entre les mots dans une table
$tableau = explode(" ",$rec);
//compte le nombre de mots
$occurences = count($tableau);
ensuite fait une boucle
for($i=0 ; $i<$occurences; $i++)
{
$requete = "SELECT * FROM table_new
WHERE nom_new LIKE '%" . $tableau[$i] . "%'";
$resultat = mysql_query($requete);
while($ligne = mysql_fetch_array($resultat))
{
echo $ligne[nb];
}
}
cela permet de faire une requete pour chaque mot clé de la recherche donc pour avatar et news
j'espere que ça va pouvoir t'aider
cordialement. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Oui d'accord mais pour l'afficher après ? Voila mon code pouvez vous me montrer :
<?php $nomdonne= $_POST['news'] ; ?> <span class="titre">News : </span><br /> <?php mysql_connect('localhost','root','********'); mysql_select_db('********'); // lancement de la requete $sql = "SELECT nom FROM news WHERE nom='$nomdonne'" LIKE "%$nomdonne%" ; // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); // on recupere le resultat sous forme d'un tableau $data = mysql_fetch_array($req); // on libère l'espace mémoire alloué pour cette interrogation de la base mysql_free_result ($req); ?> Nom <br> <a href="<?php echo $data['news'] ; ?>"> -
il faut faire un while vous avez une réponse plus haut dans votre sujet
https://forums.commentcamarche.net/forum/affich-18059434-creer-module-de-recherche-php-complexe#4
sauf que la il a fragmenté la recherche en plusieurs élément donc les prépositions seront recherché .. ce qui peut faire beaucoup de résultat .. utiliser juste le while($ligne = mysql_fetch_array($resultat)) et vous verrez par la suite si la recherche de plusieurs élément vous servira -
DSl mais pourriez vous me refaire le code avec ca car je ne suis pas fort en programmation et je ne serais pas faire :s Dsl de vous demandez ca mais Svp pouvez vous me faire le code bien ?? Merci bcp de voter aide
-
$search = $_POST["recherche"] /* remplacer recherche par le nom du champs de saisie */
$requete = "SELECT titre,msg FROM table_news
WHERE titre LIKE '%" . $search] . "%'";
$resultat = mysql_query($requete);
while($ligne = mysql_fetch_array($resultat))
{
echo $ligne["titre"]; /* Affichage des titres trouver dans la bdd correspondant a la recherche */
} -
-
je peux voir le code que t'as mis par rapport a ton champs de saisie ?
-
Voila
$search = $_POST["chercher"] ;/* remplacer recherche par le nom du champs de saisie */ $requete = "SELECT nom FROM news WHERE nom LIKE '%" . $search . "%'"; $resultat = mysql_query($requete); while($ligne = mysql_fetch_array($resultat)) { echo $ligne["nom"]; /* Affichage des titres trouver dans la bdd correspondant a la recherche */ } ?> -
as tu bien ton input ayant comme "nom chercher"
<input type="text" name="chercher" /> ?
..désolé du temps de réponse au faite