Partage
  • Partager sur Facebook
  • Partager sur Twitter

Barre de recherche interne

php

Sujet résolu
    30 mai 2011 à 13:08:37

    Bonjour, je cherche à créer une barre de recherche web sur mon site.

    Une barre de recherche telle que http://www.elunet.org/ me séduirai tout à fait mais j'ai besoin de conseils.

    Quelqu'un peut-il me venir en aide ?
    :o
    • Partager sur Facebook
    • Partager sur Twitter
      30 mai 2011 à 13:25:48

      Laisse tomber les caractères gras stp...

      T'as une base de données sur ton site ?
      • Partager sur Facebook
      • Partager sur Twitter
        30 mai 2011 à 14:24:38

        oui, comment procéder via la bdd ?
        • Partager sur Facebook
        • Partager sur Twitter
          30 mai 2011 à 14:30:14

          Construit ta requête avec le mot recherché.
          • Partager sur Facebook
          • Partager sur Twitter
            30 mai 2011 à 14:44:11

            que mettre dans la base de donnée?
            à quoi doit ressembler la requete?
            et comment construire la page des résultats ?
            • Partager sur Facebook
            • Partager sur Twitter
              30 mai 2011 à 14:45:46

              Commence par lire le tutoriel PHP/MySQL, parce que bon, on peut pas tout faire pour toi non plus...
              • Partager sur Facebook
              • Partager sur Twitter
                30 mai 2011 à 14:46:22

                Je te conseille d'aller voir un article que j'ai rédigé, il propose une façon de mettre en place un petit moteur de recherche interne à un site.

                Un moteur de recherche pour son site
                • Partager sur Facebook
                • Partager sur Twitter
                  30 mai 2011 à 14:56:28

                  Je l'ai lu. et n'ayant encore jamais créé de moteur je ne sais pas encore comment remplir une bdd de façon pertinente. Alors je demande (c'est le but dans un fofo non?)

                  merci je vais regarder ton article ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 mai 2011 à 15:03:05

                    Pour ajouter quelques précision par rapport à mon article.

                    La solution que tu pourras y trouver est simpliste, mais fonctionnelle, et permet aussi d'avoir des meta keyword et description différents pour chaque page (utile pour le référencement).

                    L'idée est d'avoir au moins une table dans laquelle tu as tes url et tes keyword (avec des séparateurs)

                    Et ensuite de faire une requete avec l'opérateur LIKE, qui permet de trouver toutes les occurrences en bdd qui contiennent une chaine.

                    Par exemple si ta table contient :

                    url keyword
                    http://monsite.fr/index.php site,index,sujet
                    http://monsite.fr/page1.php monsite,page1,mot
                    http://monsite.fr/page2.php page2,mot2



                    faire une requete du genre

                    SELECT * FROM url WHERE keyword LIKE %site%
                    


                    La requete te renverra toute les lignes dont le champ mots clé contient "site"

                    C'est à dire

                    url keyword
                    http://monsite.fr/index.php site,index,sujet
                    http://monsite.fr/page1.php monsite,page1,mot


                    De même si tu recherche page

                    SELECT * FROM url WHERE keyword LIKE %page%
                    


                    url keyword
                    http://monsite.fr/page1.php monsite,page1,mot
                    http://monsite.fr/page2.php page2,mot2
                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 mai 2011 à 16:26:02

                      Super merci cette réponse m'éclaire!

                      les séparateur sont bien des virgules ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 mai 2011 à 16:51:47

                        A vrai dire tu peut utiliser ce que tu veux comme séparateur, du moment que ce n'est pas un caratère que tu retrouveras dans un mots clé (, + # ...)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 juin 2011 à 12:31:49

                          C'est l'utilisateur qui entrera le terme de sa recherche, issu d'un formulaire.

                          le formulaire serait simple, du genre :

                          <form method="post" action="resultat.php" >
                          <input type="text" name="mot" />
                          <input type="submit" />
                          </form>


                          quelle doit être la variable après "LIKE" dans ce cas ?

                          merci pour ta réponse :)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 juin 2011 à 13:24:57

                            L'opérateur like est particulier, pour en savoir plus tu peut lire cet article

                            Pour faire simple, dans une expression like, on recherche une série de caractère, et on peut utiliser deux sybole qui sont _ et %

                            _ définit un caractère, peut importe lequel

                            Ainsi un LIKE 'abc_'

                            Retournera tout les chaines qui commencent par abc, et qui comporte un caractère après.

                            abcd => oui
                            abc5 => oui
                            abcde => non

                            % définit plusieurs caractère, peut importe lesquels

                            Il fonctionne comme _ mais ne se limite pas à un seul caractère.

                            Ainsi un LIKE 'abc%'

                            Retournera tout les chaines qui commencent par abc, et peuvent comporter plusieurs caractère après.

                            abcd => oui
                            abc5 => oui
                            abcde => oui

                            On peut les utiliser partout dans la recherche LIKE

                            LIKE '%abc%' => n'importe quel terme qui contient abc et d'autre caractères avant et après.
                            LIKE 'a%b%c' => n'importe quel terme qui commence par a, finit par c et contient au moins un b.

                            Pour un moteur de recherche, on utilise donc généralement

                            <?php
                            mysql_query("SELECT * FROM table WHERE mot LIKE '%" . $_POST['keyword'] . "%'");
                            ?>
                            


                            Un détail, LIKE n'est pas sensible à la casse, c'es à dire qu'il reconnaitra les mots même s'ils n'ont pas les même majuscules/minuscules.

                            Pour effectuer une recherche LIKE avec le respect de la casse, il faut utiliser LIKE BINARY 'mot'
                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 juin 2011 à 14:41:41

                              Génial cela marche nickel tu as parfaitement répondu à mon soucis et je t'en remercie.

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Barre de recherche interne

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown