IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

remplacer automatiquement le contenu partiel d'un champ


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut remplacer automatiquement le contenu partiel d'un champ
    Hello,
    Voilà j'ai un problème : mon site a changé d'adresse et maintenant tous les émoticônes de mon forum n'apparaissent plus car leur adresse est incorrecte.

    Les smileys sont enregistrés dans les champs "post" avec l'adresse de l'ancien site par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src='http://ancien_site/emot.gif'>
    J'arrive à afficher tous les champs à modifier avec PHPMA par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE `post`LIKE "%src='http://ancien_site/%"
    Mais changer 2000 posts manuellement c'est hard !!!

    Donc ma question (enfin ! ) : ya-t-il une commande pour changer automatiquement une partie du champ par autre chose.
    changer src='http://ancien_site/ par src='http://nouvo_site/ dans tous les posts de mon forum ?

    Merci de vos réponses

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    1- Récupérez le résultat de votre requête dans un jeu d'enregistrement
    2- Dans une Boucle Affectez la valeur du champ à modifier dans une variable
    3- Utilisez la fonction PHP str_replace pour remplacer la chaîne "ancien_site" par la chaîne "nouveau_site" dans votre variable.
    4- Modifiez et enregistrez l'enregistrement en cours.

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    La réponse dépend du SGBDR que tu ne mentionnes pas .

    Avec mySQL, REPLACE fait exactement ce que tu demandes.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par pgibone
    sinon la réponse : requête SQL toute simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE ma_table SET mon_champ = replace(mon_champ,"http://ancien site","http://nouvo.site");
    c'est possible de faire ce type de requête sous codition genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE ma_table SET mon_champ = replace(mon champ,"ancienne valeur","nouvelle valeur") WHERE mon_champ LIKE "%ma condition%";

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 902
    Points : 53 143
    Points
    53 143
    Billets dans le blog
    6
    Par défaut
    SGBDR, définition : système de gestion de base de données relationnelles.
    Exemples :
    * Access de Microsoft
    * DB2 d'IBM
    * FirebirdSQL, logiciel libre
    * Informix
    * Ingres
    * Interbase de Borland
    * MySQL
    * MaxDB de SAP AG
    * Oracle de Oracle Corporation
    * PostgreSQL, logiciel libre
    * SQL Server de Microsoft
    * Sybase de Sybase

    Ce qu'est une base de données relationnelle :
    Lire : http://fr.wikipedia.org/wiki/Base_de_donn%C3%A9es_relationnelle

    A +

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 104
    Points : 64
    Points
    64
    Par défaut
    Je me permet de remonter ce topic car j'ai +/- le même problème.
    Il faut que je modifie dans tout les posts du forum les [DOHTML] en [HTML].

    J'ai donc essayé la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `smf_messages` SET `body` = REPLACE(`body`,"[DOHTML]","[HTML]") WHERE `ID_MSG` = 408104;
    La donnée à modifier étant dans la colonne nommée "body" et je teste au depart que sur un message. Cela ne me renvoit pas d'erreur mais cela ne modifie rien

    Le forum est sur du mysql5.

    Merci de votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/05/2015, 11h05
  2. Réponses: 14
    Dernier message: 28/06/2010, 16h49
  3. [DW MX2004] Remplacement automatique des accents
    Par mandaillou dans le forum Dreamweaver
    Réponses: 9
    Dernier message: 10/07/2008, 15h31
  4. Requete SELECT à l'aide d'un contenu partiel d'un champ
    Par wylls dans le forum Langage SQL
    Réponses: 11
    Dernier message: 04/12/2006, 11h33
  5. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo