Sauvegardez votre base de données (mysql) aux formats csv et sql

Soyez le premier à donner votre avis sur cette source.

Vue 14 079 fois - Téléchargée 2 483 fois


Description

Bonjour...

!!!
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
!!!

Afin de répondre à la demande d'un message de PHPCS, je vous donne ma petite appli qui fait des sauvegardes de serveur MySQL.

Ca fait quoi ?
Le principe est identique à l'exportation sous PhpMyAdmin, mais avec des plus...
  • Exportation compressé (on peut choisir le taux de compression)
  • Exportation complète du serveur en un clic !!! (dans les limites d'accès de votre login)
  • Exportation à la fois de la structure des bases de données et des tables de ces bases (on peut choisir)
  • Exportation des données (si on veut)
  • Format d'exportation CSV et/ou SQL
  • Organisation du Zip en répertoires et sous-rép...


Comment ça marche ?
Il sagit d'une petite appli web,
1. ouvrir l'index.php
2. choisir ce que l'on veut (les checkboxes)
3. Télécharger...

Source / Exemple :


/*
Voir le zip...

J'ai essayé de commenter le code

Je n'ai pas mis ma classe d'abstraction de la BDD. 
(beaucoup auraient crié au scandale en la voyant...)
Donc seul MySQL est implémenté

  • /

Conclusion :


Vous n'aimer pas la mise en page (les couleurs surtout...)
Pas de panique, tout est configuré dans la balise <style> de l'index.php

Puis, de toute façon cette source est à vous...

Une dernière chose :
La classe 'zipfile' proviendrait des sources de PhpMyAdmin
Je crois l'avoir trouvé ici (un vague souvenir)...

Amusez vous bien,
A+

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

malalam
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17 -
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é :-)
J_G
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6 -
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
ImmortalPC
Messages postés
955
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2 -
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
6 -
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+
malalam
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17 -
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);

??

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.