Créer Module De Recherche Php Complexe

Besoin d'aide urgent :) -  
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

12 réponses

  1. naruto-94 Messages postés 904 Statut Membre 188
     
    Salut ,

    tu utilises le PHP et les news sont dans une base de données MySQL ?
    0
  2. naruto-94 Messages postés 904 Statut Membre 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
  3. 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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. 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
  6. naruto-94 Messages postés 904 Statut Membre 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
  7. 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
  8. naruto-94 Messages postés 904 Statut Membre 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
  9. Besoin d'aide urgent :)
     
    Ca ne marche pas :s , ca me sort TOUS les news de ma bdd ...
    0
  10. naruto-94 Messages postés 904 Statut Membre 188
     
    je peux voir le code que t'as mis par rapport a ton champs de saisie ?
    0
  11. 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
  12. naruto-94 Messages postés 904 Statut Membre 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