PHPでCSVの日付検索をする方法【サンプルコード付き】

php

PHPでCSVの日付検索をする方法【サンプルコード付き】

PHPでCSVファイルの日付検索をする方法を紹介します。開始日と終了日を指定してCSVデータを絞り込み表示できるサンプルです。売上データ、予約データ、アクセスログなど、特定期間のデータだけを抽出したい場合に利用できます。

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

デモ

CSVデータ件数:10
日付 氏名 金額
2026-06-01山田 太郎12,000円
2026-06-02佐藤 花子8,500円
2026-06-03鈴木 一郎15,200円
2026-06-04田中 美咲9,800円
2026-06-05高橋 健21,000円
2026-06-06伊藤 誠7,300円
2026-06-07吉田 直樹11,500円
2026-06-08中村 翔13,400円
2026-06-09小林 彩10,600円
2026-06-10松本 翼18,900円

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

PHPファイルとCSVファイルを同じフォルダへ配置してください。
開始日と終了日を指定して、指定期間のCSVデータを検索できます。

<?php

$rows = [];

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

    while (($row = fgetcsv($fp)) !== false) {
        $rows[] = $row;
    }

    fclose($fp);
}

$start_date = $_GET['start_date'] ?? '';
$end_date   = $_GET['end_date'] ?? '';

$result_rows = [];

foreach ($rows as $row) {

    $date = $row[0];

    if (
        ($start_date === '' || $date >= $start_date) &&
        ($end_date === '' || $date <= $end_date)
    ) {
        $result_rows[] = $row;
    }

}

?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>CSV日付検索</title>

<style>

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

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

.date-form{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  align-items:end;
  margin-bottom:20px;
}

.field{
  display:flex;
  flex-direction:column;
  gap:6px;
}

label{
  font-weight:700;
}

input[type="date"]{
  padding:10px 12px;
  border:1px solid #d1d5db;
  border-radius:10px;
}

button{
  padding:11px 18px;
  border:none;
  border-radius:10px;
  background:#0b6bff;
  color:#fff;
  cursor:pointer;
}

.count-box{
  margin-bottom:20px;
  padding:18px;
  border:1px solid #e5e7eb;
  border-radius:14px;
  background:#f8fafc;
  font-size:20px;
  font-weight:700;
}

table{
  width:100%;
  border-collapse:collapse;
}

th,
td{
  border:1px solid #e5e7eb;
  padding:12px;
  text-align:left;
}

th{
  background:#f8fafc;
}

</style>

</head>
<body>

<div class="search-wrap">

  <form method="get" class="date-form">

    <div class="field">
      <label>開始日</label>
      <input
        type="date"
        name="start_date"
        value="<?= htmlspecialchars($start_date,ENT_QUOTES,'UTF-8') ?>">
    </div>

    <div class="field">
      <label>終了日</label>
      <input
        type="date"
        name="end_date"
        value="<?= htmlspecialchars($end_date,ENT_QUOTES,'UTF-8') ?>">
    </div>

    <button type="submit">
      検索
    </button>

  </form>

  <div class="count-box">
    CSVデータ件数:<?= count($result_rows) ?>件
  </div>

  <table>

    <tr>
      <th>日付</th>
      <th>氏名</th>
      <th>金額</th>
    </tr>

    <?php foreach($result_rows as $row): ?>

    <tr>
      <td><?= htmlspecialchars($row[0],ENT_QUOTES,'UTF-8') ?></td>
      <td><?= htmlspecialchars($row[1],ENT_QUOTES,'UTF-8') ?></td>
      <td><?= htmlspecialchars($row[2],ENT_QUOTES,'UTF-8') ?></td>
    </tr>

    <?php endforeach; ?>

  </table>

</div>

</body>
</html>

ファイル構成と設置方法

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

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

data.csvに検索対象の日付データを保存します。
index.phpへアクセスすると、開始日と終了日を指定してCSVデータを検索できます。

サーバーへ設置する場合は、上記ファイルを同じフォルダ(同じ階層)へアップロードしてください。別フォルダへ配置する場合は、コード内のCSVファイルパスを変更してください。

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


コメント