Accès au manager - réservé aux membres

Bouts de Codes PHP

Moteur de recherche multi fonctions

Informations sur le code source PHP


Ecrit par :  R@f

Autres codes en PHP de l'auteur : [18] sources » Voir

Date d'enregistrement du code le 10-05-2006 - Vu 7524 fois

Code source zippé: » Télécharger le fichier ZIP

Impression: » Imprimer le code

Ajouter la page à vos favoris »



Description du code source


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.




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
.142
 

/***************************************************************/
/*                                                             */
/*                __        ____                               */
/*          ___  / /  ___  / __/__  __ _____________ ___       */
/*         / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<       */
/*        / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/       */
/*       /_/       /_/                                         */
/*                                                             */
/*                                                             */
/***************************************************************/
/*                                                             */
/*  Titre:
/*  Moteur de recherche multi fonctions
/*                                                             */
/*  URL: http://www.phpsources.org/scripts169-PHP.htm
/*  Auteur: R@f
/*  Date édition: 10-05-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 source


array : Crée un tableau - (PHP 4, PHP 5)
count : Compte le nombre d'éléments d'un tableau ou le nombre de propriétés d'un objet - (PHP 4, PHP 5)
each : Retourne chaque paire clé/valeur d'un tableau - (PHP 4, PHP 5)
empty : Détermine si une variable contient une valeur non nulle - (PHP 4, PHP 5)
explode : Coupe une chaîne en segments - (PHP 4, PHP 5)
is_array : Détermine si une variable est un tableau - (PHP 4, PHP 5)
isset : Détermine si une variable est affectée - (PHP 4, PHP 5)
mysql_query : Envoie une requête à un serveur MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
str_replace : Remplace toutes les occurrences dans une chaîne - (PHP 4, PHP 5)

Dépôt de ressources


Votre participation pour les dépôts de sources est possible à partir de l'espace membre. Il faut être inscrit pour déposer une ressource sur le site.

» Inscription libre et gratuite