Aller au contenu
Philippe

"Chercher et remplacer" dans phpmyadmin

Noter ce sujet :

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

Partager ce message


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

Partager ce message


Lien à poster
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 :)

Partager ce message


Lien à poster
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" ;)

Partager ce message


Lien à poster
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:

Partager ce message


Lien à poster
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é ;)

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Merci pour l'info :!:

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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:

Partager ce message


Lien à poster
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:

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Dan :up:

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

Merci encore.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×