PHPで入力フォームからCSVにデータを書き込みする方法
カテゴリ:WEB制作
タグ:
簡易のアンケートフォームや集計に使えるPHPを使用したフォームからのCSVの書き込み方法を紹介します。DBを使う方法と比べてコードも少ないため、短時間で実装できるため手軽に実装することができます。
目次
まずはコードを紹介します。
入力用のフォーム
<form action="" method="post"> <table> <tbody> <tr> <th>商品名</th> <td><input type="text" name="name" placeholder="商品名を入力" ></td> </tr> <tr> <th>ディスプレイサイズ</th> <td><input type="text" name="display" placeholder="ディスプレイサイズを入力" ></td> </tr> <tr> <th>CPU</th> <td><input type="text" name="cpu" placeholder="CPUを入力" ></td> </tr> <tr> <th>バッテリー</th> <td><input type="text" name="bat" placeholder="バッテリーを入力" ></td> </tr> </tbody> </table> <button type="submit">CSVに書き込み</button> </form>
PHPの処理部分
<?php // POSTリクエストが送信されたかを確認 if ($_SERVER["REQUEST_METHOD"] == "POST") { // フォームから送信されたデータを取得 $productName = $_POST["name"]; $displaySize = $_POST["display"]; $cpu = $_POST["cpu"]; $battery = $_POST["bat"]; // CSVファイルへのパスを指定 $csvFilePath = 'csv/data.csv'; // ファイルが存在しない、またはファイルサイズが0の場合はヘッダーを追加 if (!file_exists($csvFilePath) || filesize($csvFilePath) == 0) { $fileHandle = fopen($csvFilePath, 'w'); // 書き込みモードでファイルを開く // ヘッダーを書き込む fputcsv($fileHandle, ["商品名", "ディスプレイサイズ", "CPU", "バッテリー"]); } else { $fileHandle = fopen($csvFilePath, 'a'); // 追記モードでファイルを開く } // ファイルを開いてデータを追加 fputcsv($fileHandle, [$productName, $displaySize, $cpu, $battery]); fclose($fileHandle); echo "データがCSVに書き込まれました。"; } ?>
コードの解説
フォームからのPOSTを確認する
以下でフォームからのPOSTリクエストを確認します。
if ($_SERVER["REQUEST_METHOD"] == "POST") { }
送信されたデータを取得
変数に送信されたデータを格納します。
$productName = $_POST["name"]; $displaySize = $_POST["display"]; $cpu = $_POST["cpu"]; $battery = $_POST["bat"];
CSVのパスを指定
CSVの保存先とファイル名を指定します。
$csvFilePath = 'csv/data.csv';
ヘッダーの書き込み
『!file_exists($csvFilePath)』でファイルがあるかどうかを確認、『filesize($csvFilePath) == 0』でファイルサイズがあるかどうかを確認して、どちらかに該当した場合は『fopen($csvFilePath, ‘w’)』でファイルを開き、『fputcsv($fileHandle, [“商品名”, “ディスプレイサイズ”, “CPU”, “バッテリー”])』でCSVファイルの1行目にヘッダーを書き込みます。
すでにファイルが存在する場合は『fopen($csvFilePath, ‘a’)』で追記モードでファイルを開きます。
// ファイルが存在しない、またはファイルサイズが0の場合はヘッダーを追加 if (!file_exists($csvFilePath) || filesize($csvFilePath) == 0) { //書き込みモードでファイルを開く $fileHandle = fopen($csvFilePath, 'w'); // ヘッダーを書き込む fputcsv($fileHandle, ["商品名", "ディスプレイサイズ", "CPU", "バッテリー"]); } else { $fileHandle = fopen($csvFilePath, 'a'); // 追記モードでファイルを開く }
ファイルを書き込み
『fputcsv()』で書き込み、『fclose()』でファイルを保存します。
fputcsv($fileHandle, [$productName, $displaySize, $cpu, $battery]); fclose($fileHandle);
まとめ
以上、「PHPで入力フォームからCSVにデータを書き込みする方法」でした。
CSVで取得しておけば他のDBに出力したり、データベースと同じように表示することも可能です。
お手軽なデータ入力として活躍してくれます。