Moteur de recherche !

Ce topic a été résolu
Jujudufoot

Jujudufoot Le 27 mars 2016 à 19:06 (Édité le 25 janvier 2019 à 17:50)

Bonjour PrimFX !

J'aimerais crée un moteur de recherche en php ! Pourrais-tu faire un tuto ?

Merci
dqfjsqhgfdqhvsq

dqfjsqhgfdqhvsq Le 27 mars 2016 à 20:00

Oulah ! Tu t'attaques à du lourd toi. Faire un moteur de recherche en php est réalisable mais cela dépend ce que tu entends par recherche. Un moteur de rechercher sur le web ou sur ton pc, dans ta base de donné, dans ton album photo. Certains sont plus simples à réaliser que d'autres 😉
Jujudufoot

Jujudufoot Le 27 mars 2016 à 20:36

Nous travaillons en collaboration avec un ami, je pense plus un moteur de recherche web !

J'ai testé ce code que j'ai trouvé sur internet, ne marche pas... Je ne comprend pas pourquoi !
<?php
Jujudufoot

Jujudufoot Le 27 mars 2016 à 20:36

<?php
   
   //Initialisation de la variable contenant les résultats !
   $resultats = "";
   //Traitement de la requête !
   if (isset($_POST['query']) && !empty($_POST['query']))
   {
   //Si l'utilisateur a entré quelque chose, on traite sa requête...
   //On rend clean la requête de l'utilisateur !
      $query = preg_replace("#[^a-zA-Z ?0-9]#i", "", $_POST['query']);
      
      if ($_POST['filtre'] == "Site entier")
      {
      } else if ($_POST['filtre'] == "Blog")
      {      
         $sql = "SELECT id, blog_title AS title FORM blog WHERE blog_title LIKE ? OR blog_content LIKE ?";
      } else if ($_POST['filtre'] == "Pages")
      {
         $sql = "SELECT id, page_title AS title FORM pages WHERE page_title LIKE ? OR page_content LIKE ?";
      }
      //Connexion à la base de données !
      include("db_connect.php");
      $req = $db->prepare($sql);
      $req->execute(array('%'.$query.'%', '%'.$query.'%'));
      $count = $req->rowCount();
      if($count >= 1)
      {
      echo "$count résultat(s) trouvé(s) pour <strong>$query</strong> <hr/>";
      while ($data = $req->fetch(PDO::FETCJ_OBJ))
         {
            echo '#'.$data->id.' - Titre: '.$data->title;
         }
      } else
      {
         echo "0 résultat trouvé pour <strong>$query</strong> <hr/>";
      }
   }
?>
<!DOCTYPE html>
   <html>
   <head>
      <title>Système de recherche</title>
      <meta charset="utf-8">
   </head>
   <body>
      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"></form>
         <label for="query">Entrer votre recherche...</label><br><br>
         <input type="search" name="query" maxlength="80"  size="80" id="query"/>
         Rechercher au niveau de :
         <select name="filtre">
            <option value="Site entier">Site entier</option>
            <option value="Blog">Blog</option>
            <option value="Pages">Pages</option>
         </select>
         <input type="submit" value="Rechercher">
      </form>
      <?php echo $resultats; ?>
      </body>
      </body>
   </body>
</html>
bykertix

bykertix Le 27 mars 2016 à 20:40 (Édité le 27 mars 2016 à 20:40)

Perso si je serai toi, j'attendrai de mis connaitre plus en php car si tu recherche des codes tout fait sur internet c'est pas trop sa quoi 😠;)
PrimFX

PrimFX Le 27 mars 2016 à 20:57

+1 pour @thibault_feugere et @bykertix lol

Le problème est que tu dis ceci dans ton post:
 je pense plus un moteur de recherche web ! 
Et le code que tu envoies permet uniquement la recherche dans une base de donnée, en tout cas vu la requête SQL 😋

Donc quand tu dis "un moteur de recherche web", tu parles d'un Search Engine style Google, Yahoo, Bing, etc. ? Ou bien un moteur de recherche uniquement sur ton site ? 😉

Sinon, pour répondre à ta question initiale: oui je compte faire un tuto sur la création d'une barre de recherche interne (uniquement sur son site, donc), mais je ne sais pas encore du tout quand je ferai ça 😦
PaulLavieille

PaulLavieille Le 27 mars 2016 à 22:59

Salut !

Et pour faire un moteur de recherche mais seulement par rapport aux pages de son site, c'est compliqué ? 
Par exemple on tape "tablette" dans la barre de recherche et ça mets toutes les pages qui ont "tablette" en <TITLE> ou une meta description ?
dqfjsqhgfdqhvsq

dqfjsqhgfdqhvsq Le 27 mars 2016 à 23:04

Non, ca n'est pas très compliqué. Pour te donner un exemple si sur le site de Primfx tu tapes Cyprien, tu vas tomber sur un article d'il y a un mois et quelques. 
PaulLavieille

PaulLavieille Le 28 mars 2016 à 00:07

Et... Faut faire comment ? 😋
PrimFX

PrimFX Le 28 mars 2016 à 00:13

La façon la plus simple de faire est d'utiliser le LIKE %"tonmot"% en SQL... Je pense que ce lien pourra t'être utile 😉
PaulLavieille

PaulLavieille Le 28 mars 2016 à 14:50

Ouais mais faut obligatoirement une base de donnés :/
dqfjsqhgfdqhvsq

dqfjsqhgfdqhvsq Le 28 mars 2016 à 14:53

Oui, c'est indispensable ! 😄
Jujudufoot

Jujudufoot Le 28 mars 2016 à 16:08

Ouais, j'aurai aimé un navigateur web...

Sinon, quelqu'un aurait un hébergeur bien et gratuit ?
dqfjsqhgfdqhvsq

dqfjsqhgfdqhvsq Le 28 mars 2016 à 16:12

Il n'existe aucun hebergeur web super bien gratuit et sans aucune contre-partie hélas... 😦
PaulLavieille

PaulLavieille Le 28 mars 2016 à 16:25

@Jujudufoot Oui ! hostinger est vraiment bien 😉
PrimFX

PrimFX Le 28 mars 2016 à 16:50

@PaulLavieille Oui, base de donnée obligatoire, faut bien un endroit où chercher les informations 😋

@Jujudufoot En effet, hostinger est pas mal pour faire des tests, configurer ses premiers serveurs mutualisés, etc. Mais tu seras assez vite limité en terme de puissance 😰
PaulLavieille

PaulLavieille Le 28 mars 2016 à 17:29

@PrimFx Il doit y avoir un moyen sans base de donnée regarde ici, c'est un bouton de recherche google pour mon site. J'aimerais ça mais sans que ça soit par Google quoi ^^ Google n'a pas une base de donnée avec des  mots pour chaque page du monde je pense 😉 
dqfjsqhgfdqhvsq

dqfjsqhgfdqhvsq Le 28 mars 2016 à 19:48

Oui, bien sûr et c'est ca qui est magique dans le développement web. Tu peux TOUT faire sans aucune limite mais la bdd te permettra beaucoup plus de choses. Pourquoi ne pas vouloir passer par là ? :/
PaulLavieille

PaulLavieille Le 28 mars 2016 à 20:43

Je n'ai pas le temps de faire des mots clés pour chaque page :-/
PrimFX

PrimFX Le 28 mars 2016 à 21:36

Justement, tu pourrais te baser sur le LIKE en SQL qui te permettrait de gérer ça sans avoir à créer des tags spécifiques pour chaque page 😀
PaulLavieille

PaulLavieille Le 28 mars 2016 à 21:55

Je  vais pas créer un table avec 300 pages donc 300 champs ! 😋 
Il y a une autre méthode ? J'ai pas compris ta question ?^^
PrimFX

PrimFX Le 28 mars 2016 à 21:58

Ahhhh mais tu veux dire que toutes tes pages sont indépendantes en HTML uniquement ? Et que le contenu n'est pas généré via une base de donnée ? 😮
Sinon tu as la possibilité d'intégrer Google à ton site pour les recherches internes, mais je ne sais pas ce que ça vaut 😋
PaulLavieille

PaulLavieille Le 28 mars 2016 à 22:18

Oui, chaque page existe "physiquement" car je n'arrive pas à transformer page.php?id=9 en unnom/unautre/lapage :-/ 
Pour Google tu pense à ça
PrimFX

PrimFX Le 28 mars 2016 à 22:23

"car je n'arrive pas à transformer page.php?id=9 en unnom/unautre/lapage :-/"
Pour ça, faut utiliser l'URL Rewriting 😋
Sinon pour Google oui je pensais à ce que tu m'as envoyé 😉
PaulLavieille

PaulLavieille Le 28 mars 2016 à 22:31

Je sais mais j'y arrive pas :-/
D'acc, tu pense que ça choquerais sur mon site ?