Requête mysql avec REGEX

joboy84 Messages postés 23 Statut Membre -  
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,

J'ai un formulaire de recherche.

Dans ma base de données, ces dernières sont sous le format de chiffres séparés d'une virgule (1,11,15)

Pour retrouver les lignes contenant le chiffre 1 j'ai fais dans phpmyadmin:

SELECT * FROM jeux_concours WHERE categorie REGEXP (^|,)1($|,)


Ce code fonctionne, mais j'ai du mal à le faire fonctionner dans mon code php...

J'ai essayé '.(^|,)$cat($|,).' mais ca ne fonctionne pas.

$datas = $database->pdo->prepare(('SELECT * FROM jeux_concours WHERE categorie REGEXP "(^|,)$cat($|,)"');


Comment faire ?

Merci

2 réponses

  1. Zero
     
    Hello,

    Peut être comme ça :
    $datas = $database->pdo->prepare('SELECT * FROM jeux_concours WHERE categorie REGEXP (^|,)'.$cat.'($|,)');
    
    1
    1. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      Ah mais oui, je n'avais pas fait gaffe aux guillemets et j'avais lu trop vite... J'ai cru que c'était la requête qui posait problème, pas le php... +1
      0
  2. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    L'utilisation d'une Regex se justifie-t-elle vraiment ? Dans l'exemple que tu donnes, non, mais peut-être fais-tu des choses plus compliquées derrière.

    Personnellement, j'aurais répondu à ton problème de la façon suivante :
    SELECT * FROM jeux_concours WHERE categorie LIKE '1,%' OR categorie LIKE '%,1' OR categorie LIKE '%,1,%'

    Je ne vois pas de façon plus simple.
    La méthode "propre" consisterait à transformer le champ categorie en table (en utilisant une fonction à créer) et faire une requête standard dessus.

    Xavier
    0