本業がインフラの為、初心者な質問だったら申し訳ありません。
前提・実現したいこと
現在サーバーをセットアップするにあたってのチェックシートをnginx+PHPで作りたいと思っています。
今回DBを用意していない為、現在のチェックボックスのデータをstatus.csvとして出力し
それを更新の度に読み込み直せばチェックシートの進行を管理できるのでは?という想定でコードを書いてみました。
発生している問題・エラーメッセージ
問題が3つ発生しています。
-
現在のチェックボックスの状態をstatus.csvに吐き出す事は出来ているようなのですが、それを読み込む関数が調べても分かりませんでした。
-
状態が吐き出されたstatus.csvを確認してみるとon, on, の様な、チェックが入っている数はわかるものの、どこにチェックが入ったか、このcsvからだと読み取れない(と思われる)。
-
status.csvがスタート時点だと空ファイルの為、以下のエラーが出てしまいます。
Warning: Undefined array key "status" in /var/www/html/test.php on line 26
Warning: foreach() argument must be of type array|object, null given in /var/www/html/test.php on line 26
該当のソースコード
test.php
PHP
1<!DOCTYPE html>
2<html lang="ja">
3
4<head>
5<meta charset="utf-8">
6<title>チェックシート</title>
7</head>
8
9<body>
10<h1>サーバーセットアップマニュアルチェックシート</h1>
11
12<form action="test.php" method="get">
13<h2>物理作業</h2>
14// ←この辺にstatus.csvを読み込む記述が必要?
15<div class="boxes">
16 <input type="checkbox" id="1-1-1" name="status[]"><label for="1-1-1">箱から出す</label><br>
17 <input type="checkbox" id="1-1-2" name="status[]"><label for="1-1-2">ホスト名のテプラを貼り付け</label><br>
18 <input type="checkbox" id="1-1-3" name="status[]"><label for="1-1-3">シリアルナンバーを控える</label><br>
19 <input type="checkbox" id="1-1-4" name="status[]"><label for="1-1-4">Ether Portのテプラを貼り付け</label><br>
20 <input type="checkbox" id="1-1-5" name="status[]"><label for="1-1-5">サーバーセットアップ一覧の更新</label><br>
21</div>
22
23<div align="center">
24<?php
25 $myfile = fopen("status.csv", "w") or die("Unable to open file!");
26 foreach($_GET["status"] as $value){ // ←この辺の処理を工夫しないといけない?
27 $content = "{$value}, ";
28 fwrite($myfile, $content);
29 }
30 fwrite($myfile, "\n");
31 fclose($myfile);
32
33 print '<form action="test.php">';
34 print '<input type="submit" value="更新">';
35 print '</form>';
36?>
37</div>
38</form>
39</body>
40</hmtl>
試したこと
$contentとstatus.csvに書かれているものは同じものでした。(echoで確認しました。)
PHPを書いたのも初めてなもので、恐らく色々わかっていない気がします・・・
補足情報(FW/ツールのバージョンなど)
Docker version:20.10.8, build 3967b7d
nginx image:nginx:stable-alpine
php image:php:fpm