SAUVEGARDEZ VOTRE BASE DE DONNÉES (MYSQL) AUX FORMATS CSV ET SQL

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 21 févr. 2006 à 17:19
paterson59 Messages postés 1 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 22 mai 2010 - 22 mai 2010 à 01:05
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36170-sauvegardez-votre-base-de-donnees-mysql-aux-formats-csv-et-sql

paterson59 Messages postés 1 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 22 mai 2010
22 mai 2010 à 01:05
Bonjour
Pour PHP5, j'ai tester , il a juste <?php a remplacer ligne 1 de zip.class.php ( a la place de <? )

Sinon fonctionne nickel, merci beaucoup tu as fait un superbe travail .
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
24 août 2008 à 17:25
Rover1be :

Je te laisse voir le code de la source et la configuration de ton serveur afin de regler le probleme avec le ZIP (ouvre le Zip avec notepad pour voir...)

Desole, mais je ne peut repondre a ta question... Bonne chance

-----------------------------------

!!!
IMPORTANT : Cette source n'obtiendra plus jamais de support de ma part :(
Plusieurs raisons. Premierement, je n'en pas le temps. Puis elle a ete developpee en PHP4. "Go To PHP5".

Son comportement n'est plus adapte aux serveurs moderne. J'en suis desole ! Si vous tenez absolument a la faire fonctionner, le code n'est pas extrement complique et pourrai devenir un bel exercice de "reverse ingeenering" pour les novices en PHP.

Bonne chance
!!!
Rover1be Messages postés 1 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 24 août 2008
24 août 2008 à 14:14
Bonjour,
Beau travail à priori.
Un petit ssoucis, le fichier zip que je recois ne peut s'ouvrir dans windows, ni avec 7zip.
Je reçois un message disant que le zip est corrompu.
Y a t'il moyen de sauvegarder en version sql ou texte ?

Merci
blabartette Messages postés 5 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 27 février 2008
27 févr. 2008 à 15:58
Cette source est géniale.
Un grand merci, elle vient de me sauver la vie. Je cherche depuis longtemps maintenant.
corresp Messages postés 6 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 26 décembre 2008
3 janv. 2008 à 18:46
Hello,
Ce script correspond tout à fait à ce que je cherche mais j'ai un petit souci avec. Il est bien installé et quand je le lance, il me propose bien les bases et les tables à sauvegarder. Quand je clique sur Télécharger, il m'affiche un message du genre :
compression_level $compression_level; } /* fin rajout */ /** * Converts an Unix timestamp to a four byte DOS date and time format (date * in high two bytes, time in low two bytes allowing magnitude comparison). * * @param integer the current Unix timestamp * * @return integer the current date in a four byte DOS format * * @access private */ function unix2DosTime($unixtime 0) { $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime); if (1) { $timearray['year'] = 2000; $timearray['mon'] = 1; $timearray['mday'] = 1; $timearray['hours'] = 0; $timearray['minutes'] = 0; $timearray['seconds'] = 0; } // end if return (($timearray['year'] - 1980) << 25) ..... etc....

La dernière ligne est : Fatal error: Class 'zipfile' not found in C:\Program Files\EasyPHP 2.0b1\www\DBsave\save.php on line 74

Est-ce que quelqu'un aurait une idée du problème ?

D'avance merci.
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
18 juin 2007 à 16:01
merci à vous deux...
hood042 Messages postés 8 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 1 juin 2007
12 juin 2007 à 22:18
Ton script est vraiment très réussi, je lui ai mis 10/10 !
Fourbosk Messages postés 1 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 9 juin 2007
9 juin 2007 à 22:24
Un grand merci pour ce code qui m'aide beaucoup pour le boulot pour cette fin d'année. C'est exactement ce que je cherchais.
fyav Messages postés 124 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 12 février 2010
4 mars 2006 à 08:47
super le script, pour ma part j'ai trouvé un petit soft qui me fait des sauvegardes à heures régulières en format sql et une mise à jour sur une base locale, et c'est hyper rapide, de plus il prends en compte les problèmes de déconnexion à la base distante !!

c'est dumptimer http://www.richtsoft.com/mysql_17_backup.html
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 févr. 2006 à 16:10
Je suis tout à fait d'accord...et si tu indentes bien ton code malgré tout, c'est le source html généré qui est foireux lol ;-)
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
23 févr. 2006 à 15:06
A mon goût, heredoc n'a qu'un gros défaut (le problème de coloration venant de l'éditeur) :

La balise de fermeture doit obligatoirement être en début de ligne. Faisant bien du tord à l'indentation du script...

Mais sinon, c'est correct !
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 févr. 2006 à 14:48
J'avais entendu dire que c'était plus rapide mais je n'avais jamais testé.
Bah ouais, donc, un peu plus rapide apparemment.
En poussant à 300000 la boucle, curieusement, ça bouge pas mal, heredoc est bousculé par le echo avec apostrophes et virgules, et par le echo avec apostrophes et concaténation, mais reste en tête de très peu.

J'utilise pas mal heredoc ces temps-ci...mais ça dépend des cas, en fait. textpad, que j'utilise en ce moment, apprécie mal aussi lol...
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
23 févr. 2006 à 14:26
Heredoc serait le plus rapide !?! c'est étonnant car il s'agit d'un texte interprété, comme les guillemts. Mais pourquoi pas...

Les virgules sont moins rapides que la concaténation... Mais on le savait déjà : la virgule devient meilleure au delà d'une grosse dizaine de paramètre.

En tout cas, aucune différence fulgurante dans les chronomètres. Pas de quoi changer tous mes guillemets en apostrophes ou en heredoc... (d'autant que ma coloration syntaxique ne digère pas le heredoc)


Merci bien pour ces tests effectués dans un laboratoire indépendant ;)

A+
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 févr. 2006 à 14:03
Voilà ce que j'obtiens moi (en secondes) :

Guillemets : 8.81445813179
Apostrophes : 7.956854105
Virgules : 8.28347611427
Heredoc : 7.12662100792

Et le echo heredoc :
echo <<<HTML
{$i} : J'aime utiliser les {$quoi} même si {$qui} me le déconseille car c'est franchement {$pourquoi} voir plus {$encore}\r\n
HTML;
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 févr. 2006 à 11:25
Et avec ça :

echo $i,' : J\'aime utiliser les ',$quoi,', même si ',$qui,' me le déconseil car c\'est franchement ',$pourquoi,', voir plus ',$encore,'.',chr(13),chr(10);

echo <<<HTML
{$i} : J'aime utiliser les {$quoi} même si {$qui} me le déconseille car c'est franchement {$pourquoi} voir plus {$encore}
HTML;
echo chr(13), chr(10);

??
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
23 févr. 2006 à 11:12
Merci immortalPC pour tes remarques...


Alors :
* Pour les erreurs de PHP, milles excuse, c'est réparé. (Je suis au courrant que les noms de variables sont sensible à la casse)

* Pour la validation... OK ! J'ai maintenant rajouté mes deux petites images W3C-HTML4.1 et W3C-css Youpi !!

* Pour les guillemets... La question est beaucoup plus complexe que tu ne le crois !!!!!!!!
Je sais que les apostrophes sont plus rapide que les guillemets. Donc, j'avais mis des apostrophe dans les boucles longues (récupération des données). Mais pas dans le reste, car le gain de temps comparé à la perte de confort est minime.

Par ailleurs, voici un petit test :
<?php
$quoi = 'guillemets';
$qui = 'ImmortalPC';
$pourquoi = 'pratique';
$encore = 'agréable à lire';

$date = gettimeofday(true);
$deb = $date['sec'] + $date['usec']/1000000;
echo "\r\n";

for($i=0; $i<100000; $i++) {
echo "$i : J'aime utiliser les $quoi, même si $qui me le déconseil car c'est franchement $pourquoi, voir plus $encore.\r\n";
}

$date = gettimeofday(true);
$tic = $date['sec'] + $date['usec']/1000000;

for($i=0; $i<100000; $i++) {
echo $i.' : J\'aime utiliser les '.$quoi.', même si '.$qui.' me le déconseil car c\'est franchement '.$pourquoi.', voir plus '.$encore.'.'.chr(13).chr(10);
}

$date = gettimeofday(true);
$tac = $date['sec'] + $date['usec']/1000000;

for($i=0; $i<100000; $i++) {
echo $i,' : J\'aime utiliser les ',$quoi,', même si ',$qui,' me le déconseil car c\'est franchement ',$pourquoi,', voir plus ',$encore,'.',chr(13),chr(10);
}

$date = gettimeofday(true);
$fin = $date['sec'] + $date['usec']/1000000;

echo 'Avec guillemets : ',($tic-$deb),"\r\nAvec les apostrophes : ",($tac-$tic),"\r\nAvec les virgules : ",($fin-$tac),'

';
?>

Et bien après exécution et après l'affichage des milliers de lignes, on à ça :
Avec guillemets : 83.6705679893
Avec les apostrophes : 85.5666708946
Avec les virgules : 150.180143118


Oh !! étonnement... Et non, plus on avance dans le test, plus mon PC rame (car ça mémoire se rempli). Donc le test est biaisé, mais montre que le gain de temps est tellement minime que bien d'autres facteurs de preformances sont prépondérant sur celui-ci.


Enfin, j'ai modifé la source avec plus de ' et moins de " histoire de gagner des millièmes de secondes...


A+
ImmortalPC Messages postés 954 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 11 novembre 2008 2
22 févr. 2006 à 11:26
Salut,
Ta source ne marche pas !!!
J' entre tout les bon paramètres ( 'localhost', 'root', '')
Il voit toutes mes bases de données et toutes mes tables mais quand j'envoie le formulaire erreur :
Notice: Undefined variable: struct in save.php on line 98

Warning: in_array(): Wrong datatype for second argument in save.php on line 98

Notice: Undefined variable: data in save.php on line 130
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 153

Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 154

Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 155

Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 156

Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 157

Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 158

Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 159

Explications :
Pour l' erreur ligne 98, la variable $struct != $STRUCT
Ex:
<?php
$t = 123;
$T = 456;
echo $t;
?>
Même chose pour la ligne 130 avec la variable $data != $DATA
Ce qui génère une erreur au niveau des entêtes.

Morale -> un variable en majuscule reste du début à la fin en majusclule.

Ensuite pour gagner de la vitesse on code avec les ' ' de partout:
$str.= "INSERT INTO `$table` (".$fields.") VALUES ('".implode("','",$d)."');\r\n";
$str.= 'INSERT INTO `$table` ('.$fields.') VALUES ("'.implode('\',\'',$d).'");'."\r\n";

header("Content-disposition: attachment; filename=$filename");
header('Content-disposition: attachment; filename='.$filename);

Quelque remarque en dehors du php, le HTML / XHTML
Va sur http://validator.w3.org/ et essaie de valider ton script !!!
@+
8/10
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
21 févr. 2006 à 17:52
Salut malalam
Merci pour le "joliement codé" :)


J'en profite pour faire une remarque :


!!!! NOTE IMPORTANTE !!!!
Lors de la création du Zip, tous le fichier est stocké dans la mémoire Vive de votre Zordi (enfin du serveur quoi)

Par exemple, j'ai créé cette appli pour exporter une base menant à un Zip de 7 Mo (avec le plus gros taux de compression)

Par défaut, votre serveur PHP n'a pas le droit de bouffer plus de 8Mo... C'est chaud !!!

Pour cela, la variable de configuration 'memory_limit' peut-être changée (si vous avez les droits suffisant pour le faire bien sûr)
ini_set('memory_limit','32M'); // pour 32 Mo

Voilou
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 févr. 2006 à 17:19
Hello J_G,

define('DB_USER', 'proot'); ? Lol... Pourquoi pas 'prout'? ;-)

Sinon, sympa le code :-) J'ai pas grand chose à dire dessus, c'est joliment codé :-)