Créer Module De Recherche Php Complexe

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

    tu utilises le PHP et les news sont dans une base de données MySQL ?
    1. 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
      1. 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.
        1. 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'] ; ?>">  
          
          
          1. 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
            1. 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
              1. $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 */
                }
                1. Ca ne marche pas :s , ca me sort TOUS les news de ma bdd ...
                  1. je peux voir le code que t'as mis par rapport a ton champs de saisie ?
                    1. 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 */
                      }
                      ?>
                      
                      
                      1. as tu bien ton input ayant comme "nom chercher"

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

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