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 :
Il y a un film dont le titre est 'Le ciel est à vous' dans la table FILMS.
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)
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 :
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?
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 }
Merci de m'éclairer
Kal
Partager