PHPでCSVお気に入り機能を作る方法
PHPでCSVお気に入り機能を作る方法を紹介します。このサンプルでは、CSVファイルに登録されたデータを一覧表示し、お気に入りボタンで登録・解除できます。お気に入り状態はCSVファイルの「favorite」列に 0(未登録)または 1(登録済み)として保存されるため、ページを再読み込みしても状態が保持されます。商品管理や記事一覧、お気に入りリストを作成したい場合に利用できます。
コードについて
本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
CSVお気に入り機能
| ID | 商品名 | お気に入り |
|---|---|---|
| 1 | 商品A | |
| 2 | 商品B | |
| 3 | 商品C |
コードをコピーして使おう!
<?php
// 使用するCSVファイル名です
$csv_file = 'data.csv';
// CSVデータを格納する配列です
$rows = [];
// CSVを読み込みます
if (file_exists($csv_file)) {
$fp = fopen($csv_file, 'r');
if ($fp) {
// ヘッダー行を読み込みます
$header = fgetcsv($fp);
// データを配列へ格納します
while (($data = fgetcsv($fp)) !== false) {
$rows[] = $data;
}
fclose($fp);
}
}
// お気に入りボタンが押された場合の処理です
if (isset($_GET['favorite'])) {
$target = (int)$_GET['favorite'];
foreach ($rows as $index => $row) {
if ((int)$row[0] === $target) {
// 0⇔1を切り替えます
$rows[$index][2] = ($row[2] == '1') ? '0' : '1';
break;
}
}
// CSVへ保存します
$fp = fopen($csv_file, 'w');
fputcsv($fp, $header);
foreach ($rows as $row) {
fputcsv($fp, $row);
}
fclose($fp);
// 二重送信防止
header('Location: index.php');
exit;
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>CSVお気に入り機能</title>
<style>
body{
font-family:sans-serif;
background:#f8fafc;
margin:40px;
}
.php-csv-favorite_wrap{
max-width:800px;
margin:0 auto;
padding:24px;
border:1px solid #e5e7eb;
border-radius:18px;
background:#ffffff;
}
.php-csv-favorite_title{
font-size:22px;
font-weight:bold;
margin-bottom:20px;
}
.php-csv-favorite_table{
width:100%;
border-collapse:collapse;
}
.php-csv-favorite_table th,
.php-csv-favorite_table td{
border:1px solid #d1d5db;
padding:10px;
text-align:left;
}
.php-csv-favorite_table th{
background:#f1f5f9;
}
.php-csv-favorite_button{
display:inline-block;
padding:8px 16px;
border-radius:6px;
background:#0b6bff;
color:#ffffff;
text-decoration:none;
font-weight:bold;
}
.php-csv-favorite_button.active{
background:#e11d48;
}
</style>
</head>
<body>
<div class="php-csv-favorite_wrap">
<div class="php-csv-favorite_title">
CSVお気に入り機能
</div>
<table class="php-csv-favorite_table">
<tr>
<th>ID</th>
<th>商品名</th>
<th>お気に入り</th>
</tr>
<?php foreach ($rows as $row): ?>
<tr>
<td><?= htmlspecialchars($row[0], ENT_QUOTES, 'UTF-8') ?></td>
<td><?= htmlspecialchars($row[1], ENT_QUOTES, 'UTF-8') ?></td>
<td>
<a
href="?favorite=<?= $row[0] ?>"
class="php-csv-favorite_button <?= ($row[2] == '1') ? 'active' : '' ?>"
>
<?= ($row[2] == '1') ? '★ 登録済み' : '☆ 登録' ?>
</a>
</td>
</tr>
<?php endforeach; ?>
</table>
</div>
</body>
</html>
ファイル構成と設置方法
このサンプルでは、index.php と data.csv を同じフォルダに配置して使用します。CSVファイルの favorite 列には、お気に入り状態を 0(未登録)または 1(登録済み)で保存します。お気に入りボタンをクリックするたびに、この値が切り替わりCSVファイルへ保存されます。
sample/
├── index.php
└── data.csv
index.php と data.csv をサーバーへアップロードし、ブラウザから index.php にアクセスしてください。「☆ 登録」「★ 登録済み」をクリックすると、お気に入り状態が切り替わり、favorite 列の値が 0 と 1 の間で更新されます。
コメント