Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1281 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Enlever toutes les fois où apparaissent 4 lettres dans une table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Enlever toutes les fois où apparaissent 4 lettres dans une table

n°487406
Master_Jul
Posté le 14-08-2003 à 16:06:37  profilanswer
 

J'ai une table qui contient plusieurs champs où apparait "_cpm", c'est parfois attaché à quelque chose devant et derrière mais j'ai besoin juste de le supprimer pour qu'un string kikoo_cpm@hotmail.com deviennent kikoo@hotmail.com.
 
Je pense que si on connait la fonction adequate ça doit aller, je vois pas trop comment faire avec "rename", merci d'avance.


---------------
En français, on écrit "connexion", pas "connection".
mood
Publicité
Posté le 14-08-2003 à 16:06:37  profilanswer
 

n°487425
simogeo
j'ai jamais tué de chats, ...
Posté le 14-08-2003 à 16:09:34  profilanswer
 

la encore ...regex .... mais cette fois utilises les regex MySQL  :)


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°487432
Master_Jul
Posté le 14-08-2003 à 16:11:55  profilanswer
 

simogeo a écrit :

la encore ...regex .... mais cette fois utilises les regex MySQL  :)  


 
tu pourrais m'en dire un peu plus ? [:meganne] merci


---------------
En français, on écrit "connexion", pas "connection".
n°487436
urd-sama
waste of space
Posté le 14-08-2003 à 16:12:43  profilanswer
 

like sera ton mot clé :jap:

n°487453
Master_Jul
Posté le 14-08-2003 à 16:20:25  profilanswer
 

une énigme  [:seyed_s]  
 
ce que je vois pas c'est comment dire
 
renomme  xxxYYYxxx en xxxxxxx
 
enfin y'a pas que ça que je vois pas mais c'est surtout ça qui me tracasse


---------------
En français, on écrit "connexion", pas "connection".
n°487455
simogeo
j'ai jamais tué de chats, ...
Posté le 14-08-2003 à 16:20:46  profilanswer
 

Master_Jul a écrit :


 
tu pourrais m'en dire un peu plus ? [:meganne] merci


pas maintenant .. il faudrait que je me penche dessus ... pas le temps [:chupachupz] ... mais fait des recherches sur le net REGEX Mysql .....  
 
l'idée c'est de faire un update dans ta table de tout les tuples dont les champs contiennent l'expression "_cpm" en la soutirant  :)


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°487473
Sh@rdar
Ex-PhPéteur
Posté le 14-08-2003 à 16:32:40  profilanswer
 

UPDATE matable SET monchamp = REPLACE('monchamp','chaine_from','chaine_to')
 
ça doit passer ça non ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°487520
Master_Jul
Posté le 14-08-2003 à 17:11:06  profilanswer
 

Sh@rdar a écrit :

UPDATE matable SET monchamp = REPLACE('monchamp','chaine_from','chaine_to')
 
ça doit passer ça non ?


 
ça m'a mis monchamp dans toutes les lignes de ma table à la colonne monchamp  :(
 
edit : pour 2 trema de trop en fait
 
UPDATE matable SET monchamp = REPLACE('monchamp','chaine_from','chaine_to')
 
maintenant ça marche ! merci beaucoup ! :)


Message édité par Master_Jul le 14-08-2003 à 17:15:22

---------------
En français, on écrit "connexion", pas "connection".
n°487522
Master_Jul
Posté le 14-08-2003 à 17:19:12  profilanswer
 

aie, je me heurte à un dernier problème, je dois changer le format de temps qui sont du type :
 
 
xx.xxx et qui doivent passer en xx.xx.xxx
 
exemple : 48.489 devient 00.48.489
 
il y a des cas plus compliqué du type 72.132 devient 01.10.123 mais ils peuvent être changé à la main, il n'y en a qu'une dizaine, pas comme les premier où il faudrait juste rajouter
 
00. devant chaque ligne, peut on utiliser un asterix ou équivalent ?
 
replace '*' en '00.*'
 
et encore je sais pas si ça marchera qqch du style


---------------
En français, on écrit "connexion", pas "connection".
n°487529
karamilo
Posté le 14-08-2003 à 17:33:38  profilanswer
 

en mysql ou en php ?

mood
Publicité
Posté le 14-08-2003 à 17:33:38  profilanswer
 

n°487534
Master_Jul
Posté le 14-08-2003 à 17:39:21  profilanswer
 

karamilo a écrit :

en mysql ou en php ?


 
n'importe, ça sera fait qu'une fois, si possible en SQL


---------------
En français, on écrit "connexion", pas "connection".
n°487536
simogeo
j'ai jamais tué de chats, ...
Posté le 14-08-2003 à 17:42:57  profilanswer
 

fonction CONCAT() de mysql;


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°487571
Master_Jul
Posté le 14-08-2003 à 18:46:06  profilanswer
 

c'est plus compliqué que prévu :/  
 
j'ai des fichiers en xx.xxx et d'autres en x.xxx :cry:


---------------
En français, on écrit "connexion", pas "connection".
n°487574
karamilo
Posté le 14-08-2003 à 18:47:52  profilanswer
 

alors passes par du php, ca sera plus simple.
tu veux les transformer en quoi les x.xxx ( en 0x.xxx ? ) ?

n°487581
Master_Jul
Posté le 14-08-2003 à 18:50:41  profilanswer
 

karamilo a écrit :

alors passes par du php, ca sera plus simple.
tu veux les transformer en quoi les x.xxx ( en 0x.xxx ? ) ?


 
les x.xxx deviennent 00.0x.xxx
 
d'un côté, s'ils avaient fait ça dès le début, je n'aurai pas tous ces problèmes, heureusement que karamilo est là  :p  :)


---------------
En français, on écrit "connexion", pas "connection".
n°487584
karamilo
Posté le 14-08-2003 à 18:56:04  profilanswer
 

héhé ;)
 
bon tu recup tes données en mysql.

Code :
  1. $search = array(
  2. "#([0-9])\.([0-9]){3}#S",
  3. "#([0-9]){2}\.([0-9]){3}#S" );
  4. $replace = array(
  5. "00.0$1.$2",
  6. "00.$1.$2" );
  7. $tavar = preg_replace($search,$replace,$tavar);


 
l'option S, pour optimiser avec les "array".

n°487595
Master_Jul
Posté le 14-08-2003 à 19:23:33  profilanswer
 

Je suis désolé mais je ne sais pas comment faire pour me servir de ce bout de code, désolé de faire le boulet mais j'ai du mal. :(
 
J'essayais de faire un select, pis peut être une boucle, et encore ça m'inspire rien. :/


---------------
En français, on écrit "connexion", pas "connection".
n°487600
karamilo
Posté le 14-08-2003 à 19:30:32  profilanswer
 

tu te connectes a la base

Code :
  1. $req = "SELECT id,lechampouilyacequetuveux FROM latable";
  2. $res = mysql_query($req);
  3. while ($row = mysql_fetch_array($res))
  4. {
  5. $search = array(
  6. "#([0-9])\.([0-9]){3}#S",
  7. "#([0-9]){2}\.([0-9]){3}#S" );
  8. $replace = array(
  9. "00.0$1.$2",
  10. "00.$1.$2" );
  11. $newvar = preg_replace($search,$replace,$row['lechamp']);
  12. $req2 = "UPDATE latable SET lechamp='$newvar' WHERE id='$row[id]'";
  13. if(mysql_query($req2))
  14. {
  15. $i++;
  16. }
  17. }
  18. echo $i.' enregistrements changés';


 
bon tu remplaces ce que tu veux.  
si c'est trop long, tu decoupes avec un limit a la premiere req.
$i, c'est juste un compteur pour voir si tout est bon :)
 
mais testes avant sur une seule ligne car y'aura peut etre un probleme avec le preg, qu'il remplace ce qui vient deja d'etre remplace ( a => b => c au lieu de a => b tout court )


Message édité par karamilo le 14-08-2003 à 20:33:00
n°487633
Master_Jul
Posté le 14-08-2003 à 19:58:45  profilanswer
 

parse error sur l accolade qui ferme, l avant dernière   :??:


Message édité par Master_Jul le 14-08-2003 à 19:59:58

---------------
En français, on écrit "connexion", pas "connection".
n°487635
simogeo
j'ai jamais tué de chats, ...
Posté le 14-08-2003 à 19:59:24  profilanswer
 

Master_Jul a écrit :

parse error sur l accolade qui ferme, l avant dernière  :heink:  


; putain  :o  
 
et par error apres aussi "";


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°487640
Master_Jul
Posté le 14-08-2003 à 20:02:33  profilanswer
 

simogeo a écrit :


; putain  :o  
 
et par error apres aussi "";


 
j'étais plus sûr qu'on devait metre un ; apres un $x++ il me semblait que j avais fait un script sans, sinon, j avais corrigé un autre petit oubli, essayons


---------------
En français, on écrit "connexion", pas "connection".
n°487642
simogeo
j'ai jamais tué de chats, ...
Posté le 14-08-2003 à 20:04:01  profilanswer
 

Code :
  1. echo $i.' enregistrements changés
  2. // devient
  3. echo $i.' enregistrements changés';


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°487654
Master_Jul
Posté le 14-08-2003 à 20:10:11  profilanswer
 

simogeo a écrit :

Code :
  1. echo $i.' enregistrements changés
  2. // devient
  3. echo $i.' enregistrements changés';




 
oui, celle là j'ai réglé le pb, ça donne :
 
 

Code :
  1. <?php
  2. include("connect.php3" );
  3. $req = "SELECT id,temps FROM record WHERE id='26'";
  4.   $res = mysql_query($req);
  5.   while ($row = mysql_fetch_array($res))
  6.   {
  7.     $search = array(
  8.     "#([0-9])\.([0-9]){3}#S",
  9.     "#([0-9]){2}\.([0-9]){3}#S" );
  10.     $replace = array(
  11.     "00.0$1.$2",
  12.     "00.$1.$2" );
  13.     $newvar = preg_replace($search,$replace,$row['temps']); 
  14. echo $newvar;
  15.     $req2 = "UPDATE record SET temps='$newvar' WHERE id='$row[id]";
  16.     if(mysql_query($req2))
  17.     {
  18.       $i++;
  19.     }
  20.   }
  21.      echo $i;
  22.       ?>


 
Le echo $newvar; renvoie 00.04.0 et le temps original à cette ligne est 4.960, le echo $i; reste muet lui.


---------------
En français, on écrit "connexion", pas "connection".
n°487661
simogeo
j'ai jamais tué de chats, ...
Posté le 14-08-2003 à 20:18:33  profilanswer
 

Code :
  1. $req2 = "UPDATE record SET temps='$newvar' WHERE id='$row[id]";


 
fooootes  :o  
 

Code :
  1. $req2 = "UPDATE record SET temps='".$newvar."' WHERE id='".$row[id]."';";


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°487675
karamilo
Posté le 14-08-2003 à 20:32:30  profilanswer
 

oula, que de fautes :/
dsl, je devais pas etre bien reveille :(

n°487677
Master_Jul
Posté le 14-08-2003 à 20:32:52  profilanswer
 

simogeo a écrit :

Code :
  1. $req2 = "UPDATE record SET temps='$newvar' WHERE id='$row[id]";


 
fooootes  :o  
 

Code :
  1. $req2 = "UPDATE record SET temps='".$newvar."' WHERE id='".$row[id]."';";




 
y'a pas un ; en trop là ? :??:


---------------
En français, on écrit "connexion", pas "connection".
n°487681
karamilo
Posté le 14-08-2003 à 20:35:11  profilanswer
 

pas forcément, les deux sont possibles et avec un ; c'est mieux.

n°487689
Master_Jul
Posté le 14-08-2003 à 20:44:21  profilanswer
 

karamilo a écrit :

pas forcément, les deux sont possibles et avec un ; c'est mieux.


 
ok d'accord, sinon y'a toujours un problème avec ce que donne le $newvar, ça transforme  
 
4.896 en 00.04.61  :??:


---------------
En français, on écrit "connexion", pas "connection".
n°487702
Master_Jul
Posté le 14-08-2003 à 20:55:43  profilanswer
 

le problème pourrait pas venir de $1.$2 ? enfin je sais pas trop moi :/


---------------
En français, on écrit "connexion", pas "connection".
n°487715
simogeo
j'ai jamais tué de chats, ...
Posté le 14-08-2003 à 21:12:59  profilanswer
 

Master_Jul a écrit :

le problème pourrait pas venir de $1.$2 ? enfin je sais pas trop moi :/


ta regex est pourrie .. j'ai pas envie de mettre le nez dedans .. je suis pas specialiste et en plus j'ai pas envide me prendre le chou ce soir  
 
si ja'i bien compris  
tu as des fichiers x.xxx  et des xx.xxx
ca doit devenir doit devenir 00.0x.xxx  ou des 00.xx.xxx
 

Code :
  1. $req = "SELECT id, temps FROM record";
  2. $res = mysql_query($req);
  3. while ($row = mysql_fetch_array($res))
  4. {
  5. if(strlen($row['temps'])==5) $newvar= "00.0".$row['temps'];
  6. elseif(strlen($row['temps'])==6) $newvar= "00.".$row['temps'];
  7. $req2 = "UPDATE record SET temps='$newvar' WHERE id='$row[id]'";
  8. if(mysql_query($req2))
  9. {
  10. $i++;
  11. }
  12. }
  13. echo $i.' enregistrements changés';

 
 
 
essayes ca  ;)


Message édité par simogeo le 14-08-2003 à 21:13:50

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°487755
Master_Jul
Posté le 14-08-2003 à 22:18:00  profilanswer
 

Merci simogeo, ça a marché, j'ai juste eu quelques accros sur des demos au format diférent ou déjà transformé mais rien de grave, j'ai corrigé à la main et tout est bon maintenant, encore merci pour tout, merci à karamilo et Sh@rdar qui m'ont permis de rendre le site à nouveau opérationnel.  :hello: Bonne soirée et à la prochaine.


---------------
En français, on écrit "connexion", pas "connection".
n°487849
MagicBuzz
Posté le 15-08-2003 à 00:03:22  profilanswer
 

Sans passer par les expressions régulières, ni le PHP, en partant de cette requête, tu peux faire ce que tu cherches à faire :
 

select text, concat(left(text, INSTR(text,'pass')), right(text, LENGTH(text) - (INSTR(text,'pass') + 4)))  
from label
where text like '%pass%'

n°487850
simogeo
j'ai jamais tué de chats, ...
Posté le 15-08-2003 à 00:05:14  profilanswer
 

MagicBuzz a écrit :

Sans passer par les expressions régulières, ni le PHP, en partant de cette requête, tu peux faire ce que tu cherches à faire :
 

select text, concat(left(text, INSTR(text,'pass')), right(text, LENGTH(text) - (INSTR(text,'pass') + 4)))  
from label
where text like '%pass%'




c'est d'abord ce que j'ai proposé ici .. mais il ne savait pas le faire  [:spamafote]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°487852
MagicBuzz
Posté le 15-08-2003 à 00:07:20  profilanswer
 

Désolé, j'avais pas lu le topic entier :D

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Enlever toutes les fois où apparaissent 4 lettres dans une table

 

Sujets relatifs
problème de création de table[linux] empêcher un programme de se lancer plusieurs fois : résolu
[ASP] Menu/List : un menu par tableComment avoir le nombre total d'enregistrements dans une table MySQL ?
executer du code 1 fois sur deux dans un while[HTML/CSS] Background, table et hover
Image/balise HREF qui s'affiche une fois sur deux ! ! ! HEEEEEEELP[Administration MySQL] La table user nettoyée
[MYSQL]une requête qui dit le plus grand id de la table ?[HTML] Question sur TABLE
Plus de sujets relatifs à : Enlever toutes les fois où apparaissent 4 lettres dans une table


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR