前回は登録したデータを編集し更新する機能を追加しました。
今回は、カテゴリーや支払い方法、クレジットカードやスマホ決済などの選択項目の追加機能を実装していきます。
前回の記事はこちら↓
それではいつも通りプログラムの流れを確認していきます。
【追加機能の流れ】
・送信されたデータをもとにINSERT文でデータベースに追加する
追加機能の実装
まずは選択項目を画面から追加する機能を実装します。
送信されたデータをデータベースに追加する
それでは実際にデータベースに追加するプログラムを実装していきます。
まずは「item-add.php」という名前のファイルを作成し、DB接続ファイルを読み込みます。
<?php
require_once('./dbconnect.php');
include_once('./functions.php');
echo "item-add.phpに移動しました";
ページに移ったことがわかるようにechoを記述しました。
遷移が確認できたところで追加プログラムを書いていきます。カテゴリーを追加要素にあるformタグのaction属性に ./item-add.php を指定します。
<form class="p-form p-form--cat-add" id="itemAddElement" action="./item-add.php" method="POST">
<h2 class="c-text c-text__subtitle">【カテゴリーを追加】</h2>
そしてh2タグの下にあるtype=hiddenのinput要素にどのテーブルのアイテムかを示す値を出力します。
<input type="hidden" name="editItem" value="<?php echo $editItem; ?>">
送信する側の準備は整いました。それでは受け取る側のプログラムを記述していきます。
まずは送信されてきたデータを変数に格納します。
$editItem = filter_input(INPUT_POST, 'editItem', FILTER_SANITIZE_NUMBER_INT);
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_SPECIAL_CHARS);
$table_list = ['spending_category', 'income_category', 'payment_method', 'creditcard', 'qr'];
$table_name = $table_list[$editItem];
echo $editItem . $name . $table_name;
選択項目編集から受け取るデータは、非表示inputのeditItemと入力された値です。
そして$table_list配列とeditItemの数値をもとにデータを追加するテーブルを$table_nameにセットしています。
この状態で追加ボタンを押下すると以下のようにデータが渡っていることが確認できます。
それでは受け取ったデータを使ってデータベースに追加するプログラムを記述します。
if ($table_name !== null) :
$sql = "INSERT INTO {$table_name} (name) VALUES(?)";
$stmt = $db->prepare($sql);
$stmt->bind_param('s', $name);
sql_check($stmt, $db);
header('Location: ./item-edit.php?editItem=' . ($editItem + 1));
else :
header('Location: ./item-edit.php?editItem=' . $editItem);
endif;
exit();
処理は$table_nameに値が入っているときのみ行われます。
これは前の画面の隠し要素のvalueが故意に編集されたときにエラーを起こさないようにするためです。
流れはこれまで同様、SQLを発行し実行するプログラムです。
上記を実装すると画面から項目を追加することができるようになります。
最後に
今回は選択項目の追加機能を実装しました。
次回は選択項目の更新機能を実装していく予定です。
最後までお読みいただきありがとうございました。
コメント