Philippe Posté 1 Novembre 2003 Posté 1 Novembre 2003 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 Merci
Neoboot Posté 1 Novembre 2003 Posté 1 Novembre 2003 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é !
Neoboot Posté 1 Novembre 2003 Posté 1 Novembre 2003 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
Dan Posté 1 Novembre 2003 Posté 1 Novembre 2003 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"
Philippe Posté 1 Novembre 2003 Auteur Posté 1 Novembre 2003 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
Philippe Posté 1 Novembre 2003 Auteur Posté 1 Novembre 2003 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é
Anonymus Posté 1 Novembre 2003 Posté 1 Novembre 2003 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.
Neoboot Posté 1 Novembre 2003 Posté 1 Novembre 2003 Grace a toi Dan j'ai appris un nouvelle commande Merci
Philippe Posté 1 Novembre 2003 Auteur Posté 1 Novembre 2003 Merci Anonymus, excellent !! c'est exactement ce qu'il me faut !! Merci pour l'info :!:
Dan Posté 1 Novembre 2003 Posté 1 Novembre 2003 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
Philippe Posté 1 Novembre 2003 Auteur Posté 1 Novembre 2003 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
Philippe Posté 2 Novembre 2003 Auteur Posté 2 Novembre 2003 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
Dan Posté 2 Novembre 2003 Posté 2 Novembre 2003 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
Philippe Posté 2 Novembre 2003 Auteur Posté 2 Novembre 2003 Merci Dan Ca a fonctionné !! Je n'avais donc pas tout compris Merci encore.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant