WEB制作、マーケティングに関する情報をお届けします。ホームページ制作会社、テラのブログ

PHPで入力フォームからCSVにデータを書き込みする方法

タグ:

簡易のアンケートフォームや集計に使える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に出力したり、データベースと同じように表示することも可能です。
お手軽なデータ入力として活躍してくれます。

テラ合同会社(東京都)

テラは2014年に東京都でスタートアップしたホームページ制作会社です。ホームページ制作以外にも広告運用、マーケティング、ブランディング、印刷物など幅広い領域をサポートしています。
コーポレートサイトはこちらをご覧ください。