3

私の Web サイトでは、mysql データからテーブルを作成しています。次に、テーブルのエクスポート ボタンを追加して、ユーザーがデータを CSV ファイルとしてダウンロードできるようにしたいと考えています。

そのために、ダミーフォームを書きました:

<form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
    <input type="submit" name="submit" value="Click Me">
</form>

そして、私が持っているphpファイルの上部に:

if(isset($_POST['submit'])) {
    export();
}

私のエクスポート関数には、いくつかの mysql があり、配列を作成してデータをそこにプッシュしています。

$header = array('name', 'date', 'total', 'success', 'opens', 'clicks', 'success_rate', 'open_rate', 'CTO', 'CTR')
$fp = fopen('exportme2.csv', 'w');
fputcsv($fp, $header);

foreach ($data as $lines) {
        fputcsv($fp, $lines);
}
fclose($fp);

[エクスポート] ボタンをクリックすると、exportme2.csv ファイルが作成されますが、空です。データが間違っている可能性があるため、何もありませんが、少なくともヘッダー名は必要です。

この問題について教えてください。

ありがとう。

4

3 に答える 3

2

まずは着替え

$fp = fopen('exportme2.csv', 'w');

$fp = fopen('exportme2.csv', 'a');

asはファイルを'w' 切り捨て、 whereはファイル'a'を作成または追加します。

次に、flock()2 人の異なるユーザー (スレッド) が同時にファイルに書き込もうとしないようにするために使用する必要があります。

if (!flock($fp, LOCK_EX)) {
    error_log('Cannot get lock!');
} else {
    fputcsv($fp, $header);

    foreach ($data as $lines) {
        fputcsv($fp, $lines);
    }
}

それでも問題が解決しない場合は、コードのどこかにタイプミスがありますが、それは私には明らかではありません。

于 2012-07-18T20:15:55.170 に答える
1

これは私にとってはうまくいっています:

$header = array('name', 'date', 'total', 'success', 'opens', 'clicks', 'success_rate', 'open_rate', 'CTO', 'CTR');
$fp = fopen('exportme2.csv', 'w');
fputcsv($fp, $header);

/*foreach ($data as $lines) {
    fputcsv($fp, $lines);
}*/
fclose($fp);

上記のスクリプトは fclose の前に停止したため、ファイルにバグが発生しました... E_ALL E_STRICT を有効にして開発する必要があります。

于 2012-07-18T20:15:59.193 に答える
0

ページが更新されたときにすべての配列が空になるようにページを送信するため、何も投稿していませんでした。

于 2012-07-18T20:22:51.093 に答える