Créer Module De Recherche Php Complexe

Besoin d'aide urgent :) -  
naruto-94 Messages postés 865 Date d'inscription   Statut Membre Dernière intervention   -
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



12 réponses

naruto-94 Messages postés 865 Date d'inscription   Statut Membre Dernière intervention   188
 
Salut ,

tu utilises le PHP et les news sont dans une base de données MySQL ?
0
Besoin d'aide urgent :)
 
Oui absolument
0
naruto-94 Messages postés 865 Date d'inscription   Statut Membre Dernière intervention   188
 
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
0
kust
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Besoin d'aide urgent :)
 
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'] ; ?>">  

0
naruto-94 Messages postés 865 Date d'inscription   Statut Membre Dernière intervention   188
 
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
0
Besoin d'aide urgent :)
 
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
0
naruto-94 Messages postés 865 Date d'inscription   Statut Membre Dernière intervention   188
 
$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 */
}
0
Besoin d'aide urgent :)
 
Ca ne marche pas :s , ca me sort TOUS les news de ma bdd ...
0
naruto-94 Messages postés 865 Date d'inscription   Statut Membre Dernière intervention   188
 
je peux voir le code que t'as mis par rapport a ton champs de saisie ?
0
Besoin d'aide urgent :)
 
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 */
}
?>

0
naruto-94 Messages postés 865 Date d'inscription   Statut Membre Dernière intervention   188
 
as tu bien ton input ayant comme "nom chercher"

<input type="text" name="chercher" /> ?

..désolé du temps de réponse au faite
0