1

重複の可能性:
PHP Excel を特定のパスにエクスポートしますか?

Excel や CSV にエクスポートする PHP にはあまり詳しくありませんが、ローカルの販売時点情報管理に PHP MySQL を使用しています。以下のコードによると、これは実際に機能します..しかし、本来あるべき方法ではありません! すべてのレコードは csv ファイル内に 1 行として配置されます。これを修正するにはどうすればよいですか? また、同じファイルの上書きを停止するにはどうすればよいですか...ボタンをクリックしてcsvをエクスポートすると、既存のcsvファイルがあるかどうかを確認する必要があります.ある場合--新しいファイルを作成してください!

ありがとうございました

require_once('connect_db.php');

$items_array = array();

$result = mysql_query("SELECT * FROM sold_items");

while($row = mysql_fetch_array($result))
{
    $items_array[] = $row['item_no'];

    $items_array[] = $row['qty'];
}

$f = fopen('C:/mycsv.csv', 'w');
fputcsv($f, $items_array);
fclose($f);
4

2 に答える 2

1

初めに

$items_array[] = array($row['item_no'], $row['qty']);

次に、変数を使用してファイル名を格納します。

$filename = $name = "myscsv";
$index = 1;
while(file_exists($filename.".csv")) {
  $filename = $name.$index;
  $index++;
}

これで保存できます;)

$f = fopen("C:/{$filename}.csv", 'w');
于 2012-09-07T21:36:12.993 に答える
1

fputcsv は、1 つの行/レコードのみを書き込んでいるように見え、その出力に行/レコード ターミネータが含まれています。レポートの行ごとに fputcsv を呼び出す必要があります。

多くの場合、シーケンシャル ファイルネーミングに対する dbf のソリューションはうまく機能します。個人的には、既存のファイルのコレクションがある場合に必要な IO が少なくなるため、タイムスタンプを追加すると役立つことがわかりました。さらに、レポートが変更/コピー/タッチされた場合でも、それぞれを開かなくても、レポートがいつからのものかを知ることができます。

マイナーな詳細: 使用している列だけにクエリを調整しました。

<?php

require_once('connect_db.php');

$result = mysql_query("SELECT item_no, qty FROM sold_items");

$timestamp = date('Ymd-His'); 

$f = fopen("C:/mycsv-{$timestamp}.csv", 'w');

// Headers    
fputcsv($f, array('Item No', 'Qty'));

while($row = mysql_fetch_row($result))
{
    fputcsv($f, $row);
}
fclose($f);
于 2012-09-07T21:40:45.957 に答える