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が利用できるローカル環境で行ってください。
コメント