PHPでCSVからプルダウンを生成する方法【サンプルコード付き】

php

PHPでCSVからプルダウンを生成する方法

PHPでCSVファイルのデータを読み込み、プルダウン(select)を自動生成する方法を紹介します。CSVに保存されたデータを選択肢として表示できるため、カテゴリ一覧や商品一覧、都道府県一覧などを簡単に管理できます。CSVを更新するだけでプルダウンの内容も自動で反映されるため、データベースを使わずに管理したい場合にも便利です。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

選択結果:未選択

コードをコピーして使おう!

<?php

$options = [];

if (file_exists('data.csv')) {

    if (($fp = fopen('data.csv', 'r')) !== false) {

        while (($row = fgetcsv($fp)) !== false) {

            if (!empty($row[0])) {
                $options[] = $row[0];
            }

        }

        fclose($fp);

    }

}

$selected = $_POST['category'] ?? '';

?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>CSVからプルダウン生成</title>

<style>

body{
    font-family:sans-serif;
    margin:20px;
}

.select-wrap{
    border:1px solid #e5e7eb;
    border-radius:20px;
    padding:24px;
    background:#fff;
}

label{
    display:block;
    margin-bottom:8px;
    font-weight:700;
}

select{
    width:100%;
    padding:14px 16px;
    border:1px solid #d1d5db;
    border-radius:10px;
    font-size:16px;
    box-sizing:border-box;
}

.result{
    margin-top:16px;
    padding:12px 16px;
    background:#f8fafc;
    border:1px solid #e5e7eb;
    border-radius:10px;
}

</style>

</head>
<body>

<div class="select-wrap">

    <form method="post">

        <label for="category">
            カテゴリーを選択
        </label>

        <select
            name="category"
            id="category"
            onchange="this.form.submit()">

            <option value="">
                選択してください
            </option>

            <?php foreach ($options as $option): ?>

            <option
                value="<?= htmlspecialchars($option, ENT_QUOTES, 'UTF-8') ?>"
                <?= $selected === $option ? 'selected' : '' ?>>
                <?= htmlspecialchars($option, ENT_QUOTES, 'UTF-8') ?>
            </option>

            <?php endforeach; ?>

        </select>

    </form>

    <div class="result">
        選択結果:
        <?= $selected !== '' ? htmlspecialchars($selected, ENT_QUOTES, 'UTF-8') : '未選択' ?>
    </div>

</div>

</body>
</html>

ファイル構成と設置方法

このサンプルで使用するファイル構成です。
下記のファイルを同じフォルダ(同じ階層)へ配置してください。

sample/
├─ index.php
└─ data.csv

data.csv に記載されたデータを読み込み、プルダウンメニューを自動生成します。CSVの1列目がプルダウンの選択肢として表示されます。

サーバーへ設置する場合は、index.php と data.csv を同じフォルダ(同じ階層)へアップロードしてください。

PHPはサーバー上で実行されるため、PHPファイルをダブルクリックしても動作しません。動作確認はレンタルサーバーへアップロードするか、PHPが利用できるローカル環境で行ってください。


コメント