Vous êtes ici > code source PHP > Recherches > Moteur de recherche multi fonctions







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.

| .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);
|

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)

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