2011-08-09 10 views
6

Udało mi się wyeksportować moją bazę danych do pliku CSV jako pliku do pobrania. Jednak to, co muszę teraz zrobić, to zamiast tworzyć prosty plik .csv, który jest pobrany, potrzebuję go do zapisania w folderze o nazwie "csv" na serwerze. Oto mój kod dla bieżącego eksportu. Potrzebuję pomocy w zapisie do części serwerowej. CHMOD na folder (CSV) to 777Konwersja bazy danych do pliku CSV i zapisanie pliku w folderze na serwerze

$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"; 

Odpowiedz

9

Wszystko trzeba dodać to wywołanie file_put_contents(). Masz już CSV prawidłowo sformatowany w $data więc proces zapisu jest prosta:

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

Zamiast 777 uprawnienia folderu csv należy posiadanego przez użytkownika serwer WWW działa jak z 700 lub grupy wtórny przez użytkownika serwera sieciowego jako 770.

+0

dziękuję bardzo, że działało jak czar! – Eddie

Powiązane problemy