PHP CSVファイルを作成してダウンロードする:今すぐできる!

php-CSVファイルを作成してダウンロード-アイキャッチ PHP

PHPで、CSVファイルを作成してダウンロードする方法をご紹介します。

データーベース(MYSQL)の値を、「CSVダウンロード」ボタンをクリックして、ダウンロードします。

MYSQLにテーブル作成

MYSQLにデータを準備します。


 

テーブルの構造です。


 
 

コード

PHPとHTMLを作成します。

sample.php


<?php
//データベース接続
$dsn='mysql:dbname=sample;host=localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

//実行
$sql='SELECT * FROM fruit WHERE 1';
$rec = $dbh->prepare($sql);
$rec->execute();
$rec_list = $rec->fetchAll(PDO::FETCH_ASSOC);

//「CSVダウンロード」クリック時
if (isset($_POST['csvoutput'])) {

//現在の日時
$now = new DateTime();

//全データ取得
$mycsv = $dbh->prepare("SELECT * FROM fruit");
$mycsv->execute();
$rec_mycsv = $mycsv->fetchAll(PDO::FETCH_ASSOC);

// ファイル名
$csvfilename="";
$csvfilename .= 'sample-';
$csvfilename .= $now->format('Ymd');

//CSVファイル名、出力情報の設定
$fileNm = $csvfilename.".csv";
$csvstr = "";

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$fileNm);
header("Content-Transfer-Encoding: binary");

//各タイトル行
$csvstr .=mb_convert_encoding("受付ID", "SJIS", "UTF-8"). ",";
$csvstr .=mb_convert_encoding("名前", "SJIS", "UTF-8"). ",";
$csvstr .=mb_convert_encoding("規格", "SJIS", "UTF-8"). ",";
$csvstr .=mb_convert_encoding("在庫", "SJIS", "UTF-8"). ",";
$csvstr .=mb_convert_encoding("在庫状況", "SJIS", "UTF-8"). ",";
$csvstr .=mb_convert_encoding("登録日", "SJIS", "UTF-8"). ",";
$csvstr .=mb_convert_encoding("備考", "SJIS", "UTF-8"). "\r\n";

//CSV生成
foreach ($rec_mycsv as $row):

$row = mb_convert_encoding($row, "SJIS", "UTF-8");

//「規格」の列は頭0が消えないように頭にイコール付ける
//「備考」の列は改行が消えないように「str_replace」関数を使用
$csvstr .= $row['f_id'] . ",";
$csvstr .= $row['f_name'] . ",";
$csvstr .= '="'.$row['f_kikaku']. '"'. ",";
$csvstr .= $row['f_zaiko'] . ",";
$csvstr .= $row['f_status'] . ",";
$csvstr .= date('Y/m/d H:i:s', strtotime($row['f_date'])) . ",";
$csvstr .= '"' . str_replace('"', '""', $row['f_bikou']) . '"' . "\t" . "\r\n";
endforeach;

echo $csvstr;
exit();
}

//データベース切断
$dbh=null;
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>

<!--CSVダウンロード-->
<form action="sample.php" method="post">
<button name="csvoutput" onclick="proc1();" type="submit">CSV ダウンロード</button>
</form>
<br />

<table border="1" style="border-collapse: collapse">
<tr>
<th>ID</th>
<th>名前</th>
<th>規格</th>
<th>在庫</th>
<th>在庫状況</th>
<th>登録日</th>
<th>備考</th>
</tr>

<!--MySQLデータを表示-->
<?php foreach ($rec_list as $rec) { ?>
<tr>
<td><?php echo $rec['f_id'];?></td>
<td><?php echo $rec['f_name'];?></td>
<td><?php echo $rec['f_kikaku'];?></td>
<td><?php echo $rec['f_zaiko'];?></td>
<td><?php echo $rec['f_status'];?></td>
<td><?php echo $rec['f_date'];?></td>
<td><?php echo $rec['f_bikou'];?></td>
</tr>
<?php } ?>
</table>

</body>
</html>

 

結果

WEB画面の「CSVダウンロード」をクリックします。

CSVデータを出力できました。

「mb_convert_encoding」を使用することにより、文字化けを防いでいます。


 
 
この記事がお役に立ちますと幸いです。
 

PHPとMYSQLで検索機能を実装する:今すぐできる!
...

 

「1週間でPHPの基礎が学べる本」
1週間でPHPがちょっとだけ使えるようになれる!
わかりやすい!と評判の良い参考書です

広告
PHP
kirinote.com