画面から入力されたパラメータでMySQLを検索して、結果をCSVファイルとしてダウンロードするサンプルです。
サンプルソース
mst_syainテーブルから検索した結果をCSVとして出力するサンプルです。
【クライアント側 - HTML】(index.html)
<html lang="ja">
<head>
<meta charset="utf-8">
<title>CSVダウンロード</title>
</head>
<body>
<form action="./csvdownload.php" method="post">
部署CD:<input type ="text" name="busyo_cd" />
<input type="submit" name="dlbtn" value="ダウンロード" />
</form>
</body>
</html>
【サーバ側 - PHP】(csvdownload.php)
<?php
//DB接続情報
$dsn = 'mysql:host=localhost;dbname=testdb';
$id = 'root';
$pw = 'pass';
//画面からパラメータ取得
$val = filter_input(INPUT_POST, "busyo_cd");
if (isset($_POST["dlbtn"])) {
try {
//DB検索処理
$pdo = new PDO($dsn, $id, $pw,
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$sql = "SELECT * FROM mst_syain WHERE busyo_cd = :busyocd ";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':busyoco', $val, PDO::PARAM_STR);
$stmt->execute();
//CSV文字列生成
$csvstr = "";
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$csvstr .= $row['syain_id'] . ",";
$csvstr .= $row['syain_name'] . ",";
$csvstr .= $row['busyo_cd'] . "\r\n";
}
//CSV出力
$fileNm = "syain.csv";
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='.$fileNm);
echo mb_convert_encoding($csvstr, "SJIS", "UTF-8"); //Shift-JISに変換したい場合のみ
exit();
}catch(ErrorException $ex){
print('ErrorException:' . $ex->getMessage());
}catch(PDOException $ex){
print('PDOException:' . $ex->getMessage());
}
}
検索するテーブルはこんな感じ。
社員番号 (syain_id) |
名前 (syain_name) |
部署CD (busyo_cd) |
|
---|---|---|---|
1 | 001 | 鈴木 | 02 |
2 | 002 | 佐藤 | 01 |
3 | 003 | 田中 | 03 |
4 | 004 | 高橋 | 03 |
5 | 005 | 山本 | 01 |
(結果)
結果
(syain.csv)
002,佐藤,01
005,山本,01
パラメータに"01"を指定した場合です。