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 :

Remplacement massif [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 111
    Points : 55
    Points
    55
    Par défaut Remplacement massif
    Bonjour à tous,

    Je cherche un moyen pour mettre à jour tous les champs de ma base de donnée.
    Ma sauvegarde ayant eut quelques soucis avec les accents, je me retrouve avec des caractères non conformes dans la base.
    Sous phpmyadmin, je peux les recherche, mais impossible d'effectuer un remplacement à la voléé.

    Une idée ?

    Merci d'avance.

    Bonne journée.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 408
    Points : 15 777
    Points
    15 777
    Par défaut
    tu peux refaire l'importation de ta sauvegarde ? si oui regarde dans le forumulaire de phpMyAdmin, tu peux choisir l'encodage du fichier

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 111
    Points : 55
    Points
    55
    Par défaut
    Bonjour mathieu,

    Je pourrais mais ce n'est pas la solution optimum étant donné que ma base fait quelques 30mo et que certaines tables font plus de 2mo, cela va compliquer la tâche d'importation (j'ai du découper les tables "à la main").
    Donc si la solution de remplacement éxiste (en php je suppose), je suis preneur.

    Bonne journée.

  4. #4
    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
    je ne sais pas si cela va te plaire, mais quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $bdw = 'UPDATE '. $blad. ' SET '. $champ .'=REPLACE('. $champ. ",'é','é' )";
    $bdq = mysql_query($bdw);
    $bdw = 'UPDATE '. $blad. ' SET '. $champ .'=REPLACE('. $champ. ",'è','è' )";
    $bdq = mysql_query($bdw);
    etc pour chacun des caractères accentués existant en français ...
    $blad est le nom d'une table et $champ est le nom d'un champ de la table
    faut certainement faire un WHERE aussi, et une boucle sur les champs et les tables
    Ce n'est pas optimisé, mais je le fais parfois sur mes tables et cela fonctionne

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 111
    Points : 55
    Points
    55
    Par défaut
    Bonjour francis,

    Je me suis inspiré de ton idée pour écrire l'algorithme suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    $table = array('table1','table2');
    $champs = array('champ1_de_table1','champ2_de_table1',champ1_de_table2');
    $tind = array('0','2','4');
    /* $tind est un tableau indice, il stocke l'indice où se trouve le premier champ dans $champs correspondant à une table dans $table.
    Exemple : 0 -> pour table1, on sait que le premier champs a étudié se trouve à l'indice 0 dans $champs, il s'agit donc du champs 'champ1_de_table1'.
    */
     
    // On boucle sur chaque table
    for($i=0; $i < 2 ; $i++)
        {
        	$blad = $table[$i];
    // On boucle sur chaque champs
    // $k correspond au premier champs de la table suivante
        	for($j=$tind[$i],$k=$tind[$i+1]; $j < $k ; $j++)
        		{
        			$champ = $champs[$j];
    				$bdw = 'UPDATE '. $blad . ' SET '. $champ .'=REPLACE('. $champ. ",'é','é' )";
    				echo "$bdw \n";
    				$bdq = mysql_query($bdw);
    				$bdw = 'UPDATE '. $blad. ' SET '. $champ .'=REPLACE('. $champ. ",'è','è' )";
    				echo "$bdw \n";
    				$bdq = mysql_query($bdw);
    				$bdw = 'UPDATE '. $blad . ' SET '. $champ .'=REPLACE('. $champ. ",'Ã','à' )";
    				echo "$bdw \n";
    				$bdq = mysql_query($bdw);
    				$bdw = 'UPDATE '. $blad. ' SET '. $champ .'=REPLACE('. $champ. ",'î','i' )";
    				echo "$bdw \n";
    				$bdq = mysql_query($bdw);
    				$bdw = 'UPDATE '. $blad . ' SET '. $champ .'=REPLACE('. $champ. ",'û','û' )";
    				echo "$bdw \n";
    				$bdq = mysql_query($bdw);
    				$bdw = 'UPDATE '. $blad. ' SET '. $champ .'=REPLACE('. $champ. ",'ç','ç' )";
    				echo "$bdw \n";
    				$bdq = mysql_query($bdw);
    				$bdw = 'UPDATE '. $blad. ' SET '. $champ .'=REPLACE('. $champ. ",'ê','ê' )";
    				echo "$bdw \n";
    				$bdq = mysql_query($bdw);
    				$bdw = 'UPDATE '. $blad. ' SET '. $champ .'=REPLACE('. $champ. ",'ô','ô' )";
    				echo "$bdw \n";
    				$bdq = mysql_query($bdw);
     
        		}
        }
    Si vous trouverez le code pour la lettre 'ù' je suis preneur... (ou si vous voyez que j'ai pu oublié quelques lettres accentuées...)

    Bonne journée.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Tu es sûr que ton problème ne peut pas se régler avec les interclassements? Sans sortir de MySQL?

  7. #7
    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
    Le code pour la lettre ù est ù

  8. #8
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 111
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    Citation Envoyé par ripat
    Tu es sûr que ton problème ne peut pas se régler avec les interclassements? Sans sortir de MySQL?
    C'est ce qui était utilisé sur mon autre hébergement.
    Sur mon hébergement actuel, impossible d'avoir accès à l'interclassement.
    D'ailleurs je l'avais remarqué dans l'importation puisque dans les requêtes SQL il y avait une partie pour l'interclassement et il me répondait une erreur à ce niveau.

    Citation Envoyé par francis m
    Le code pour la lettre ù est ù
    Merci

    Bonne journée.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Remplacement de texte massif
    Par Djobird dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 16/06/2008, 18h57
  3. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38
  4. Comment on remplace un check ?
    Par Nout dans le forum Requêtes
    Réponses: 4
    Dernier message: 29/07/2003, 11h20
  5. [SQL] Remplacer une table
    Par rstephane dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/05/2003, 17h10

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