PHPでCSV検索フォームを作る方法
PHPでCSVファイルを読み込み、入力したキーワードに一致するデータだけを一覧表示する検索フォームの作り方を紹介します。データベースを使わずに、CSVだけで簡単な検索機能を作りたい場合に使えるサンプルコードです。
コードについて
本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
| ID | 名前 | カテゴリー | メールアドレス |
|---|---|---|---|
| 1 | 山田 太郎 | 営業 | taro@example.com |
| 2 | 佐藤 花子 | 企画 | hanako@example.com |
| 3 | 鈴木 一郎 | 開発 | ichiro@example.com |
| 4 | 田中 美咲 | デザイン | misaki@example.com |
該当データがありません。
コードをコピーして使おう!
<style>
body{
font-family:sans-serif;
margin:20px;
}
.search-form{
display:flex;
gap:12px;
margin-bottom:24px;
}
.search-input{
flex:1;
padding:14px 16px;
border:1px solid #d1d5db;
border-radius:10px;
font-size:16px;
}
.search-btn{
border:none;
background:#ff6a00;
color:#fff;
font-weight:700;
padding:0 24px;
border-radius:10px;
cursor:pointer;
}
.table-wrap{
border:1px solid #e5e7eb;
border-radius:20px;
overflow:hidden;
}
table{
width:100%;
border-collapse:collapse;
}
th{
background:#f7f2e5;
}
th,
td{
padding:20px;
text-align:left;
border-bottom:1px solid #e5e7eb;
}
</style>
<?php
$keyword = $_GET['keyword'] ?? '';
$rows = [];
if (($fp = fopen('data.csv', 'r')) !== false) {
while (($data = fgetcsv($fp)) !== false) {
if (
$keyword === '' ||
stripos(implode(' ', $data), $keyword) !== false
) {
$rows[] = $data;
}
}
fclose($fp);
}
?>
<form method="get" class="search-form">
<input
type="text"
name="keyword"
class="search-input"
value="<?= htmlspecialchars($keyword, ENT_QUOTES, 'UTF-8') ?>"
placeholder="キーワードを入力">
<button type="submit" class="search-btn">
検索
</button>
</form>
<div class="table-wrap">
<table>
<tr>
<th>ID</th>
<th>名前</th>
<th>カテゴリー</th>
<th>メールアドレス</th>
</tr>
<?php foreach ($rows as $row): ?>
<tr>
<td><?= htmlspecialchars($row[0]) ?></td>
<td><?= htmlspecialchars($row[1]) ?></td>
<td><?= htmlspecialchars($row[2]) ?></td>
<td><?= htmlspecialchars($row[3]) ?></td>
</tr>
<?php endforeach; ?>
</table>
</div>
ファイル構成と設置方法
このサンプルで使用するファイル構成です。
下記のファイルを同じフォルダ(同じ階層)へ配置してください。
sample/
├─ index.php
└─ data.csv
index.php が検索フォーム本体です。
data.csv に検索対象のデータを保存します。
サーバーへ設置する場合は、上記ファイルを同じフォルダ(同じ階層)へアップロードしてください。別フォルダへ配置する場合は、コード内のファイルパスを変更する必要があります。
PHPはサーバー上で実行されるため、PHPファイルをダブルクリックしても動作しません。動作確認はレンタルサーバーへアップロードするか、PHPが利用できるローカル環境で行ってください。
コメント