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.