begin process at 2012 02 11 15:32:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

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

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


 Information sur la source

Note :
9,29 / 10 - par 7 personnes
9,29 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Classé sous :sauvegarde, serveur, mysql, csv, sql Niveau :Initié Date de création :21/02/2006 Date de mise à jour :24/08/2008 17:26:12 Vu / téléchargé :12 239 / 2 217

Auteur : J_G

Ecrire un message privé
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • /*
  • 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é
  • */
/*
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+

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

21 février 2006 15:39:10 :
L'arborescence du zip partait de la racine... Je ne pense cela vous passionne ;)
23 février 2006 11:17:04 :
Suite aux remarques de ImmortalPC * Bug PHP corrigé * Bug HTML aussi => validé HTML4.1 et CSS * Moins de ' plus de "
24 août 2008 17:22:09 :
!!! 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". Sont 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 novice en PHP. Bonne chance !!!
24 août 2008 17:26:12 :
correction ortho

 Sources du même auteur

Source avec Zip TRANSFORMER UN TABLEAU PHP EN TABLEAU JAVASCRIPT
RECHERCHE PAR MOTS CLEFS - DÉCOUPAGE D'UNE PHRASE EN MOTS - ...
Source avec Zip Source avec une capture ENVOI D'UN MAIL AU FORMAT HTML AVEC POSSIBLITÉ D'UTILISER LE...

 Sources de la même categorie

Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
[CRON] INSERT ON DUPLICATE KEY UPDATE par pierreSabatier
Source avec Zip CLASS MYSQL 5/PHP5 AVEC GESTION DES EXCEPTION ET DES REQUÊTE... par devil_may_cry
Source avec Zip Source avec une capture MOTEUR DE RECHERCHE SUR BASE MYSQL FULLTEXT ET BOOLEAN AVEC ... par cod57
SYSTÈME DE PAGINATION AVEC BDD ET IMAGES (FICHIERS) par begueradj

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CONVERTIR BASE FIREBIRD EN MYSQL par castelfrederic29
Source avec une capture SQL/EXE EXECUTEUR DE REQUETTES SQL par enokbyreal
Source avec Zip CLASSE SQL par benjycorp
DUPLICATION D'UNE BASE DE DONNÉES POUR SAUVEGARDE par fmarie
Source avec Zip SAUVEGARDE DE BASE DE DONNÉES par ateaitys07

Commentaires et avis

Commentaire de malalam le 21/02/2006 17:19:21 administrateur CS

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é :-)


Commentaire de J_G le 21/02/2006 17:52:22

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

Commentaire de ImmortalPC le 22/02/2006 11:26:36

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

Commentaire de J_G le 23/02/2006 11:12:40

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 "<pre>\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),'</pre>';
?>

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+

Commentaire de malalam le 23/02/2006 11:25:08 administrateur CS

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);

??

Commentaire de malalam le 23/02/2006 14:03:35 administrateur CS

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;

Commentaire de J_G le 23/02/2006 14:26:50

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+

Commentaire de malalam le 23/02/2006 14:48:06 administrateur CS

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

Commentaire de J_G le 23/02/2006 15:06:23

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 !

Commentaire de malalam le 23/02/2006 16:10:41 administrateur CS

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 ;-)

Commentaire de fyav le 04/03/2006 08:47:34

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

Commentaire de Fourbosk le 09/06/2007 22:24:10

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.

Commentaire de hood042 le 12/06/2007 22:18:51

Ton script est vraiment très réussi, je lui ai mis 10/10 !

Commentaire de J_G le 18/06/2007 16:01:12

merci à vous deux...

Commentaire de corresp le 03/01/2008 18:46:24

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.

Commentaire de blabartette le 27/02/2008 15:58:24 8/10

Cette source est géniale.
Un grand merci, elle vient de me sauver la vie. Je cherche depuis longtemps maintenant.

Commentaire de Rover1be le 24/08/2008 14:14:21

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

Commentaire de J_G le 24/08/2008 17:25:29

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

Commentaire de paterson59 le 22/05/2010 01:05:26 9/10

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 .  

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Astuce du jour #1: Comment configurer une erreur de la base de donné MySql [ par SmallToad ] Quand vous avez de des erreurs de la base de donnée, êtes-vous déjà demander comment configurer le message d'erreur de la base de donnée MySql C'est connexions mysql multiples [ par eax ] salutj'ai des pb avec des connexions multiples en mysql:je souhaite updater mes tables localhost &lt;&gt; sql.free.fr mais voilà, sur mon serveur apac Retour à la ligne [ par philagui ] Bonjour,je fais afficher tous les resultats d'un champ d'une DB MySQL par l'intermédiaire du script suivant:$sql="SELECT Titre FROM Tableaux WHERE 1"; [SQL] Exporter vers un ficher csv [ par cedvoyage ] Ca doit surement être possible car y'a une fonction dans phpMyAdmin qui fait çà.Est-ce possible aussi de choisir les champs à exporter et de les mettr PHP & SQL Serveur 2000 [ par syndrael ] Bonjour,Est-il possible de se connecter sur une base SQL Serveur 2000 avec Php ? Question bete, mais je préfére avoir une confirmation d'initiés car j *** où est lerreur ? [ par kodiask ] $db = mysql_connect('******', '******', ''); mysql_select_db('*****',$db); $sql = 'SELECT nom,prenom FROM *****'; $req = mysql_query($sql) or die('Err besoin d'aide pour cree encore des tablo [ par agentTMORT ] je veut que lorsque une requete sql soit post& un tableau soit cree pour cette source voici mon codemysql_select_db('rockmagazine',$db) or die ("conne conseil et pb en sql avec mysql [ par herveguedj ] j'ai sur une page rech.php des liste pour le sexe sans bd et une liste qui liste les regions de ma table regionquand je fais une requete$sql="select Erreur Mysql [ par FearBlue ] Slt a tous!!!!jai une erreur mysql :je v vous montrer mon code c en rapport avec LIKEif(isset($HTTP_POST_VARS['recherche'])){$db = mysql_connect('loca ## Où est l'erreur ???? bon diou !! [ par kodiask ] voila dite moi pourkoi lorsque je met le code la, il n'y a rien ki saffiche ? (c un système de citation aléatoire)mysql_select_db('cit_tbl',$db); $que


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales