2012-09-13 36 views
6

Tôi mới sử dụng PHP. Tôi đã tạo ra một kịch bản mà nên tạo một tập tin csv với một số dữ liệu từ cơ sở dữ liệu của tôi và lưu nó vào một thư mục trên máy chủ của tôi.Tạo tệp CSV bằng cách sử dụng PHP và lưu nó vào thư mục

Tôi bằng cách nào đó đã thực hiện nhưng tệp này luôn được tải xuống. Tôi không muốn nó tải xuống. Nó chỉ nên lưu vào một thư mục.

Đây là mã đầy đủ để được trợ giúp của bạn.

Hãy giúp tôi về điều này.

<?php 
$MYSQL_HOST="localhost"; 
$MYSQL_USERNAME="root"; 
$MYSQL_PASSWORD=""; 
$MYSQL_DATABASE="paesana"; 
$MYSQL_TABLE="ds_orders"; 
mysql_connect("$MYSQL_HOST", "$MYSQL_USERNAME", "$MYSQL_PASSWORD") or die(mysql_error()); 
mysql_select_db("$MYSQL_DATABASE") or die(mysql_error($conn)); 


$filename="ePay"; 
$csv_filename = $filename."_".date("Y-m-d_H-i",time()).".csv"; 

header("Content-Type: application/vnd.ms-excel"); 

$today="2008-12-21"; 
$sql = "SELECT * FROM $MYSQL_TABLE where cDate='$today'"; 

$result=mysql_query($sql); 

if(mysql_num_rows($result)>0){ 

$fileContent="Beneficiary Name,Beneficiary Account No,Beneficiary Bank Code,Transaction Amount,Narration\n"; 
    while($data=mysql_fetch_array($result)) 
    { 
    $fileContent.= "".$data['customer_id'].",".$data['oNum'].","."$today".",".$data['cShipService']." ".$data['cShipMethod'].",".$data['cEmail'].",".$data['ccType'].",".$data['cShipInstruct'].",".$data['cShipFname']." ".$data['cShipLname']."\n"; 
} 


$fileContent=str_replace("\n\n","\n",$fileContent); 
    echo $fileContent; 
} 
header("content-disposition: attachment;filename=$csv_filename"); ?> 
+2

thì đừng echo nó, hãy viết nó vào một tập tin và loại bỏ tiêu đề() –

+1

tại sao không chỉ sử dụng ['fputcsv'] này (http://php.net/manual/en/function.fputcsv.php)? –

+0

Vâng. Nó hoạt động ngay bây giờ. Cảm ơn bạn rất nhiều. Nó làm việc tuyệt vời. – user1667374

Trả lời

7
  1. Nếu bạn không muốn tải về các kết quả, thoát khỏi các tiêu đề.

  2. Sau dòng này:

    $csv_filename = $filename."_".date("Y-m-d_H-i",time()).".csv"; 
    

    Add:

    $fd = fopen ($csv_filename, "w"); 
    
  3. Thay vì:

    echo $fileContent; 
    

    Sử dụng

    fputs($fd, $fileContent); 
    
  4. Đừng quên để đóng tập tin của bạn

    fclose($fd); 
    
+0

Thats tuyệt vời Hernan. Nhưng tập tin được lưu trong thư mục cũng như tải xuống. Tôi muốn nó chỉ được lưu lại. Vui lòng giúp – user1667374

+0

Tôi làm cách nào để lưu đoạn * .csv này vào một thư mục khác? – user1667374

+0

$ directory = "/ tmp /"; // Hoặc thư mục bạn muốn $ fd = fopen ($ directory. $ Cvs_filename, "w"); –

2
Try... 
Simple way to create csv file. 
<?php 
mysql_connect('hostname', 'username', 'password'); 
mysql_select_db('dbname'); 
$qry = mysql_query("SELECT * FROM tablename"); 
$data = ""; 
while($row = mysql_fetch_array($qry)) { 
    $data .= $row['field1'].",".$row['field2'].",".$row['field3'].",".$row['field4']."\n"; 
} 
$file = 'file.csv'; 
chmod($file, 0777); 
file_put_contents($file, $data); 
?> 
+0

Đây là cách quá đơn giản và làm việc cho tôi. – Neo

5

Bạn có thể sử dụng đoạn mã sau:

$data_array = array (
      array ('1','2'), 
      array ('2','2'), 
      array ('3','6'), 
      array ('4','2'), 
      array ('6','5') 
     ); 

$csv = "col1,col2 \n";//Column headers 
foreach ($data_array as $record){ 
    $csv.= $record[0].','.$record[1]."\n"; //Append data to csv 
} 

$csv_handler = fopen ('csvfile.csv','w'); 
fwrite ($csv_handler,$csv); 
fclose ($csv_handler); 

echo 'Data saved to csvfile.csv'; 
Các vấn đề liên quan