begin process at 2012 05 27 18:28:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

SQL

 > SEARCH QUERY COMPOSER

SEARCH QUERY COMPOSER


 Information sur la source

Note :
Aucune note
Catégorie :SQL Classé sous :recherche, sql, condition, liste, contact Niveau :Débutant Date de création :06/08/2009 Date de mise à jour :06/08/2009 17:39:55 Vu :2 973

Auteur : Centauriel

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Cette petite fonction vous permettra de composer une condition MySQL pour par exemple une barre de recherche avec auto-complétion AJAX.

Source

  • function search_query_composer($search,$title)
  • {
  • $tab = array_unique(explode(' ',$search));
  • $cond = array();
  • foreach ($tab as $key)
  • {
  • foreach ($title as $field)
  • {
  • if ($key!='')
  • $cond[] = $field.' LIKE "%'.addslashes($key).'%"';
  • }
  • }
  • if (!empty($cond))
  • {
  • return implode(' OR ',$cond);
  • }
  • else
  • return '1=1';
  • }
function search_query_composer($search,$title)
{
	$tab = array_unique(explode(' ',$search));
	$cond = array();
	foreach ($tab as $key)
	{
		foreach ($title as $field)
		{
			if ($key!='')
				$cond[] = $field.' LIKE "%'.addslashes($key).'%"';
		}
	}
	if (!empty($cond))
	{
		return implode(' OR ',$cond);
	}
	else
		return '1=1';
}

 Conclusion

Utilisation :

$cond search_query_composer($search,$title)

$search string : mots clés recherchés par l'utilisateur séparés par un espace (à récupérer directement via la page appelée par AJAX.
Exemple : "cochon dine coucou lol     hibou "

$title : array(string) : tableau des champs sql dans lesquels rechercher.
Exemple : "array('nom','prenom','adresse")"

$cond string : condition composée. A insérer directement dans le code sql comme n'importe quelle condition.
Exemple : 'SELECT nom,prenom FROM contacts WHERE '.$cond.' ORDER BY nom'

La meilleure utilisation est une recherche de contacts.
En tapant le nom, le prénom on peut accéder à la liste des contacts correspondant à/aux mot(s)-clé saisis.


 Historique

06 août 2009 17:39:55 :
Amélioration. Merci garfield90 !

 Sources de la même categorie

Source avec Zip CLASS PHP :: REQUÊTES MYSQL par devgoneti
Source avec Zip Source avec une capture CONVERTIR BASE FIREBIRD EN MYSQL par castelfrederic29
Source avec une capture SQL/EXE EXECUTEUR DE REQUETTES SQL par enokbyreal
Source avec Zip ESPACE MEMBRE BASIQUE par bonhommecrea
Source avec Zip Source avec une capture MODIFICATEUR DE DONNEES DANS UNE BASE SQL AVEC LISTING DES T... par cram121

 Sources en rapport avec celle ci

INSPECTEUR DE PAGES (VÉRIFIEZ SI DES SITES AFFICHENT UN TEXT... par pablo836
Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
Source avec Zip Source avec une capture RECHERCHE ET LISTE par liptibilly
Source avec Zip LISTER LES TERMES RECHERCHÉS DANS GOOGLE OU YAHOO POUR ARRIV... par inc002
Source avec Zip Source avec une capture UNE APPLICATION PHP POUR UNE BIBLIOTHEQUE EN LIGNE A TITRE G... par ramzi_achich

Commentaires et avis

Commentaire de garfield90 le 06/08/2009 16:44:58

y a plus simple voire plus propre.

function search_query_composer($search,array $title){
    $tab = array_unique(explode(' ',$search)); // on pourra utiliser split pour avoir plusieur separateur voire utiliser preg_split pour avoir des mots de n caractères
    $cond = array();
    foreach ($tab as $key){
       // if ($key != '' ) je doute de l'utilité mais si il est utile autant le faire dans la premiere boucle c'est autant de parcours du tableau suivant d'éviter ainsi que du même test
       foreach ($title as $field){
         $cond[] = $field.' LIKE "%'.$key.'%"'; // attention au metacaractere SQL ainsi qu'aux injections SQL
       }
    }
    if ( count($cond) > 0 ){
       return implode(' OR ',$cond); // evite de redécouper la chaine
    }
    return false ;
    // j'ai supprimer le 1=1 car la requete est inutile si il y a pas de filtre
}

my 2 cents

Commentaire de Centauriel le 06/08/2009 17:40:54

Merci, j'ai fait quelques modifications.
Pour le 1=1, je suppose que quand on ne tape rien, on affiche tout le monde.
C'est plus un filtre qu'une recherche...
;)

Commentaire de astro53 le 07/08/2009 10:32:16

Salut Centauriel,

Si tu veut faire une recherche utilise match($motCles) against($condition). Pour plus de renseignement va voir le manuel PHP
http://www.manuelphp.com/mysql/fulltext-search.php
A bientot
Astro

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

liste deroulante et sql [ par alphacrash ] VOila, j'ai une liste deroulante avec des options déja définies, mais à chaque option correspond un résumé.Le tete du résumé est stocké dans une base Au secours !!!! [ par eowene ] Bonjour à tous. J'ai un problème et je ne comprends pas du tout d'où il vient.Voilà le principe...Je recherche un nom dans une base de données. Pour c Au secours [ par eowene ] Bonjour à tous. J'ai un problème et je ne comprends pas du tout d'où il vient.Voilà le principe...Je recherche un nom dans une base de données. Pour c systeme de panier de selection... [ par h2h ] voila sur mon appli lutilisateur a la possibilité de selectionné plusieurs critere et selon ses choix une liste est générer ( une liste de bien presen liste deroulantes liées entre elles avec sql [ par ophiure ] slt,j'ai une table sql avec les champs suivant, region, departement, code postal et villeje voudrais placer 3 liste deroulante dans une page, dans la Erreur Mysql [ par FearBlue ] Slt a tous!!!!jai une erreur mysql :je v vous montrer mon code c en rapport avec LIKEif(isset($HTTP_POST_VARS['recherche'])){$db = mysql_connect('loca liste déroulante, php, sql [ par gypsi3000 ] Je souhaiterai faire afficher une liste d'adresse web répertoriée dans une base de données depuis un menu déroulant qui correspond aux thèmes identifi recherche d'une table SQL conportant CODE DEPARTEMENT , VILLE ... [ par valva ] recherche d'une table SQL conportant CODE DEPARTEMENT , VILLE REGION ....en fonction de plusieur pays si possibleet mieux encore si vous avé la dist aide moteur de rechrche php sql [ par zizou94 ] Bonjour a tous, J'essaie depuis un semaine d inserer un moteur de recherche si mon site et je n y arrive pas. Etant novice en programmation je ne m en Liste deroulante et sql [ par nicographx ] Bonjourdans ma base de donnée, j'ai plusieurs champs que les utilisateurs peuvent renseigner :comm1, comm2, comm3, ...., comm50je souhaite faire


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales