Requete LIKE sur plusieurs champ == Filtre

Requete LIKE sur plusieurs champ == Filtre - SQL/NoSQL - Programmation

Marsh Posté le 06-06-2008 à 09:48:45    

Bonjour, j'aimerais mettre en place un filtre pour ma liste téléphonique de mon entreprise, je voudrais que le filtre agit sur le nom et le prénom avec en plus la gestion d'un espace! je vous montre le code que je pensais bon:
 

Spoiler :

SELECT CodeMembre,NomMembre, PrenomMembre, NumPosteInt, RaccourciPort, NomServ, Mail FROM Tel_Membre, Tel_Service WHERE Tel_Membre.CodeServ=Tel_Service.CodeServ AND NomMembre," ",PrenomMembre LIKE '%$Filtre%' ORDER BY NomMembre;


 
Voila en faite si la personne entre dans le filtre "f d" je veux que le filtre cherche un "f" dans NomMembre et un "d" dans PrenomMembre!
Ou alors si la personne entre "fran" je veux que ca cherche "fran"soit dans NomMembre ou PrenomMembre, faut pas que ca soit forcément dans les deux champs obligatoirement!
 
Merci.

Reply

Marsh Posté le 06-06-2008 à 09:48:45   

Reply

Marsh Posté le 07-06-2008 à 19:32:09    

à mon avis en SQL pur tu vas galérer, le mieux est d'utiliser le langage qui requête la base pour construire dynamiquement la requête SQL à passer
Je suppose que c'est du PHP+MySQL (quand aucune info est donnée ya 99% de chances que ca soit car les gens pensent toujours que tout le monde fait du PHP+MySQL)
en PHP ca  
pourrait te donner un truc comme ca :

Code :
  1. $query = "SELECT CodeMembre,NomMembre, PrenomMembre, NumPosteInt, RaccourciPort, NomServ, Mail FROM Tel_Membre, Tel_Service WHERE Tel_Membre.CodeServ=Tel_Service.CodeServ ";
  2. if (ereg(" ", $Filtre))
  3. {
  4.   list($nom, $prenom) = split(" ", $Filtre);
  5.   $query .= "AND NomMembre like '%$nom%' AND PrenomMembre like '%$prenom%'";
  6. }
  7. else
  8. {
  9.   $query .= "AND (NomMembre like '%$Filtre%' OR PrenomMembre like '%$Filtre%'";
  10. }


Attention j'ai pondu un truc sans vérifier, et qui n'est sûrement pas suffisamment robuste à tous les cas (genre le cas où il y a plus espaces dans le champs de saisie)
}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed