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