Designed by Maunakea !
68 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche

 NewsLetter





   

Sauvegarde PHP d'une base de données (1/5)

S'envoyer par mail une copie zippée de la base





fmarie
Vous avez un site PHP avec une base de données MySQL. Vous voulez que des utilisateurs modifient celle-ci via des pages d'administration. Le problème est que la base sera modifiée immédiatement ! Que faire dans le cas ou un utilisateur fait une erreur ? La solution est de se faire une sauvegarde de la base. Sur ce tutorial, la personne ira d'abord sur la page save.php ou il rentrera son mail. La base sera sauvegardée, zippée puis envoyé par mail à son adresse et également à l'adresse du webmaster.


Introduction - save.php - mail.php - mime_mail.class.php - zip.lib.php - Récapitulatif


 Les fichiers nécessaires 
Un petit récapitulatif de tous les fichiers nécessaires à l'exécution de notre script.



Save.php : C'est le fichier de base qui permet de sauvegarder, de zipper puis d'envoyer par mail la sauvegarde.

mail.php : Envoie le fichier

mime_mail.class.php : Permet la gestion de la classe mime

zip.lib.php : Permet de zipper le fichier

Ce petit script vous permettra en toute sécurité de laisser les utilisateurs "trafiquer" la base de données sans se soucier des erreurs éventuelles puisque vous pourrez facilement remettre la base de données.

 save.php 
Le fichier de sauvegarde

Ce fichier permet donc de gérer le compactage de la base, la zipper, envoyer le fichier.

Vous devrez changer quelques données tel que la connection, les adresses mail et autres. Les données à modifier sont comprises entre les // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.

Voici le code :

save.php 
<? 
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
//ici les parametres pour la connexion 
   $host="localhost"; // host = 
   $user="root"; // login de la base 
   $passe=""; // password 
   $base="test"; // nom de la base
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

$action = @$_GET["action"];

if($action=="oui") {

   function Compacter($base) { // Permet de compacter la base avant de lancer toute la procédure 
      $tables = mysql_list_tables($base); 
      while ($enr = mysql_fetch_row($tables)) 
         @mysql_query("OPTIMIZE TABLE ".$enr[0]);
    }

   if($connexion = @mysql_connect($host,$user,$passe)) { // on effectue la connexion 

      Compacter($base); 
     
      $select_base=@mysql_select_db($base); // Selection de la base de données 
     
      // CREATION DU FICHIER 
     
      $fname = "backup_".$base.".sql"; 
      $f2 = fopen($fname,"w"); 
     
      fputs($f2,"# Sauvegarde de base de données\n"); 
      fputs($f2,"# Batch par Florent MARIE aka fmarie - 2005\n\n"); 
      $tables = mysql_list_tables($base); 
      while ($enr = mysql_fetch_row($tables)) { 
         fputs($f2,"# Les tables traitées sont ".$enr[0].";\n"); 
      } 
      fputs($f2,"\n"); 
      $tables = mysql_list_tables($base); 
      while ($enr = mysql_fetch_row($tables)) { 
         fputs($f2,"DELETE FROM $enr[0];\n"); 
      } 
     
      $tables = mysql_list_tables($base); 
      while ($enr = mysql_fetch_row($tables)) { 
         $res = mysql_query("SELECT * FROM $enr[0]"); 
         // le nombre de champs de la table 
         $champs = mysql_num_fields($res);  
         // Pour chaque ligne 
         while($val=mysql_fetch_array($res)) { 
            $tmp = "INSERT INTO ".$enr[0]." VALUES("; 
            $c=0; 
            // Pour chaque champ 
            while($c < $champs) { 
               // Une virgule sauf au premier 
               if($c>0) $tmp .= ", "; 
               // Le contenu du champ 
               $tmp .= "'".AddSlashes($val[$c])."'"; 
               $c++; 
            } 
            $tmp .= ");\n"; 
            // Ecrit la ligne 
            fputs($f2,$tmp); 
         } 
      } 
      fclose($f2); 
     
      // ZIP DU FICHIER 
     
      include("zip.lib.php")
     
      // Compresse le fichier 
      $zipfile = new zipfile(); 
      $zipfile -> addFile(implode("",file($fname)), $fname); 
      // Sauve le zip 
      $f2=fopen($fname.".zip","w"); 
      fputs($f2,$zipfile -> file()); 
      fclose($f2); 
     
      // NETTOYAGE 
     
      // Détruit le fichier initial 
      // mais laisse le zip au cas où... 
      unlink($fname); 
     
      // ENVOI LE ZIP EN PJ 
     
      include("mail.php")
      sendmail("","","",$_POST["mail"],"","","Sauvegarde de la base $base","",$fname.".zip"); 

      ?>
 
      Vérifiez votre mail.<br> 
      <a href="save.php">Retour</a><br> 
      Merci 
      <?
   }


} else { ?>


   <form action="save.php?action=oui" method="post"> 
      Entrez votre mail pour recevoir la sauvegarde :
      <input name="mail" type="text"> 
      <br> 
      <input name="send" type="submit" value="send"> 
   </form> 

<? } ?> 


Faites un copier-coller puis sauvegarder le sous save.php



Pour pouvoir écrire dans ce forum, identifiez-vous !

 Lire  16/05/08 17:19 de power11
je voudrais savoir comment se faire l'envoie des mess...
  v1.3p © ASP-PHP.net 2002  

fmarie le 25/01/2006 (76 642 hits)
Didier Gratuit : Formez-vous sur Silverlight, .NET, OpenXML, ...
Ils l’ont fait avec SQL Server. Découvrez comment !
Concours de programmation Flash !
Au fil des news  
PowerShell - Ajouter une liste dans un site SharePoint
Annuaire d'entreprise en PHP - Très pratique pour ne plus rien perdre
Mon petit annuaire d'entreprise, je m'en sers tous les jours alors autant vous en faire profiter. ...
PHP-MySQL : Formulaire - pour le script 'Bon anniversaire' de DB77
Formulaire et script d'enregistrement pour le script « Bon anniversaire » de DB77 en PHP/MySQL ...
.NET - Introducing Microsoft Silverlight 2.0, 2nd Edition
PHP5 - Upload de fichiers - Classe PHP
PHP - PHP 5 /MYSQL® 5
PHP - Calcul de la surface d'un polygone
Comment supprimer des items d'une liste SharePoint - Supprimer les informations d'une liste SharePoint
SharePoint permet bien sur de stocker des données. Parfois, on peut vouloir effacer certaines de ...
Dreamweaver CS4 - Nouvelle version Béta
Voici la nouvelle mouture, annoncée en juin, juste 6 mois après la sortie de la version CS3. Je ...
PowerShell - Synchronisation répertoire par répertoire
PowerShell - Ajouter des items dans une liste SharePoint
Localisation des développements avec SharePoint - Rendre ses applications SharePoint internationales
Lorsque l'on développe des applications avec SharePoint, on se confronte très souvent à une ...
PowerShell - Supprimer tous les items d'une liste SharePoint
PowerShell - Vider la Corbeille SharePoint d'une collection
PowerShell - Modifier le Thème d'une collection SharePoint
PowerShell - Tester l'existance ou effacer une WebPart
PowerShell - Définir une valeur pour une propiété d'un SPWeb
PowerShell - Importer une liste SharePoint depuis un fichier
PowerShell - Exporter une liste SharePoint dans un fichier
PowerShell - Lister les propriétés d'un site SharePoint
Modification de l'adresse du Search Center - Définir la page de résultat d'une ferme MOSS
Lorsque l'on installe MOSS dans une ferme SharePoint et que l'on configure le moteur de recherche ...
PHP - Redimensionner Image + Picto après Upload - Galerie photos, revue de presse, ...
Upload de photo, redimensionnement, création de picto, enregistrement ...
ASP - Redimensionner Image + Picto après Upload - Galerie photos, revue de presse, ...
Upload de photo, redimensionnement, création de picto, enregistrement ... Utilisation ...
Exporter et Importer un site SharePoint - Comment déplacer un site SharePoint
Une question est très régulièrement posée à tout responsable de ferme SharePoint : Comment ...
Bon anniversaire - Comment le souhaiter à ses membres ?
Avoir un site, c'est bien. Avoir des inscrits, c'est mieux. Souhaiter leur anniversaire, c'est ...
Audio & Vidéo - Multimédia dans ses pages web
AUDIO/VIDEO : QuickTime, MediaPlayer, RealPlayer, FlashPlayer, ... : Du multimédia dans ses pages ...
Magazines - Le Hors-Série .Net de Programmez !
PHP - Administrer en ligne - Protection des pages
Protéger ses pages pour administrer son site en ligne en (relative) sécurité (PHP).
Communautés - Concours de programmation Flash !
[MAJ] Afficher ses images à la taille voulue - Utilisation du composant IMGSIZE
Ajout de la vérification de l'existence du fichier et d'un test d'erreur de retour du composant ...
Protéger ses Images - Propriété intellectuelle - Vie privée
Je me suis penché sur la question en tant qu'artiste moi-même, et concepteur de site web pour ...
Création de miniatures - Fonction php de création
Cette fonction sert à créer des miniatures.
ASP - Administrer en ligne - Protection des pages
Protéger ses pages pour administrer son site en ligne en (relative) sécurité (ASP).
JavaScript - Numéros de ligne à gauche d'un textarea
Protection - Sécurité - Mise au point - Précautions - Solutions
Même sans être paranoïaque, on a tous entendu parler de failles de sécurité, piratage informatique, ...
AspSmartUpload - Mode d'Emploi
Le composant ASPSmartUpload (gratuit) permet de gérer les téléchargements de FICHIERS ou de ...
JavaScript - Contrôler une date saisie dans un formulaire
HTML - Ajouter un fichier multimédia dans une page web
HTML - Musique de Fond sur son site
Afficher ses images à la taille voulue - Utilisation du composant IMGSIZE
Devant la diversité des formats d'image actuels, il est parfois nécessaire de connaître les ...
Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
  Scripts : Scripting | ASP-PHP | ASP.net | Divers
  Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
v3 © Didier 2003   
 

Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
 Wygwam DotNet Project ASP-magazine El Roubio MVP Codes Sources The Inquirer FR Groupes Utilisateurs Microsoft TechNet CodePPC