Tom's Guide > Forum > Programmation > créer une fonction "rechercher"
Mot :    Pseudo :           
 

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é

@+

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

________________
rechercher : |________________|

avec la boite de texte à taper ...


Message édité par razmo78 le 09-05-2007 à 15:20:53
Répondre à razmo78

Nomme cette pas recherche.php3

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

------------------------------ Rémunère ton site
Hosting Favicon
Clic pas ici
Répondre à Allstar27

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?

Répondre à razmo78

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

Répondre à phpdeb

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

------------------------------ Les dessins des seins ou les desseins des saints ?
Répondre à OmaR

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

Répondre à phpdeb

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 ?!

------------------------------ Les dessins des seins ou les desseins des saints ?
Répondre à OmaR

bonjour;

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

merci pour votre aide

Répondre à phpdeb

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 ?

Répondre à Jackisback
Tom's Guide > Forum > Programmation > créer une fonction "rechercher"
Aller à :

Il y a 1683 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens