まずはJSONファイルに予定書き込み、専用フォルダへ保存
これまでlocalStorageへデータを保存してきましたが、何かの拍子にブラウザのストレージが空になることって結構あります。
いつブラウザに不具合が発生するか心配するのでは実用になりません。
そこでサーバー側にデータを保存します。これならブラウザに何かあっても予定は残り、またほかのブラウザでアクセスしても同じ予定を共有できます。
仕様は、JavaScriptで予定をJSONファイルに整形しそのデータをPHPへ送信、その後PHP側でファイルやデータベースに保存します。
データの保存ファイル名ですが、今回は自分専用のリマインダーなので、個人のアカウントを保存用のファイル名に設定しています。
最初に起動した時、カレンダー用のIDを求めるモーダルウインドウが開きます。
そこへ入力する任意のアカウント|IDがその人専用のファイル名ということになります。
まあ、アカウントとパスワードを兼ねた仕様になります。
初めてであれば新たにファイルを作成し、すでに作って有ればそのファイルを読み込む仕様です。
//JavaScriptから送信
fetch("save.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
date: "2025-09-01",
title: "歯医者",
memo: "15時に予約"
})
});
//PHP側(save.php)
<?php
$data = json_decode(file_get_contents("php://input"), true);
// 簡単にファイル保存する例
$file = 'schedule.json';
$current = file_exists($file) ? json_decode(file_get_contents($file), true) : [];
$current[] = $data;
file_put_contents($file, json_encode($current, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
?>
これで、予定を書き込むたびに schedule.json に追記され、ページをリロードしてもデータが残ります。
今回は自分専用なのでファイル保存でも十分。
後で本格的に配布やらグループで共有などするならSQLiteやMySQLに移行すると管理しやすいです。
ただし今回はエレクトロン用なので、データベースは別の機会で解説します。
PHPを使ってサーバーへ保存:https://labo.studio-happyvalley.com/calendar_1st/complete/