2012-04-24 27 views
0

MySQLデータをCSVファイルにエクスポートする際に問題がありますが、テーブルから正しくデータを出力しますが、csvファイルの最後にhtmlページコードも表示されます。PHPを使用してMySQLデータをCSVファイルにエクスポート

billing_id;customer_id;user_id;trans_id;transfer;balance;created;text;credit;sender_id  
257;29;;-1;0;500000;1330930434;Payment;500000;  
258;29;;-1;200000;300000;1330930465;Sender ID reg.;0;jkjjhh  
284;32;;-1;0;1000000;1331708884;Payment;1000000;   
285;32;564;268;-120;999880;1331709106;SMS send;;   
286;32;;-1;0;1000000;1331709234;Payment;120;   
287;32;564;269;0;1000000;1331723634;SMS send;; 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    <title>Client Manger</title>   
    <link rel="stylesheet" href="/style/my-style.css">  
    <form action='./' method='post'>   
    <input type="hidden" name="action" value="billing" class="text">   
    <input type="hidden" name="customer_id" value="" /> 

何の理由が考えられます。

以下は私のコード

$file="billing"; 
    $i=0; 
    $values = mysql_query("SELECT * FROM billing"); 
    $rown=0; 
    while($row = mysql_fetch_assoc($values)){ 
    if($rown++==0) 
     $csv_output.=implode(";",array_keys($row))."\n"; 
     $csv_output.=implode(";",array_values($row))."\n"; 
} 

$filename = $file."_".date("Y-m-d_H-i",time()); 
header("Content-type: text/csv"); 
header("Content-disposition: csv" . date("Y-m-d") . ".csv"); 
header("Content-disposition: filename=".$filename.".csv"); 
print $csv_output; 
} 

出力のですか?

ありがとうございます。あなたはページのそれ以外の残りの部分(つまり近い}の外(私はif文の終わりである疑いがある))を印刷します(したがって、CSVに含まれる)print $csv_output;exit;またはdie();を持っている必要があります

+0

それはあなたの貼り付けられたコードの外の何かのように見えます。あなたは見渡して、私たちに何かを贈ったことを忘れていたかどうかを見てください。 – nyson

+0

ヘッダーを自動的に作成するフレームワーク内で実行していますか? – Snowcrash

答えて

1


だけの思考:これを処理するために、2つのPHPファイルを持っている方が良いかもしれません:CSVを出力1、フォームを出力する他の。 die/exitや非常に長いelseステートメントの使用を避けることができるだけでなく、コード全体がよりクリーンになります。別の考えとして


、あなたはdo...whileあなたが何かを初めて(そして唯一の最初の時間)に発生したい任意の時間を使ったほうが良いです。これはより良いオプションかもしれません:

$row = mysql_fetch_assoc($values); 
$csv_output.=implode(";",array_keys($row))."\n"; 
do 
{ 
    // notice how there is no flag needed! 
    // also, you don't need to call 'array_values' when imploding 
    $csv_output.=implode(";",$row)."\n"; 
}while($row = mysql_fetch_assoc($values)); 
+0

ありがとう、cwallenpoole、完了し、成功しました^ _ ^ – alkhader

関連する問題