Aller au contenu

"Chercher et remplacer" dans phpmyadmin


Sujets conseillés

Posté

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 :)

Posté

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é ! ;)

Posté

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 :)

Posté

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" ;)

Posté

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:

Posté

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é ;)

Posté

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.

Posté

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

Merci pour l'info :!:

Posté

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

Posté

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:

Posté

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:

Posté

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

Posté

Merci Dan :up:

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

Merci encore.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...