IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Recherche avancée dans une base [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut Recherche avancée dans une base
    Bonjour à toutes et tous,

    Je dispose d'une table (mysql) dans laquelle j'ai des noms complexes, qui commencent soit par des lettres (OK pas de soucis) soit par des chiffres (la les ennuis commence pour moi )

    Je voudrais faire en sorte de proposer à mes visiteurs une fonction de recherche par première lettre du nom, par exemple tout ce qui commence par C mais là je voudrais qu'il me sortent les noms commencant effectivement par C (ça c'est Ok, le Chlorobenzene par exemple), mais en même temps les noms ou la première lettre existante sera C, le 1-3Chlorobenzene ...

    Avez vous une idée, un regex peut'il m'aider ?

    Merci d'avance.

    Renaud

  2. #2
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Par défaut
    SELECT * FROM table WHERE nom LIKE %Lettre%

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par J0r_x
    SELECT * FROM table WHERE nom LIKE %Lettre%
    ben non pas ça car la il va cherche tous ce qui contient la lettre.

    le mieux c'est un regex en tenant compte des chiffres et tiret, puis tu recuperes ce qui reste donc ton nom filtré

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut
    Citation Envoyé par rbaatouc
    ben non pas ça car la il va cherche tous ce qui contient la lettre.

    le mieux c'est un regex en tenant compte des chiffres et tiret, puis tu recuperes ce qui reste donc ton nom filtré
    Je vais essayer de m'y mettre, merci en tous cas rbaatouc

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut
    Merci pour cette réponse, mais ça ne corerespondant tout à fait à ce que je cherche a faire ...

    exemple 3 noms de molécules
    (je passe les notations indice et exposant de la chimie enregistrés en code HTML dans la base) :

    2,4,5,6-[U-13C4]-1,3-[U-15N2]-2,5-[2H2]Dicholoropyrimidine
    Chlorobenzene-13C6
    4-Aminophenol-d7

    La première doit pouvoir répondre sur la lettre D
    La deuxième sur C
    La troisième sur A

    Le tout et d'arriver à faire ça dans une seule requete ...

    Des idées

    Renaud

  6. #6
    Invité
    Invité(e)
    Par défaut
    ah ok l'exemple est plus parlant.
    les lettres sont tjs entre crochet?

    si c'ets le cas les regex marche quand meme
    si c'est pas le cas bon courage

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Elle est bien velue celle-là ! J'utilise l'hypothèse des crochets suggérée par rbaatouc.

    Déjà, il faut savoir qu'un crochet gauche s'écrit [[.left-square-bracket.]] et un crochet droit [[.right-square-bracket.]]. On peut aussi utiliser [[.[.]] et [[.].]], mais je défie quiconque d'être capable de lire un truc comme ça !

    Je prends ton premier exemple qui est le plus complet : avant le D, il peut y avoir deux sortes d'éléments :
    - soit un caractère qui n'est pas une lettre, donc [^A-Z]
    - soit une séquence composée d'un crochet gauche, une série de caractères différents du crochet droit, puis un crochet droit:
    [[.left-square-bracket.]][^[.right-square-bracket.]]+[[.right-square-bracket.]]

    Il peut y avoir un nombre quelconque ou nul de ces éléments, suivis ensuite du D : ^(elem1|elem2)*D

    Au total, cela nous fait donc :
    SELECT Nom
    FROM table
    WHERE Nom REGEXP '^([^A-Z]|[[.left-square-bracket.]][^[.right-square-bracket.]]+[[.right-square-bracket.]])*D' ;

    PS : j'évite volontairement les balises CODE afin que ma regex tienne sur une ligne

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Antoun
    Elle est bien velue celle-là ! J'utilise l'hypothèse des crochets suggérée par rbaatouc.
    juste par curiosité ça veut dire quoi "elle est bien velue?"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recherche colonne dans une base
    Par stephyugh dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 29/08/2014, 09h59
  2. Recherche efficace dans une base de donnée excel
    Par endersox dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/06/2008, 06h36
  3. Recherche croisé dans une base de donnée
    Par elephant13 dans le forum C#
    Réponses: 1
    Dernier message: 24/03/2007, 15h26
  4. [Oracle] Recherche nulle dans une base et affichage
    Par GLDavid dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/04/2006, 01h01
  5. Réponses: 7
    Dernier message: 15/02/2006, 11h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo