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 :

maj base mysql et erreur de codage


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Par défaut maj base mysql et erreur de codage
    bonjour à tous, je souhaite installer régulièrement une sauvegarde d'une base de données.
    Pour ce faire, j'ai créé une sauvegarde que je laisse sur mon serveur.
    Une tache Cron appelle donc régulierement mon fichier php pour qu'il aille chercher le fichier ma_sauvegarde.sql (exporté à partir de PhpMyAdmin) et l'executer en vue de faire la maj de la base.
    Tout fonctionne correctement hormis que certains caractères se transforme.
    Exemple : "La musique que vous écoutez"
    au lieu de "La musique que vous écoutez"

    J'ai été cherché des infos concernant le codage utf8 mais sans succès...

    Voici le contenu de mon fichier 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
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <p>!/usr/local/bin/php
    <?php
    	 mysql_connect('localhost','root','mdp')  or die("Connection impossible");
    mysql_select_db("ma_base")
       or die("Connection impossible a la base de données");
     
     
       $filename="ma_sauvegarde.sql";
     
    function mysql_import_file($filename, &$errmsg) 
    { 
    $healthy = array("&euro;","&mdash;","&rsquo;","&cent;","&ldquo;","&rdquo;","&ugrave;","&ccedil;","&eacute;","&egrave;","&agrave;","&Eacute;","&acirc;","&nbsp;","&ocirc;","&icirc;","&aelig;","&oelig;","&ndash;","&acute;");
    $yummy   = array("€","—","’","%","“","”","ù","ç","é","è","à","É","â"," ","ô","î","æ","œ","–","'");
     
       // lecture du fichier
       echo "1-lecture du chier<br/>";
       $lines = file($filename); 
     
       if(!$lines)  {
          $errmsg = "cannot open file $filename"; 
          return false; 
       } 
     
       $scriptfile = false; 
     
       /* Get rid of the comments and form one jumbo line */ 
       foreach($lines as $line)   {
       $line=str_replace($healthy, $yummy, $line);
     
    	  echo "2-requete sur chaque ligne".$line."<br/>";
          $line = trim($line); 
     
          if(!ereg('^--', $line)) {
             $scriptfile.=" ".$line; 
     
          } 
       } 
     
       if(!$scriptfile) {
          $errmsg = "no text found in $filename"; 
          return false; 
       } 
     
       /* Split the jumbo line into smaller lines */ 
     
       $queries = explode(';', $scriptfile);
     
    echo "3-lecture du fichier<br/>";
       /* Run each line as a query */
     
       foreach($queries as $query) {
          $query = trim($query);
    	  	  echo "<strong>4-mise en place</strong> - ".$query."<br/>"; 
          if($query == "") {echo "continue<br/>"; continue; } 
          if(!mysql_query($query.';')) 
          { 
             $errmsg = "query ".$query." failed"; 
             return false; 
          } 
       } 
     
       // retour true si la fonction reussie ^^
       echo "reussi";
       return true; 
    } 
     
    mysql_import_file($filename, &$errmsg);
    	?>

    Voici un extrait de mon fichier ma_sauvegarde.sql
    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
     
    DROP TABLE IF EXISTS `ps_quick_access_lang`;
    CREATE TABLE `ps_quick_access_lang` (
      `id_quick_access` int(10) unsigned NOT NULL,
      `id_lang` int(10) unsigned NOT NULL,
      `name` varchar(32) NOT NULL,
      PRIMARY KEY  (`id_quick_access`,`id_lang`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
     
    -- 
    -- Contenu de la table `ps_quick_access_lang`
    -- 
     
    INSERT INTO `ps_quick_access_lang` (`id_quick_access`, `id_lang`, `name`) VALUES (1, 1, 'Home'),
    (1, 2, 'Accueil'),
    (2, 1, 'My Shop'),
    (2, 2, 'Ma boutique'),
    (3, 1, 'New category'),
    (3, 2, 'Nouvelle catégorie'),
    (4, 1, 'New product'),
    (4, 2, 'Nouveau produit'),
    (5, 1, 'New voucher'),
    (5, 2, 'Nouveau bon de réduction'),
    Note : quand je prends mon fichier ma_sauvegarde.sql et que je le transfert via phpmyadmin, je n'ai aucun défaut...(donc je ne pense pas que l'erreur soit dans le fichier sql)... par contre j'ai beau chercher, je suis perdu.

  2. #2
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    As-tu essayé en modifiant le jeu de caractère en latin_1 ?

  3. #3
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Ton fichier .sql n'a pas l'air encodé en utf8, regarde avec ton éditeur de texte.

Discussions similaires

  1. Suppression base Mysql par erreur
    Par fraco2 dans le forum MySQL
    Réponses: 3
    Dernier message: 17/12/2009, 11h19
  2. erreur connexion a une base mysql
    Par klemellill dans le forum JBuilder
    Réponses: 9
    Dernier message: 03/05/2007, 16h45
  3. Erreur sur script en attaquant une base mysql
    Par bilou95 dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 09/10/2006, 15h58
  4. Erreur connection à une base Mysql avec c#
    Par zidenne dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 24/04/2006, 14h58
  5. [BDD] Erreur dans la connexion à une base MySQL
    Par dodo10 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 24/01/2005, 19h52

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