Jump to content
Sign in to follow this  
Philippe

"Chercher et remplacer" dans phpmyadmin

Rate this topic

Recommended Posts

Bonjour à tous,

Voici une question pour les pros du PHP et de phpmyadmin en particulier.

Existe-t-il un moyen de faire remplacer automatiquement une chaine de caractère par une autre dans toute une base de données ?? Et tant que nous y sommes, si certains éditeurs de texte permettent cela pour un document, quels sont les programmes qui peuvent gérer le remplacement de chaines de caractères sur tous les documents d'un même dossier...

Cela m'évitera de longues heures de travail inutile :unsure:

Merci :)

Share this post


Link to post
Share on other sites

Pour les éditeurs de texte je ne sais pas trop, mais Dreamwaever est capable de te remplacer tout les occurences dans tout les fichiers d'un dossier ;)

Pour remplacer toute une chaine dans une base de donné je sais pas si on peut le faire avec PhpMyAdmin mais un petit script php dans une boucle et le tour est joué ! ;)

Share this post


Link to post
Share on other sites

Suis tête en l'air,

Dans dreamwaever, tu vas dans outils/chercher et remplacer en haut a gauche tu as une petite fenetre tu clic sur "Rechercher dans un repertoire" et hop ;)

Si tu veux un exmple pour le script pas de probleme, je peux aussi te faire sa :)

Share this post


Link to post
Share on other sites

Salut Philippe,

mySQL a une fonction intégrée qui s'appelle REPLACE.

La syntaxe est REPLACE(str,from_str,to_str)

Si tu as une table de ta base (TABLE) comprenant un champ (CHAMP) dans lequel tu souhaites remplacer "SOURCE" par "DEST", tu feras une requête SQL de la forme:

update `TABLE` set CHAMP=REPLACE(CHAMP,'SOURCE','DEST') where CHAMP like '%SOURCE%'

Une simple boucle en php te permettrait de faire la même chose sur toutes les tables de la base.

Dan

PS: j'ai utilisé cela sur le Hub lors du changement de pseudo d'un membre, pour remplacer toutes les occurences de son nom dans les posts. Ca marche nickel, mais comme pour toute modification globale, il est sage de faire un export de la table AVANT ! Cela te donnera une possibilité de "marche arrière" ;)

Share this post


Link to post
Share on other sites

Merci scarabeuz,

Bon, je n'ai pas dreamweaver, je sais qu'il existe au moins un éditeur texte qui le fait, mais je ne me souviens plus lequel...

Merci pour le script PHP, cela dit, si il y'a une solution plus simple, ça évitera ce travail (phpmyadmin est plein de ressources ;) ).

Merci à toi :up:

Share this post


Link to post
Share on other sites

Merci Dan,

Avant de commettre une erreur irréparable qui me fera exploser mon Spip, je préfère te laisser vérifier le code avant de l'exécuter, vu que je ne connais absolument pas le PHP...

Je souhaite donc modifier une occurence sur la table spip articles, champ "ps"

update `spip_articles` set CHAMP=REPLACE(ps,'mon ancienne occurence','ma nouvelle occurence') where CHAMP like '%SOURCE%'

Si tu me dis que c'est bon, je serai très étonné ;)

Share this post


Link to post
Share on other sites

Bonjour,

j'utilise ultraedit, et il permet de faire des 'recherche/remplace' dans :

- un fichier,

- un dossier,

- un projet,

etc..

Et tout ca en plus de ses innombrables possibilités.

Anonymus.

Share this post


Link to post
Share on other sites

Merci Anonymus, excellent !! c'est exactement ce qu'il me faut !!

Merci pour l'info :!:

Share this post


Link to post
Share on other sites

Philippe,

C'est bon sauf qu'il faut que tu changes le "like '%SOURCE%'" par le mot clé que tu veux remplacer, du genre "like '%mon ancienne occurence%'"

Fais tout de même un export de ta table avec phpmyadmin avant... c'est plus sage

Dan

Share this post


Link to post
Share on other sites

Merci beaucoup Dan,

Tu as raison, je ferai une sauvegarde avant, on ne sait jamais.

En tout cas, c'est bon à savoir que l'on peut faire des remplacements dans une base de façon assez simple !! Merci encore :up:

Share this post


Link to post
Share on other sites

Re...

Je viens de faire l'essai, et j'obtiens ce message d'erreur :

Unknown column 'CHAMP' in 'where clause'

Mais quelle serait donc la boulette :unsure:

Share this post


Link to post
Share on other sites

Salut Philippe,

Il faut remplacer CHAMP par le nom du champ sur lequel tu veux agir, bien sûr. ;)

Les valeurs à changer dans mon expression de départ sont:

TABLE (le nom de la table)

CHAMP (le nom du champ qui contient les valeurs à changer)

SOURCE (la chaîne de caractères à changer)

DEST (la chaîne de remplacement)

Dan

Share this post


Link to post
Share on other sites

Merci Dan :up:

Ca a fonctionné !! Je n'avais donc pas tout compris ;)

Merci encore.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...