Version complète: sur le forum Webmaster Hub : file_put_contents zip
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
inizar
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 :



CODE
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
Kioob
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 :
CODE
if( $fp = gzopen( 'fichier.gz', 'wb' ) ){
    gzwrite( $fp, $contents );
    gzclose( $fp );
}
inizar
j'ai que php 4 sad.gif , 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
Kioob
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.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.