probleme avec regsub
#1
Bonjour a tous,

Je reviens demander de l'aide car j'ai un petit soucis avec regsub.
J'ai dans ma base de donnée matériel, un colonne id, réf, articles, etc...
dans la colonne articles j'ai des données écrite comme ca : voici.un.nouvel.article ou aussi comme ca voici-un-nouvel-article

ma colonne est un varchar(255) la base de donnée est sous interclassement utf8_general_ci et moteur MyISAM.

J'espère avoir tout mis Smile

ce que je cherche a faire :
- commande !search sous la forme : !search chaine_de_caracteres chaine_de_caracteres chaine_de_caracteres (bref plusieur nom)
- recherche dans la colonne articles les correspondances
- affichage sous forme de listes.

Ce qui me pose un problème:
La recherche avec la commande !search nouvel article n'abouti pas, il ne trouve rien. Par contre si je rentre !search voici.un.nouvel.article la il trouve une correspondance et me l'affiche.

Je pense que cela viens de la façon que j'ai d'avoir écrite le regsub.
--> regsub -all {\*} $arg {%} arg

merci pour vos réponses.

Nos...
Répondre Avertir
#2
Comment se fait ta recherche, du moins quelle est la requête ?
Si tu fais:
Code :
select * from table where article='la chaine'
, il faut que tu doubles ta condition where de la manière suivante:
TCL
regsub -all {_} $arg {\.} expdot
regsub -all {_} $arg {\-} expdash
set where "(article='$expdot' or article='$expdash')"


Si tu fonctionnes avec un like (ce qui semble être le cas), utilises plutôt:
TCL
regsub -all {[\.\-]} $arg {_} arg


Note que j'utilise '_' plutôt que '%' car en mysql, il remplace un seul caractère alors que % remplace un ou plusieurs caractères.
Répondre
#3
Bonjour,

alors pour mon select comme tu dis j'utilise un like,

SELECT reference, articles FROM db WHERE articles LIKE '%$args%' ORDER BY articles DESC LIMIT 5

Mais en faite j'ai abandonnée la solution du global et comme lorsque je faisais:

!search %chaine_de_carateres%chaine_de_carateres%

ça fonctionnait aussi, j'ai rajouter dans ma proc à la place de global:

set args [string map [list "*" "%" " " "%"] $arg]; (récupéré sur divers posts sur le net)

et maintenant ca fonctionne, mais je testerai avec ta solution Smile...

Mon but est d'arriver à écrire mon code en moins de ligne possible Smile mais beaucoup de chose au niveau du langage tcl n'est pas expliquer d'où une recherche très très longue pour finir par comprendre ce qu'il faut faire Smile...

Merci pour ta réponse,

Nos...
Répondre Avertir


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [Bug] comment regsub altère l'encodage d'une chaîne de caractères MenzAgitat 6 3,931 27/02/2017, 02:01
Dernier message: MenzAgitat
  Problème avec Clams SaiTek 7 3,639 06/09/2013, 09:02
Dernier message: SaiTek
  probleme avec mon script Nostromo1st 7 4,088 05/06/2013, 09:51
Dernier message: Nostromo1st
  probleme avec Lea lesny 31 12,744 20/12/2012, 22:08
Dernier message: CrazyCat
  probleme avec une BL spidersms 2 3,191 19/12/2012, 22:04
Dernier message: aliasangelius
  regsub ? Supa 2 2,321 02/10/2012, 13:29
Dernier message: Supa
  TCL problème avec une variable mecmec 6 4,148 30/07/2011, 21:05
Dernier message: djkenny
  [résolu] probleme avec le Uno lesny 13 6,195 05/03/2011, 22:01
Dernier message: lesny
  probleme avec eva lesny 6 3,591 04/12/2010, 10:14
Dernier message: BdS
  problème avec rss-synd prates 0 2,392 08/08/2010, 08:21
Dernier message: prates

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)