Recherche chaine dans champs MYSQL - Apprendre-PHP.com

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Recherche chaine dans champs MYSQL

Par paintbox -  5 reponses -  Le 18/11/2010 -  Flux RSS - 

Bonjour Cyrano,

 me revoici déjà avec un nouveau post.

Toujours pour le même projet, je cherche à isoler des produits ayant une base référence identique. 

J'ai fait une vue nommée 'v_gamme' qui reprend tous mes produits. Au passage je commence à apprécier et comprendre l'intérêt  l'usage des vues !

La référence de mes produits se présente sous cette forme : PL1000 càd 2 lettres + un nombre à 4 chiffres (pour l'instant cela pourra évoluer). J'aimerais donc que pour 1 même produit (par ex le PL1000, il me sorte le PL1001, PL1002… PL100N). En fait, ce qui me permet de reconnaître les produits d'une même famille c'est le 10 de PL10000

 Je fais donc  d'abord un $gamme=substr($ref_stylo, 2,2); de mon article en cours.

Puis je fais une requete sur ma vue v_gamme pour trouver dans le champ sty_reference, les produits qui sont de même famille.

Ma requete est :  $request_gamme=("SELECT g.sty_reference, g.ima_chemin FROM v_gamme g WHERE g.sty_reference LIKE '%".$gamme."%' ");

J'utilise un LIKE mais mon soucis c'est que je n'ai pas la possibilité de dire de recherche à partir de la position 2 et sur 2 caractères.

 

Existe t-il une autre solution? J'ai cherché mais je ne trouve rien.

 

Merci 

 

 

Réponses apportées à cette discussion

Par paintbox -  Le 18/11/2010 - 

J'ai trouvé une partie de ma réponse utiliser _ et %. Mais ça ne fonctionne pas.

 
Par Cyrano -  Le 18/11/2010 - 

Regarde du coté des expressions régulières ded MySQL

 

 
Par paintbox -  Le 19/11/2010 - 

Hello,

j'ai donc regardé du côté des regex… je pense avoir compris le principe, mais je rame pour intégrer ma variable dans ma requête. Je pense que mon regerx est bon (enfin j'espère ) mais c'est juste la variable qui coince.

voici mon code 

  1. $request_gamme=("SELECT g.sty_reference, g.ima_chemin FROM v_gamme g WHERE g.sty_reference REGEXP '[a-zA-Z]{2}'".$gamme."'[0-9]{2}'");

 

Pour info, j'ai également essayé avec ta technique de concaténation mais cela ne change rien. Soir il me répond accès impossible à la base soit $request_gamme  "Undefined"

 

 
Par paintbox -  Le 20/11/2010 - 

Je pense que mon regex est bon parce que quand je fais ma requete dans Sequel Pro, il me sort mon résultat. Si ma page il me met que ma variable (requete ) est "Undefined variable".

Je pense que mon erreur doit être dans l'usage de mes " ou ' mais je ne vois pas. J'ai essayé plusieurs solutions sans succès.

 

 
Par paintbox -  Le 21/11/2010 - 

Mon problème est résolu, c'était bien un problème de ' et ".

 

La  solution est donc : 

  1. $request_gamme=("SELECT g.sty_reference, g.ima_chemin FROM v_gamme g WHERE g.sty_reference REGEXP '[a-zA-Z]{2}".$gamme."[0-9]{2}'");

 

 

Ajouter une réponse à la discussion

Seuls les membres loggués sont autorisés à poster dans les forums !