[résolu] mysql et regexp

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par e-kiwi, 3 Août 2006.

  1. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    bonjour,

    j'ai une table article avec deux champs : art_titre et art_texte
    j'ai un nom de société $ent_nom

    je cherche à trouver dans ma table article les articles qui citent cette société. pour cela , je recherche la chaine de caractere ent_nom dans mon art_titre et art_texte, mais en ignorant les articles dans lequel ma chaine est précédé ou suivie d'un caractere compris entre A et Z (pour, par exmple, si j'ai une société qui s'appelle CCI, que cela ne me ressorte pas un article contenant le mot "accident")

    ma requete est :
    $requete2="select * from articles where (art_titre like \"%$ent_nom%\" and art_titre NOT REGEXP \"[a-z]".$ent_nom."[a-z]\") or (art_texte like \"%$ent_nom%\" and art_texte NOT REGEXP \"[a-z]".$ent_nom."[a-z]\")";

    vous semble-t-elle correcte ?
     
  2. siddhy
    siddhy WRInaute discret
    Inscrit:
    20 Septembre 2004
    Messages:
    155
    J'aime reçus:
    0
    Bonjour,
    et si tu met un espace dans le like : like \"% $ent_nom %\" ?
    Tu n'aurais plus besoin des regexp..
    Non?
     
  3. Tilt
    Tilt WRInaute impliqué
    Inscrit:
    26 Mars 2005
    Messages:
    752
    J'aime reçus:
    0
    like "% $ent_nom %" or like "$ent_nom %" or like "% $ent_nom"

    couvre presque toutes les éventualités.

    Sinon en théorie tu peux utiliser \w (caractère de mot), \W (pas de caractère de mot), plutôt que NOT REGEXP, ou bien ^\w+ qui marchent bien en php (j'ignore si ça fonctionne pour mysql).
     
  4. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    siddhy et Tilt, ca n'est pas bon :)

    siddhy, c'est écrit dans mon message :
    >> si j'ai une société qui s'appelle CCI, que cela ne me
    >> ressorte pas un article contenant le mot "accident"

    Tilt> il suffit que la chaine commence le mot ou le termine et ca ne marches pas

    mais c'est bon, j'ai trouvé ce qui marche TOUT LE TEMPS :
    $requete2="select * from articles where (art_titre like \"%$ent_nom%\" and art_titre NOT REGEXP \"[a-z]".$ent_nom."[a-z]\" and art_titre NOT REGEXP \"".$ent_nom."[a-z]\" and art_titre NOT REGEXP \"[a-z]".$ent_nom."\") or (art_texte like \"%$ent_nom%\" and art_texte NOT REGEXP \"[a-z]".$ent_nom."[a-z]\" and art_texte NOT REGEXP \"".$ent_nom."[a-z]\" and art_texte NOT REGEXP \"[a-z]".$ent_nom."\")";
     
  5. siddhy
    siddhy WRInaute discret
    Inscrit:
    20 Septembre 2004
    Messages:
    155
    J'aime reçus:
    0
    Salut,
    Justement, ma réponse empêchait d'avoir "accident"...
    Par contre si CCI était en début ou en fin, ça ne le prenait pas en compte..
     
  6. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    ah oui je n'avais aps vu les espaces. mais l'autre problème etait effectivement d'actualité. enfin ma moulinette tourne, dans 55mn j'aurai la réponse ^^
     
  7. siddhy
    siddhy WRInaute discret
    Inscrit:
    20 Septembre 2004
    Messages:
    155
    J'aime reçus:
    0
    Par contre il me semble que la réponse de Tilt n'était pas mauvaise..

    like "% $ent_nom %" pour les chaines au milieu
    like "$ent_nom %" pour les chaines au début
    like "% $ent_nom" pour les chaines en fin

    Manque plus que le Pb de la ponctuation (par ex :virgule après ta chaine ou point ou ...) a traiter

    (ça serait peut être plus rapide ?)

    Bon, tu nous tiens au courant pour ta requête ? (dans 42 mn...)
     
  8. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    il manque pleins de caracteres :

    ( ) , ; : ! ? ...

    ma méthode inverse (dire tout ce qui n est pas caractere me semble bien plus précise)
     
  9. siddhy
    siddhy WRInaute discret
    Inscrit:
    20 Septembre 2004
    Messages:
    155
    J'aime reçus:
    0
    Oui tu doit avoir raison..
    Par contre tu as pensé aux majuscules ? ou les regexp de mysql ne tiennent pas compte de la casse?
     
  10. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    les articles sont ecrits par les journalistes, donc ca va, ils mettent toujours la majuscule en début de nom de société :)

    moulinette fini (plus rapide que prévu) résultat tres convenable :)
     
  11. Xele
    Xele WRInaute discret
    Inscrit:
    10 Juillet 2005
    Messages:
    88
    J'aime reçus:
    0
  12. siddhy
    siddhy WRInaute discret
    Inscrit:
    20 Septembre 2004
    Messages:
    155
    J'aime reçus:
    0
    je parlais des majuscules pour "ACCIDENT" par exemple...
     
Chargement...
Similar Threads - [résolu] mysql regexp Forum Date
[résolu] Récupérer des valeurs issues de javascript pour les mettre en base MySQL Développement d'un site Web ou d'une appli mobile 18 Juillet 2016
[résolu][mysql] faire un "NOT LIKE" sur une chaîne contenant des / Développement d'un site Web ou d'une appli mobile 25 Octobre 2014
[Résolu] Problème d'importation de base MySQL en UTF8 chez 1&1 Administration d'un site Web 3 Juillet 2011
[résolu] [mysql] Conditions WHERE avec AND et OR Développement d'un site Web ou d'une appli mobile 13 Mai 2011
[résolu] [mysql] passer un champ à une valeur donnée pour tous les enregistrements Développement d'un site Web ou d'une appli mobile 25 Mars 2011
[Résolu] Eclater une table Mysql en plusieurs tables Développement d'un site Web ou d'une appli mobile 20 Mai 2010
[Résolu] Fichier config MySQL sous PLESK chez OVH Développement d'un site Web ou d'une appli mobile 28 Décembre 2009
Lien interne formulaire mysql [resolu] Développement d'un site Web ou d'une appli mobile 3 Novembre 2009
[Résolu] Requête MySQL Développement d'un site Web ou d'une appli mobile 28 Août 2009
[résolu]Afficher le champ d'une table mysql sur plusieurs pages ? Développement d'un site Web ou d'une appli mobile 5 Juillet 2009
[Résolu] Requête MySQL - cumul de champs dans la condition Développement d'un site Web ou d'une appli mobile 22 Juin 2009
Mysql faire un order by sur une partie d'un champ [RESOLU] Développement d'un site Web ou d'une appli mobile 27 Décembre 2008
[Resolu] Impossible de lancer mysql! Administration d'un site Web 2 Décembre 2008
[résolu][MySQL] Sélection groupée et comptage Développement d'un site Web ou d'une appli mobile 22 Septembre 2008
[Résolu] [MySQL] : count dans clause WHERE Développement d'un site Web ou d'une appli mobile 8 Septembre 2008
[mysql] Recherche sensible à la case [resolu] Développement d'un site Web ou d'une appli mobile 11 Juin 2008
[Résolu] MySQL lier 2 tables Développement d'un site Web ou d'une appli mobile 16 Mai 2008
[résolu] php mysql tutoriel Développement d'un site Web ou d'une appli mobile 23 Mars 2008
[Résolu] Mysql : Select avec un except Développement d'un site Web ou d'une appli mobile 11 Janvier 2008
[resolu] Une seule base MySQL pour plusieurs scripts ? Administration d'un site Web 7 Novembre 2007