Se connecter / S'enregistrer
Votre question

créer une fonction "rechercher"

Tags :
  • Moteur de recherche
  • Programmation
Dernière réponse : dans Programmation
8 Mai 2007 16:50:03

Bonjour à tous,

J'ai créé un site internet (depuis 2 ans) et je souhaiterais créer un outil de recherche "rechercher" (comme sur le forum actuel)
Merci de me renseigner sur la démarche à suivre ou le site à consulter pour ajouter cette fonctionnalité

@+

Autres pages sur : creer fonction rechercher

9 Mai 2007 15:19:45

________________
rechercher : |________________|

avec la boite de texte à taper ...
9 Mai 2007 19:42:57

Nomme cette pas recherche.php3

  1. <html>
  2. <head>
  3. <title>Résultat de la recherche</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. </head>
  6. <body text="#FFFFFF" bgcolor="#000000" link="#9999FF" vlink="#6699FF" alink="#FFFF00">
  7.  
  8. <font face="Verdana" size=2>
  9.  
  10. <form action="recherche.php3" method="post">
  11. Saisissez un ou plusieurs mots :
  12. <input type="text" name="mot" size="20">
  13. <input type="submit" value="Rechercher">
  14. </form>
  15.  
  16. <?
  17. /******************************************************************
  18. * VARIABLES A MODIFIER
  19. ******************************************************************/
  20.  
  21. // NOMBRE DE RESULTATS PAR PAGE
  22. $limit=2;
  23.  
  24. // NOM DE CE SCRIPT
  25. $script_name="recherche.php3";
  26.  
  27. // SERVEUR SQL
  28. $sql_serveur="localhost";
  29.  
  30. // LOGIN SQL
  31. $sql_user="";
  32.  
  33. // MOT DE PASSE SQL
  34. $sql_passwd="";
  35.  
  36. // BASE DE DONNEE
  37. $sql_bdd="tmp";
  38.  
  39. // RECHERCHE AVEC TOUS LES MOTS : METTEZ "and"
  40. // RECHERCHER LES PAGES QUI CONTIENNENT AU MOINS UN MOT : METTEZ "or"
  41. $et_ou="or";
  42.  
  43.  
  44. /******************************************************************
  45. * PROGRAMME PRINCIPAL
  46. ******************************************************************/
  47.  
  48. $db_link = mysql_connect("$sql_serveur","$sql_user","$sql_passwd");
  49.  
  50. $mot=strtolower($mot);
  51. $mots=split(" ",$mot);
  52. $nombre_mots=count($mots);
  53.  
  54. $z=1;
  55. $texte="Pages contenant <b>"$mots[0]"</b>";
  56. $phrase="'%$mots[0]%'";
  57. while($z<$nombre_mots)
  58. {
  59. $phrase.=" ".$et_ou." mots like '%$mots[$z]%'";
  60. $texte.=" ";
  61. if($et_ou=="and"){$texte.="et";}else{$texte.="ou";}
  62. $texte.=" <b>"$mots[$z]"</b>";
  63. $z++;
  64. }
  65.  
  66. if($debut==""){$debut=0;}
  67. $debut=$page*$limit;
  68.  
  69. // NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE
  70. $requete=mysql_db_query("$sql_bdd","select count(*) from recherche where mots like $phrase order by id",$db_link);
  71. $nb_total=mysql_result($requete,0,"count(*)");
  72.  
  73. $requete=mysql_db_query("$sql_bdd","select * from recherche where mots like $phrase limit $debut,$limit",$db_link);
  74. $num=mysql_num_rows($requete);
  75.  
  76. // DEFINITION DU MESSAGE A AFFICHER
  77. if ($num==0) {echo "Désolé, aucune page de ce site ne contient <b>$mot</b>...";}
  78. else if ($mot=="") {echo "Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !";}
  79. else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";}
  80.  
  81. // AFFICHAGE DES RESULTATS
  82. else {
  83.  
  84. echo "<b>$nb_total</b> réponse";
  85. if ($nb_total>1) {echo "s";}
  86. echo "<br>$texte";
  87.  
  88. $i=0;
  89. while($i<$num)
  90. {
  91. $url=mysql_result($requete,$i,"url");
  92. $description=mysql_result($requete,$i,"description");
  93. $titre=mysql_result($requete,$i,"titre");
  94. echo "<br><br><a href=\"$url\"><b>$titre</b></a><br>$description<br><font size=1>$url</font>\n";
  95. $i++;
  96. }
  97.  
  98. echo "<br><br>";
  99.  
  100. // AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST
  101. // (LA PREMIERE PAGES EST 0)
  102. if ($page>0)
  103. {
  104. $precedent=$page-1;
  105. print "<a href=\"$script_name?page=$precedent&mot=$mot\">PRECEDENT</a> \n";
  106. }
  107.  
  108.  
  109. // AFFICHAGE DES NUMEROS DE PAGE
  110. $i=0;$j=1;
  111. if($nb_total>$limit)
  112. {
  113. while($i<($nb_total/$limit))
  114. {
  115. if($i!=$page){echo "(<a href=\"$script_name?page=$i&mot=$mot\">$j</a>) ";}
  116. else {echo "<b>($j)</b> ";}
  117. $i++;$j++;
  118. }
  119. }
  120.  
  121.  
  122. // AFFICHAGE DU LIEN SUIVANT SI BESOIN EST
  123. if($debut+$limit<$nb_total)
  124. {
  125. $suivant=$page+1;
  126. echo "<a href=\"$script_name?page=$suivant&mot=$mot\">SUIVANT</a>";
  127. }
  128. }
  129.  
  130.  
  131. // DECONNEXION DE LA BASE DE DONNEE
  132. mysql_close($db_link);
  133. ?>
  134.  
  135. </font>
  136. </body>
  137. </html>


-------------------------------------------------------------------------------
Pour faire fonctionner ce moteur de recherche sur ton site, tu dois disposer du langage PHP et d'une base de donnée MySQL.
Ensuite, tu dois respecter les étapes suivantes :

1) Créez la table "recherche" dans ta base de données (peu importe le nom de la base mais la table doit se nommer "recherche") :

CREATE TABLE recherche (
id int(4) NOT NULL,
titre varchar(200),
url varchar(200),
description blob,
mots blob,
PRIMARY KEY (id)
);

2) Insére les enregistrements dans la table de la façon suivante (tout en minuscules) :
INSERT INTO recherche VALUES( 1, "titre de la page", "url complète", "description de la page", "mots clé");

Quelques exemples :
INSERT INTO recherche VALUES( 1, "Mes fichiers MIDI", "http://www.toto.fr/midi.htm", "Là, c'est ma page avec plein de musiques à télécharger", "fichiers midi télécharger musiques");
INSERT INTO recherche VALUES( 2, "Album photo", "http://www.toto.fr/photos.htm", "Si mes photos de vacance vous intéressent, c'est par ici", "photos vacances album");

3) Modifie les paramètres en entête du fichier "recherche.php3".

4) Place les pages "formulaire.htm" et "recherche.php3" dans ton site, dans le même répertoire et c'est partit !

5) Mise à jour des enregistrements du moteur de recherche :
Si tu modifie les pages de ton site ou si tu crée des nouvelles, utilise la requête MySQL suivante :
UPDATE recherche SET MOTS="tape ici TOUS les mots-clé de la page" WHERE ID=x;
Remplace "x" par l'identifiant de l'enregistrement.
Par exemple, dans ta page "Album photo", tu as ajouté tes photos de ski. Pour ajouter les mots-clé "ski montagne hiver", la requête sera :
UPDATE recherche SET MOTS="photos vacances album ski montagne hiver" WHERE ID=2;
Contenus similaires
10 Mai 2007 08:14:43

Bien merci pour ta réponse ;) 
Je vais pouvoir tester ça une fois que j'aurais installé mysql :) 

Autre chose : mon serveur accepte le php mais pas le php3, il y a certains programmes qui marchaient sous php3 que j'ai renommé en php et qui marchent quand même (mon formulaire en php par exemple était en .php3, depuis que je l'ai renommé en .php ça marche)
C'est obligé de se service du .php3 plutôt que du .php?
11 Août 2007 11:34:49

bonjour;
j'ai testé le script, il marche bien, mais il m'affiche le message d'erreur suivant :
Undefined variable: page
qu'elle est la valeur initial de la variable page
merci
a c 232 L Programmation
11 Août 2007 16:48:09

J'ai pas regardé en détail, mais je dirais de remplacer :
if($debut=="" ){$debut=0;}
Par
if($page=="" ){$page=0;}
12 Août 2007 12:51:23

bonjour;

j'ai remplacé l'instruction if($debut=="" ){$debut=0;} par celle que vous m'avez proposée, le message est : Undefined variable: debut

que dois je faire dans ce cas,

remarque: la fonction donne des résultats mais le message d'erreur apparait à chaque fois
a c 232 L Programmation
12 Août 2007 22:33:34

C'est à quelle ligne qu'il t'indique "Undefined variable: debut" ??
Car, si tu as remplacé ce que je t'ai dit, normalement, il initialise debut avec page*limit, mais ne l'affiche pas avant, donc il ne devrait pas y avoir de message comme ceci ?!
13 Août 2007 11:38:31

bonjour;

j'ai trouvé la solution, j'ai initialisé la valeur de la variable page à 0 et sa marche

merci pour votre aide
10 Octobre 2008 14:23:35

C'est en PHP3 ce moteur de recherche ...

Y a t'il le meme en php ???

Parceque chez moi en php3 ça ne fonctionne pas ....

Que devrais-je changer dans celui-ci pour le rendre operationnel en php ?
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS