Aller au contenu

"Chercher et remplacer" dans phpmyadmin


Philippe

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres 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é ! ;)

Lien vers le commentaire
Partager sur d’autres 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 :)

Lien vers le commentaire
Partager sur d’autres 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" ;)

Lien vers le commentaire
Partager sur d’autres 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:

Lien vers le commentaire
Partager sur d’autres 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é ;)

Lien vers le commentaire
Partager sur d’autres 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.

Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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:

Lien vers le commentaire
Partager sur d’autres 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:

Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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