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

PHP & Base de données Discussion :

Remplacer une chaîne de caractères dans une base de données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Inactif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 054
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 054
    Points : 340
    Points
    340
    Par défaut Remplacer une chaîne de caractères dans une base de données
    Bonjour à tous

    J’ai besoin de déplacer mon Forum PhpBB sur une autre adresse mais cela me causerait un gros problème vis-à-vis des liens du forum, mais il y a peux être une solution si je peux créé un script PHP qui permette de remplacer une chaîne de caractères dans toutes les tables d’un base de données Mysql, l’ennuie s’est que je n’y connaît rien en PHP à par l’installation de PhpBB.

    Quelqu’un saurait-il m’aider ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    et tu as tant de tables que cela ?
    beaucoup de chaînes à remplacer ?

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Dans cette page, tu cherches 'replace'. Ca devrait faire ton affaire pour faire un update.
    http://dev.mysql.com/doc/refman/5.0/...functions.html

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 054
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 054
    Points : 340
    Points
    340
    Par défaut
    Bionjour francis et merci

    Oui il y en a pas mal.


    Bonjour Jeca et merci

    Merci beaucoup pour ce liens je vais étudier sa

  5. #5
    Inactif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 054
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 054
    Points : 340
    Points
    340
    Par défaut
    Donc j’ai trouvé ceci :
    mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
    D’après ce qui est dite ce code remplace w par Ww.

    Mais je ne vois pas ou mettre les paramètres de la base à traiter, sachant que cette base est sous Easy PHP et qu’il y a plusieurs bases mais que je souhaite n’en traiter qu’une seule, quelqu’un saurait-il me dire comment cibler la base à traiter ?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    c'est certainement achtement plus long à exécuter et pas du tout optimisé, mais comme tu ne dois le faire qu'une seule fois tu peux faire quelque chose de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $recherche = 'texteàremplacer';
    $remplace = 'texteremplacé';
    $dbh = mysql_connect (tes params de connexion);
    mysql_select_db (tabase);
    $db = mysql_query("SELECT champ,index FROM matable WHERE champ LIKE '%$recherche%' ");
    while ($machin = mysql_fetch_array($db))
    {
    $index = $machin['index'];
    $tekst = $machin['champ'];
    $tekst = str_replace($recherche, $remplace, $tekst );
    mysql_query("UPDATE matable SET champ = '$tekst' WHERE index = '$index'");
    }
    comme je disais, c'est long, mais cela devrait marcher sur le principe
    la soluce de jeca est certainement plus élégante...

  7. #7
    Inactif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 054
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 054
    Points : 340
    Points
    340
    Par défaut
    Merci beaucoup francis m

    Je vais prendre cette option

    Mais j’aurai encore besoin de cette fonction dans l’avenir, je prépare quelques forums en locale que je mettrais sur le Web futurement, donc il faudra encore que je refasse la manipe, donc si jeca peux m’aider a faire sa en plus simple sa m’aiderait vraiment, en tout cas merci à vous deux

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    update laTable
    set leChamp = replace(leChamp, 'laChaineARemplacer', 'laChaineDeRemplacement')
    Ceci doit suffire, non ?

  9. #9
    Inactif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 054
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 054
    Points : 340
    Points
    340
    Par défaut
    Bonjour jeca et merci beaucoup, oui s'est parfait.

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Quand j'essaye le script de Francis ça me retourne une erreur a la ligne 7
    je suis en mysql 5.3

    MonScript.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $recherche = '/shop/';
    $remplace = '/shop2/';
    $dbh = mysql_connect("localhost", "*****", "*******");
    mysql_select_db("shop180");
    $db = mysql_query("SELECT champ,index FROM matable WHERE champ LIKE '%$recherche%' ");
    while ($machin = mysql_fetch_array($db))
    {
    $index = $machin['index'];
    $tekst = $machin['champ'];
    $tekst = str_replace($recherche, $remplace, $tekst );
    mysql_query("UPDATE matable SET champ = '$tekst' WHERE index = '$index'");
    }
    ?>
    je lance ça dans un terminal : php MonScript.php
    PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/vhosts/../MonScript.php on line 7

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    As tu changé le nom des tables dans les requêtes ?
    As tu changé les chemins contenus dans les variables déclarées au début ?

    Désolé si tu l'as déjà fais, mais en toute logique, celà doit venir de là.

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

Discussions similaires

  1. Remplacer une partie du texte dans une chaîne de caractères (Slash)
    Par Medde dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/12/2014, 13h57
  2. Insertion d'une chaîne de caractères dans la base de données
    Par Imane198 dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 04/01/2012, 11h58
  3. Réponses: 7
    Dernier message: 14/12/2005, 09h53
  4. Remplacer une chaîne de caractères dans une base
    Par Furius dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/10/2005, 23h03
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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