Envoie sauvegarder de ma base avec pièce jointe zip
jmsch57
Messages postés4Date d'inscriptionjeudi 4 juin 2009StatutMembreDernière intervention 4 juin 2010
-
4 juin 2010 à 22:00
jihednond
Messages postés143Date d'inscriptionjeudi 27 mars 2008StatutMembreDernière intervention 3 septembre 2011
-
7 juin 2010 à 18:08
bonjour, je suis débutant en programation et je viens réaliser un facturier. Afin de sauvegarder régulièrement ma base de donné j'utilise un scripte qui sauvegarde la base au format zip en local sur mon pc (jusque là tout fnctionne) et qui envoie une copie de ce fichier zip par mail à une adresse e mon choix mais là j'ai un problème....après envois le fichier zip reste désespèrément vide.
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ici les parametres pour la connexion a modifier
$host="localhost"; // host =
$user="root"; // login de la base
$passe="mot de passe"; // password
$base="facturier"; // nom de la base
$mailTo="email";
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$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
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");
sendmail("","","",$_POST["mail"],"","","Sauvegarde de la base $base","",$fname".zip");
jihednond
Messages postés143Date d'inscriptionjeudi 27 mars 2008StatutMembreDernière intervention 3 septembre 20111 7 juin 2010 à 18:08
bonjour,
vous voulez utiliser PHP pour générer une sauvegarde de votre base de données MySQL :
<?php
include 'config.php'; // Paramètre de connexion
include 'opendb.php'; // Connexion au serveur de base de données
$tableName = 'usager';
$backupFile = 'backup/usager.sql';
$query = "SELECT * INTO OUTFILE '$backupFile' FROM $tableName";
$result = mysql_query($query);
include 'closedb.php'; // Fermeture de la connexion au serveur
?>
Afin de restaurer une fichier de sauvegarde, exécuter la requete suivante LOAD DATA INFILE grâce au script php suivant :
<?php
include 'config.php'; // Paramètre de connexion
include 'opendb.php'; // Connexion au serveur de base de données
$tableName = 'usager';
$backupFile = 'backup/usager.sql';
$query = "LOAD DATA INFILE '$backupFile' INTO TABLE $tableName";
$result = mysql_query($query);
include 'closedb.php'; // Fermeture de la connexion au serveur
?>