Recherche mot clé

Résolu
Bonjour voila mon probleme est que je suis entrain de faire un site d'emploi et je voudrais inserer un moteur de recherche.Mon moteur de recherche marche mais a moitié enfaite une personne qui recherche quelq'un par ces competences ne peut le trouver que s'il elle tape les compétences exacte c'est a dire dans l'odre,voila ma requete :

$sql="select identifiant,titreposte,competence,villep,datedebutvalidite,dureevalidite,datecreation
from publication
where rep='oui'
and titreposte like \"%$ip%\"
and competence like \"%$cp%\"";

par exemple dans ma BDD j'ai dans competence (java html php css) si la personne tape java sa marche.Si elle tape java html sa marche.Mais si elle tape java css la sa ne marche plus alors comment je peut faire ?

31 réponses

Résumé de la discussion

Le problème porte sur la construction d'un moteur de recherche pour un site d'emploi capable de retrouver des offres selon les compétences, sans exigence d'ordre ni de correspondances mot à mot. Deux approches sont évoquées : découper les recherches en mots clés et attribuer des scores, ou activer l'indexation fulltext et utiliser MATCH... AGAINST pour classer par pertinence. La solution recommandée est l'indexation fulltext sur les champs pertinents, avec ORDER BY score DESC, et la consultation de ressources officielles comme la documentation MySQL. En complément, certains évoquent les limites des requêtes et des performances et suggèrent de tester les options sur des jeux de données réels pour calibrer le score et éviter les faux positifs.

Bobot (l’IA à votre service)
  1. merci mec tu m'a pas abandonné sa fait plaisir,tu m'as aidé jusq'a la fin franchement merci !!!
    0
    1. voila ce que j'ai fait :

      sur la page 1 :

      <input type="hidden" name="id" value="'.$id.'" />
      <input type="image" src="button6.jpeg"/>

      sur la page 2 :

      echo 'hello '.$_POST['id'].'';
      0
      1. c'est bon j'ai reussi merci mec t'es genial
        0
        1. efface la ligne dummy, on ne va pas perdre de temps avec

          en simplifiant le bouton,
          $id = $_GET['id'];
          echo '<form method="post" action="page2.php">'
          .'<input type="hidden" name="id" value="'.$id.'" />'
          .'<input type="submit" name="action" value=" " style="background:url(\'button6.jpeg\');" />'
          .'</form>';

          ca ne marche toujours pas ? tu es sur de ton url ?
          0
          1. oui mec sa marche sa s'affiche hello 43 par contre y a pas ecrit dummy et l'image ne s'affiche pas
            0
            1. Si tu reprends le même code dans page1 :
              $id = $_GET['id'];
              echo '<form method="post" action="page2.php">'
              .'<input type="hidden" name="id" value="'.$id.'" />'
              .'<input type="hidden" name="dummy" value="world" />'
              .'<input type="submit" name="action" value=" " style="background:url(\'button6.jpeg\') no-repeat top left" />'
              .'</form>';

              et que dans page2 tu fais:
              echo 'hello '.$_POST['id'].' '.$_POST['dummy'];

              ça te donne quoi ?
              l'image s'affiche maintenant ?
              0
              1. oui c'est bien sa que j'essaye de faire désolé je me suis mal exprimé,bref j'ai essayé sa marche pas la variable id n'est pas transmis !!!
                0
                1. Ce que tu veux depuis le début c'est transmettre $id ($id = $_GET['id']) ?

                  Si oui essaye :
                  $id = $_GET['id'];
                  echo '<form method="post" action="page2.php">'
                  .'<input type="hidden" name="id" value="'.$id.'" />'
                  .'<input type="submit" name="action" value=" " style="background:url(\'button6.jpeg\') no-repeat top left" />'
                  .'</form>';

                  Si c'est juste pour ça, pas besoin de session, on se fatigue pour rien
                  0
                  1. non sa marche pas on ne voit ni l'image et l'id n'est pas transmis sur la page 2
                    0
                    1. Ca complique un peu les choses, tu veux bien utiliser la méthode GET au lieu de post ?

                      echo '<form method="get" action="page2.php">'
                      .'<input type="hidden" name="session_name" value="'.session_id().'" />'
                      .'<input type="submit" name="action" value="" style="background:url(button6.jpeg) no-repeat top left" />'
                      .'</form>';
                      0
                      1. non c'est pas sa enfaite voila comment sa se presente :

                        <form method="post" action="page2.php">

                        <input type="image" src="button6.jpeg"/>

                        voila donc des qu'il clic sur l'image il execute la page 2
                        0
                        1. C'est juste le texte du lien qui te bloque ?

                          echo '<a href="page2.php?'.SID.'">envoyer</a>';
                          0
                          1. mais c'est pas bon car ici l'utilisateur doit cliqué sur page 2 et moi je veut qu'il clic sur envoyer ???
                            0
                            1. oui sa marche !!! l'id apparait bien dans la 2eme page
                              0
                              1. dans page2, tu reviens aux sources :
                                session_start();
                                $id=$_SESSION['id'];
                                echo ' salut '.$id.' ';

                                et dans page 1 :
                                session_start();
                                $id=$_GET['id'];
                                $_SESSION['id']=$id;
                                echo '<a href="page2.php?'.SID.'">page 2</a>';

                                normalement l'identifiant de session se transmet dans l'url du lien hypertexte. Si ça marche comme ça c'est un bon début. Tu devras alors utiliser ton SID dans tous tes liens. Pour éviter d'avoir à le transmettre à la main, tu peux paramétrer ton serveur avec la directive session.use_trans_sid pour que le SID soit transmis automatiquement
                                0
                                1. euh j'ai pas trop compris j'ecrit quoi sur la page 1 et sur la page 2 ???
                                  0
                                  1. c'est donc que ton cookie d'identifiant de session n'arrive pas à page2
                                    - soit tu n'utilises pas les cookies pour identifier les sessions,
                                    - soit ton navigateur n'accepte pas les cookies

                                    tu peux passer ton id de session en paramètre $_GET à page 2 en appelant dans page1
                                    'page2.php?'.SID

                                    pour éviter ça, je cite "PHP est capable de faire cela de manière transparente, lorsqu'il est compilé avec l'option --enable-trans-sid. Si vous activez cette option et que l'option d'exécution session.use_trans_sid est activée, les URLs relatives seront modifiées pour contenir l'identifiant de session automatiquement. " il suffit donc d'activer cette option pour que les appels à 'pageXXX.php' soient automatiquement transformés en 'pageXXX.php?session_name=sd23154wc654ze897c'
                                    0
                                    1. non toujours pas voila ce que sa donne en page 1:

                                      salut 43:PHPSESSID=71e9b540b04c2a68adfc1ee348877b52

                                      et en page 2 :

                                      pas de session active
                                      0
                                      • 1
                                      • 2