Vous êtes ici Codes PHP et MySQL > Recherches > Moteur de recherche multi fonctions

 

Moteur de recherche multi fonctions

Ce code permet de créer la requête pour une recherche dans une table.

La recherche peut être faite en: AND OR et en phrase exacte.
 
R@f
[17] sources en PHP voir
Code vu 16661 fois
Enregistré le 10 Mai 2006
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Moteur de recherche multi fonctions
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Moteur de recherche multi fonctions                       */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts169-PHP.htm              */
/* Auteur         : R@f                                                       */
/* Date édition   : 10 Mai 2006                                               */
/*                                                                            */
/******************************************************************************/
?>
********
Formulaire
********
<form action="search.php" method="post">
<input type="text" name="search" size="100"><br>
<input type="radio" name="option" value="all" checked>Recherche tous les mots<br>
<input type="radio" name="option" value="one">Rechercher un de ces mots<br>
<input type="radio" name="option" value="sentence">Rechercher l'expression exacte
      
<br><br>
<input type="submit" value="Rechercher" style="position:relative;left:20px;">
</form> 

*******
Fonction
*******
<?php
function requete($table,$champs,$select,$order,$sens,$limit_start,$limit_nb,$count='')
{
   // option de recherche
   $option $_POST['option'];
   // texte de recherche
   $search $_POST['search'];
      
   // si c'est le premier appel de la fonction
   if(!isset($fonction_requete))
   {
      static $fonction_requete 1;
      
      // si "Rechercher tous les mots" ou "Rechercher un de ces mots"
      if($option == 'all' || $option == 'one')
      {
         // liste des mots
         $mots explode(' '$search);
         
         // sépararateur
         if($option == 'all')
            $sep ' AND ';
         else
            $sep ' OR ';
      } // if($option == 'all' || $option == 'one')
      // "Rechercher l'expression exacte"
      else
      {
         $mots $search;
         $sep '';
      }
   } // if(!isset($fonction_requete))
   
   if(!is_array($champs))
      $champs = array($champs);
   
   if($option == 'all' || $option == 'one')
   {
      // pour savoir si on en est à la première itération ou non
      $i 0;
      
      // pour tous les mots
      foreach($mots as $mot)
      {
         if(!$i)
         {
            $search '~#^!|!^#~ LIKE \'%' $mot '%\'';
            $i 1;
         }
         else
            $search .= $sep '~#^!|!^#~ LIKE \'%' $mot '%\'';
      } // foreach($mots as $mot)
   // if($option == 'all' || $option == 'one')
   else if($option == 'sentence')
      $search '~#^!|!^#~ LIKE \'%' $mots '%\'';
      
   $i 0;
   
   // début de requête
   if(empty($count))
      $req_search 'SELECT ' $select ' FROM ' $table ' WHERE ';
   else
      $req_search 'SELECT count(' $count ') FROM ' $table ' WHERE ';
   
   // ajout des champs
   foreach($champs as $champ)
   {
      if(!$i)
      {
         $req_search .= '( ' str_replace('~#^!|!^#~'$champ$search) .' ) ';
         $i 1;
      }
      else
         $req_search .= 'OR ( ' str_replace('~#^!|!^#~'$champ$search) .' ) ';
   }
   
   if(empty($count))
      $req_search .= "ORDER BY $order $sens LIMIT $limit_start, $limit_nb";
   
   return $req_search;
} 
?>
*********
Paramètres
*********
$table: table dans laquelle effectuer la requête
$champs: champs dans lesquels la recherche est effectuées (si plusieurs champs,
         $champs est un tableau)
$select: champs à récupérer
$order: champ de classement
$sens: ASC ou DESC
$limit_start: départ
$limit_nb: nombre d'enregistrements sélectionnés
$count: paramètre optionnel: Si est vide ou non-passé, la requête
est crée normalement. Sinon, il désigne le champ pour créer la requête count()

En simplifé, la requête est générée comme ceci:
SELECT $champs FROM $table WHERE ... ORDER BY $order $sens LIMIT $limit_start, $limit_nb 

*******
Exemple:
*******
$requete = requete('table', array('champ1', 'champ2'), 'id, champ4', 'id', 'DESC', 10, 5);
$result = mysql_query($requete); 
 

Fonctions du code

: Détermine si une variable est affectée - (PHP 4, PHP 5)
: Coupe une chaîne en segments - (PHP 4, PHP 5)
: Détermine si une variable est un tableau - (PHP 4, PHP 5)
: Crée un tableau - (PHP 4, PHP 5)
: Détermine si une variable contient une valeur non nulle - (PHP 4, PHP 5)
: Remplace toutes les occurrences dans une chaîne - (PHP 4, PHP 5)
Commentaires
Salut , j'ai du mal à tout saisir comment l'utiliser , serait il possible d'avoir une mise en page un peu plus fonctionnel directement ,
Merci :)
 
Bonjour

En effet ce script est interrant mais il faudrait à mon avis spécifier d'avantages les champs correpondants dans la base de donnée, d'ailleurs il me semble qu'il serait plus judicieux d'utiliser la methode get que post. il serait sans doute bons il me semble que pour des tables diiférentes il faille spécifier des jointures dans le script php et dans l'exemple de base de données.
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Recherches

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité