Aller au contenu

file_put_contents zip


inizar

Sujets conseillés

Bonsoir ,

j'ai réalisé un petit code qui permet de sauvgardé ma base mais je voudrais que au lieu d'avoir mon fichier format sql dans le répertoire de le télechargé en format zip (j'ai besoin de zip.lib ??)

voila mon code si vous pouvez m'aider :

function svg_bdd($host,$user,$pass,$bdd) {

//on se connecte à la base

include('../../inc/in.php');


//on récupère les tables de la base
$tables = mysql_list_tables($bdd);

while ($donnees = mysql_fetch_array($tables)) { //tant qu'on trouve des résultats, on créé un tableau
$table = $donnees[0]; //on affecte la var table avec le premier élément du tableau qui correspond au nom de la table
$res = mysql_query("SHOW CREATE TABLE ".$table);
if($res){
$insertions = "";
$tableau = mysql_fetch_array($res);
$tableau[1] .= ";";
$dumpsql[] = str_replace("\n", "", $tableau[1]);
$req_table = mysql_query("SELECT * FROM ".$table);
$nbr_champs = mysql_num_fields($req_table);
while($ligne = mysql_fetch_array($req_table)){
$insertions .= "INSERT INTO ".$table." VALUES(";
for ($i=0; $i<=$nbr_champs-1; $i++){
$insertions .= "'".mysql_real_escape_string($ligne[$i])."', ";
}
$insertions = substr($insertions, 0, -2);
$insertions .= ");\n";
}
if ($insertions != ""){
$dumpsql[] = $insertions;
}
}
}
return implode("\r", $dumpsql);
}

file_put_contents("sauvegarde".date("Y-m-d").".sql", svg_bdd("host","user","pass","bdd"));

merci

Lien vers le commentaire
Partager sur d’autres sites

Hello,

quelle version de PHP utilises tu ?

Depuis PHP 5.2 il y a la classe "Zip_Archive" qui est bien pratique pour compresser/décompresser en zip.

Sinon un fichier .gz ne suffirait il pas ? C'est quand même beaucoup plus simple :

if( $fp = gzopen( 'fichier.gz', 'wb' ) ){
gzwrite( $fp, $contents );
gzclose( $fp );
}

Lien vers le commentaire
Partager sur d’autres sites

j'ai que php 4 :( , j'ai essayé de faire comme ça :

$file=file_put_contents("upload/sauvegarde".date("Y-m-d").".sql", svg_bdd("host","user","pass","bdd"));

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

header("Content-Type: application/force-download; Charset=ISO-8859-1");

header("Content-Transfer-Encoding: binary");

header("Content-Length: ".filesize('./upload/'.$file));

header("Pragma: no-cache");

header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");

header("Expires: 0");

readfile('./upload/'.$file);

mais ça marche pas ,j'aimerais pouvoir le telecharger (a la meme extension sql à la volée ) et pas la peine qui sois enregistré dans un dossier

merci

Lien vers le commentaire
Partager sur d’autres sites

les chemins que tu indiques à file_put_contents() et à readfile() semblent différent... ça a peu de chance de fonctionner.

De plus ici tu cherches à envoyer directement le contenu au navigateur, donc pas besoin de l'écrire dans un fichier, un simple "echo" suffira.

De manière générale, lis les messages d'erreur que PHP retourne... c'est très souvent utile.

Modifié par Kioob
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...