以下のPHPプログラムは、データベースのテーブルを読み込み、それをテーブル表示しているだけのものです。

この表示されているテーブルの下に、その内容をCSVファイルとしてユーザーにデスクトップに保存させる「CSVダウンロード」リンクをつけたい場合どうしたらいいでしょうか? ファイル名は「日付.csv」のような形式が望ましいです。
【1000pt進呈】

// 接続
require_once("・・・.php");

echo '<table>';
echo '<thead><tr>';
echo '<th>id</th>';
echo '<th>name</th>';
echo '<th>price</th>';
echo '</tr></thead><tbody>';

// MYSQL呼び出し
$result = mysql_query("SELECT * FROM TABLEA");

while (($row = mysql_fetch_array($result, MYSQL_ASSOC)) != NULL) {
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['price'] . "</td>";
echo "</tr>";
}
mysql_free_result($result);
echo '<tbody></table>';
mysql_close($conn);

仕様[php5.2] [mysql5.1]

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/02/24 17:27:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:yoneto164 No.2

回答回数813ベストアンサー獲得回数94

ポイント300pt

例えばですが、まず download.php というファイル名で、下記のようなダウンロード用PHPを設置します。

header("Content-Type: application/octet-stream");

header("Content-Disposition: attachment; filename=日付.csv");

// 接続

require_once("・・・.php");

echo "id,name,price";

echo "\n";

// MYSQL呼び出し

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

while (($row = mysql_fetch_array($result, MYSQL_ASSOC)) != NULL) {

echo $row['id'].",".$row['name'].",".$row['price'].",";

echo "\n";

}

mysql_free_result($result);

mysql_close($conn);

このファイルにダウンロードリンクを貼ればOKです。

<a href="download.php">CSVダウンロード</a>
id:dekapurio

回答有難うございます。

nzworksさんの回答を加えて、encodingすることでやりたいことが出来ました。

やはりダウンロード用のファイルを用意しないといけないんですね。

2010/02/24 03:49:29

その他の回答1件)

id:nzworks No.1

回答回数13ベストアンサー獲得回数0

ポイント200pt

お試しください。

$data = "";

while (($row = mysql_fetch_array($result, MYSQL_ASSOC)) != NULL) {

$data.= $row['id'].",".$row['name'].",".$row['price']."\n";

}

$file = date('Y-m-d').'.csv';

header("Content-Description: File Transfer");

header("Content-Type: application/force-download");

header("Content-Disposition: attachment; filename=$file");

header("Content-Type: application/octet-streame");

echo($data);

id:dekapurio

回答有難うございます。

質問にあるコードにあてはめて書いていただけるとありがたいです。

(ダウンロードリンクの部分も含めて)

2010/02/24 01:56:44
id:yoneto164 No.2

回答回数813ベストアンサー獲得回数94ここでベストアンサー

ポイント300pt

例えばですが、まず download.php というファイル名で、下記のようなダウンロード用PHPを設置します。

header("Content-Type: application/octet-stream");

header("Content-Disposition: attachment; filename=日付.csv");

// 接続

require_once("・・・.php");

echo "id,name,price";

echo "\n";

// MYSQL呼び出し

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

while (($row = mysql_fetch_array($result, MYSQL_ASSOC)) != NULL) {

echo $row['id'].",".$row['name'].",".$row['price'].",";

echo "\n";

}

mysql_free_result($result);

mysql_close($conn);

このファイルにダウンロードリンクを貼ればOKです。

<a href="download.php">CSVダウンロード</a>
id:dekapurio

回答有難うございます。

nzworksさんの回答を加えて、encodingすることでやりたいことが出来ました。

やはりダウンロード用のファイルを用意しないといけないんですね。

2010/02/24 03:49:29
  • id:dekapurio
    回答を頼りに解決でき、とても参考になりましたが、不完全だったためポイント半分とさせて頂きました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません