IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Filtrer une requête avec une regexp [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de _kal_
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Points : 156
    Points
    156
    Par défaut Filtrer une requête avec une regexp
    Bonjour,

    Je dispose d'une BD MySQL de la forme suivante :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    mysql> show tables;
    +-------------------+
    | Tables_in_video67 |
    +-------------------+
    | ABONNES           | 
    | ACTEURS           | 
    | CASSETTES         | 
    | EMPRES            | 
    | FILMS             | 
    +-------------------+
    
    mysql> describe FILMS;
    +-------------+--------------------------------------------------------------------------+------+-----+---------+-------+
    | Field       | Type                                                                     | Null | Key | Default | Extra |
    +-------------+--------------------------------------------------------------------------+------+-----+---------+-------+
    | NoFilm      | smallint(6)                                                              | NO   | PRI |         |       | 
    | Titre       | varchar(80)                                                              | NO   |     |         |       | 
    | Nationalite | varchar(30)                                                              | YES  |     | NULL    |       | 
    | Realisateur | varchar(40)                                                              | YES  |     | NULL    |       | 
    | Couleur     | enum('Couleurs','Noir et Blanc')                                         | NO   |     |         |       | 
    | Annee       | year(4)                                                                  | YES  |     | NULL    |       | 
    | Genre       | enum('Comédie','Comédie dramatique','Drame','Aventure','Documentaire')   | YES  |     | NULL    |       | 
    | Duree       | smallint(6)                                                              | YES  |     | NULL    |       | 
    | Synopsis    | varchar(255)                                                             | YES  |     | NULL    |       | 
    +-------------+--------------------------------------------------------------------------+------+-----+---------+-------+

    Mon objectif est de récupérer le titre depuis un formulaire HTML. Si ce titre est different de la chaîne vide, alors je recherche un film par son titre. Cependant, je veux que l'utilisateur puisse simplement entrer une partie du titre, et non le titre entier. Par conséquent, il faut que je puisse appliquer une expression régulière. Celle-ci peux se situer à deux endroits différents :
    • Dans la requête SQL elle même
    • En filtrant le résultat de la requête


    Si j'essai d'appliquer une regex a ma requête SQL, ca ne fonctionne pas :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql> select Titre from FILMS WHERE TRUE REGEXP '.*ciel.*';
    Empty set (0.00 sec)
    Il y a un film dont le titre est 'Le ciel est à vous' dans la table FILMS.

    L'autre option, c'est de récupérer tout les titre de film à l'aide d'un mysql_query, appliquer ma regex sur chacun de ces titres et ne conserver que les bon élément dans mon $result:
    Exemple :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $result = mysql_query("SELECT Titre FROM FILMS", $idcom);
    $ligne = mysql_fetch_array($result)
    foreach($ligne as $titre) {
    // j'applique la regex
    }
    Là je bloque un peu pour appliquer la regex, et je pense qu'il est plus propre de l'appliquer directement dans la requête, non?

    Merci de m'éclairer

    Kal

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par _kal_
    Là je bloque un peu pour appliquer la regex, et je pense qu'il est plus propre de l'appliquer directement dans la requête, non?
    C'est certain mais un simple LIKE ne vous suffit-il pas ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from FILMS WHERE Titre LIKE '%ciel%';

  3. #3
    Membre habitué Avatar de _kal_
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Points : 156
    Points
    156
    Par défaut
    Merci ca fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [SQL] Requête dans une requête...avec des INNER JOIN!
    Par PedroBD dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 06/04/2006, 08h26
  5. Tester l'existence d'une table avec une requête
    Par Oluha dans le forum Access
    Réponses: 6
    Dernier message: 29/08/2005, 09h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo