|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
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 |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Analyste - Programmeur Inscription : mai 2006 Messages : 712 ![]() |
SELECT * FROM table WHERE nom LIKE %Lettre%
|
|
|
00
|
|
|
#3 | |
|
Membre expérimenté
![]() |
Citation:
le mieux c'est un regex en tenant compte des chiffres et tiret, puis tu recuperes ce qui reste donc ton nom filtré
__________________
Colorez votre code PHP sur les forums grâce à Developpez.com |
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
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 |
|
|
00
|
|
|
#5 | |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
Citation:
|
|
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() |
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
__________________
Colorez votre code PHP sur les forums grâce à Developpez.com |
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
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 |
|
|
00
|
|
|
#8 | |
|
Membre expérimenté
![]() |
Citation:
__________________
Colorez votre code PHP sur les forums grâce à Developpez.com |
|
|
|
00
|
|
|
#9 |
|
Membre actif
![]() |
ne me criez pas, je suis très simple d'esprit
mais il ne serait pas plus simple de rajouter un champ lettre (ou recherche) qui contient la lettre sur laquelle la recherche peut porter? les recherches seraient très rapides. lors de l'ajout d'un enregistrement ça fait juste une lettre à tapper en plus. et pour éviter de se pallucher la mise à jour des enregistrements déjà existant utiliser le regexp qu'a créé antoun dans un update pour mettre à jour le nouveau champ dans les enregistrements existants je sais je suis naif, mais des fois ça marche... |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
Merci de cette proposition mais le nom de mes molécules varie énormément je peut en avoir partout de ces numériques ainsi que crochet tirets et Cie ...
Je rigole à voir le message de Léortien, j'ai décidé ce matin de corriger mes bases pour prendre en compte une lettre d'interclassement définie au moment de l'enregistrement de la molécule ... C'est vrai que pourquoi se compliquer la vie et en plus ça permet à nos chimistes de décider ou l'interclassement doit avoir lieu (exemple dichloropyrimidine, classé à P pyrimidine et non à D Dichloro... Merci de votre aide en tous cas ... renaud |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() ![]() Tiger Scott Développeur Web Inscription : juin 2006 Messages : 1 251 ![]() |
salut,
je suis peu etre a l'ouest mais il me semblerais plus simple si tu faisait une table ou ya tout tes "truck" ou tu veux faire ta recherche par lettre ou par chiffre; et une autre table "molécule" ou tu met la composition de chaque molécule en fonction de ta table "truck" les "truck" c'est parce que la maintenant tout de suite je me souviens plus de comment ca s'appel ^^ (dsl) |
|
|
00
|
|
|
#12 | |
|
Membre expérimenté
![]() |
Citation:
sans etre méchant ça me rappele une citation de marcel pagnol : "Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait."
__________________
Colorez votre code PHP sur les forums grâce à Developpez.com |
|
|
|
00
|
|
|
#13 | |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
Citation:
Merci tout de même |
|
|
|
00
|
|
|
#14 | |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 9 ![]() |
Citation:
|
|
|
|
00
|
|
|
#15 | |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com