2011-08-09 33 views
6

He exportado mi base de datos a csv como un archivo descargable. Sin embargo, lo que ahora debo hacer es, en lugar de crear un archivo .csv directo, que lo descargué. Lo necesito para guardarlo en una carpeta llamada "csv" en el servidor. Aquí está mi código para la exportación actual. Necesito ayuda para guardar el servidor. CHMOD en la carpeta (CSV) es 777Convertir la base de datos a CSV y guardar el archivo en la carpeta en el servidor

$today = date('Y-m-d'); 

    $select = "SELECT * FROM goldpacks WHERE date = '$today'"; 

    $export = mysql_query ($select) or die ("Sql error : " . mysql_error()); 

    $fields = mysql_num_fields ($export); 

    for ($i = 0; $i < $fields; $i++) 
    { 
     $header .= mysql_field_name($export , $i) . "\t"; 
    } 

    while($row = mysql_fetch_row($export)) 
    { 
     $line = ''; 
     foreach($row as $value) 
     {            
      if ((!isset($value)) || ($value == "")) 
      { 
       $value = "\t"; 
      } 
      else 
      { 
       $value = str_replace('"' , '""' , $value); 
       $value = '"' . $value . '"' . "\t"; 
      } 
      $line .= $value; 
     } 
     $data .= trim($line) . "\n"; 
    } 
    $data = str_replace("\r" , "" , $data); 

    if ($data == "") 
    { 
     $data = "\n(0) Records Found!\n";       
    } 

    header("Content-type: application/octet-stream"); 
    header("Content-Disposition: attachment; filename=import.csv"); 
    print "$header\n$data"; 

Respuesta

9

Todo lo que necesitas es añadir una llamada a file_put_contents(). Si ya tienes un CSV formateado correctamente en $data lo que el proceso de escritura es simple:

// $filename is whatever you need the file to be called 
file_put_contents("/path/to/csv/" . $filename, "$header\n$data"); 

En lugar de 777 permisos en la carpeta csv, que debe ser propiedad del usuario del servidor web se ejecuta con 700, o grupo de propiedad de las por el usuario del servidor web como 770.

+0

muchas gracias funcionó como un encanto! – Eddie

Cuestiones relacionadas