Aller au contenu

Remplacer des termes dans une table sql sous phpmyadmin


Sujets conseillés

Posté (modifié)

Bonjour à tous,

Voilà ce que je cherche à faire, j'ai une des tables de ma base de données qui contient dans le champs description l'url d'une image qui est répétée environ 1000 fois pour un peu plus de 800 id (c'est l'url d'une image)

Cette url est pour le moment sous la forme -[color=#3333FF]http://www.domaine.tld/images/site/image.gif et je souhaiterais que ces termes soient remplacés par /images/image.gif (l'image n'est plus située au même endroit). A noter, le champs description comprend d'autres données qui ne doivent pas être modifiées.

Je suppose qu'il faut donc que je créé une requête sql à exécuter dans phpmyadmin pour la table en question lui donnant l'ordre de me trouver l'url1 et de la remplacer par l'url2 en utilisant la commande str_replace (ou quelque chose comme ça ???)

Le problème est le suivant, je n'y connait pas grand chose en formulation de requête sql et je n'ai pas envie de faire de bêtises avec ma base :blush:.

En partant du principe que ma table se nomme ja_book, comment la requête doit-elle être formulée ?

Modifié par Keroin
Posté

Bonjour,

Voici une possibilité :

UPDATE ja_book SET description = REPLACE(description,'http://www.domaine.tld/images/site/image.gif', '/images/image.gif') WHERE description LIKE '%http://www.domaine.tld/images/site/image.gif%'

Concernant la syntaxe et les fonctions sur les chaînes de caractères sous MySQL, rien ne vaut le manuel MySQL (depuis la version 5 il est traduit entièrement en français, si tu utilises une version précédente fais attention, mais généralement les auteurs mentionnent la version qui fût la première à intégrer telle ou telle fonctionnalité) :)

Bonne continuation.

Posté (modifié)

:thumbup: Excellent, tout a parfaitement fonctionné.

Merci beaucoup TheRec pour ta rapidité et ton efficacité :groupwave:

Et merci aussi pour le lien, je ne l'avais pas trouvé et je pense qu'il va me servir ;)

Modifié par Keroin
Posté

De rien, ça vaut toujours la peine de se pencher sur le manuel, mais avant il faut le trouver :)

Posté (modifié)

Intéressant :-)

Est-ce qu'il y a moyen d'avoir des expressions régulières ?

J'aimerais pouvoir faire un truc du genre, $1 remplacant la REGEX :

UPDATE phpbb_posts_text  SET post_text  = REPLACE(post_text,'http://www.photos-suede.com/forum/viewtopic.php?t=$1','http://www.photos-suede.com/forum/sweden-ftopic$1.php') WHERE  post_text  LIKE '%http://www.photos-suede.com/forum/viewtopic.php?t=REGEX([09]*)%';

Une autre possibilité :

est-ce qu'il y a moyen de récupérer en résultat d'une requete le REGEX quand il y a un résultat ? Cela limiterait le nombre de replace à faire...

Par exemple

Select id, souschaine([0-9],'description') from table where souschaine([0-9],'description')!=null

C'est un mélange de français, php et mysql, mais j'espere que je me fais comprendre...

François

Modifié par suede

Veuillez vous connecter pour commenter

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



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