■前提 ・登録フォームブロック(ソース設定)を使用 ・【入力画面】→【確認画面】→【完了画面】の3ステップで構成 ■質問 予め、登録フォームブロックに進む前に予約枠というものを選択しており、1つの予約枠に対して、1件のみ予約を登録できるようにしたいと考えております。しかし、タイミングによってはダブルブッキングが発生してしまうため、【確認画面】→【完了画面】の間に"該当の予約枠に予約が登録されていないか"をチェックするためのAPIを作動させ、結果に応じてDBへの登録処理を中止、もしくは、エラー画面に遷移といった処理を実装したいと検討しております。本来、登録フォームブロックの【確認画面】→【完了画面】で実施されるDBへの登録処理は実態が見えないものと捉えております。ブロックに搭載されている処理を開発側から制御できるのかお教えいただけますと幸いです。
コメント
ご回答いただきありがとうございます。 1点、訂正がございます。 質問内容にて、「1つの予約枠に対して、1件のみ予約を登録」と申し上げましたが、別ルートから2件以上の予約を登録するケースがあることが発覚いたしました。そのため、ご提案いただいた「DBフィールド上の重複不可」は実装できないことが判明いたしました。せっかくのご提案を活かすことができず、申し訳ございません。 >上記のように管理画面にてブロックで受ける項目を必須に設定したりと変更可能です。 >もし具体的に制御したい内容等ございましたらご相談ください。 上記につきまして、詳しくご説明いただけますと幸いです。 イメージですが、【確認画面】→【完了画面】の間にAPI(レコード取得)で重複チェックを実施し、その結果に応じてレコード登録の有無を制御したいと考えております。
複数予約枠がある場合は、登録用のDBとは別に残席を管理するDBを作成し トリガの設定で残席数を管理することで複数予約を登録するケースにも対応可能です。 あらかじめ残席数を登録しておき、予約がある場合に残席数を-1することで 複数の予約枠に対し残席数分予約をすることが可能となります。 条件は異なりますが、残席管理という点では同じになりますので、 ウェビナー管理アプリのDBやトリガ部分をご参照いただけますと幸いです。 ▼ウェビナー管理アプリ アプリ(DB・メール)設計・構築>【ウェビナー申込時】残席数の減算 トリガ https://knowledge.spirers.jp/article/design/detail/3374#:~:text=%E2%97%8F%E3%80%90%E3%82%A6%E3%82%A7%E3%83%93%E3%83%8A%E3%83%BC%E7%94%B3%E8%BE%BC%E6%99%82%E3%80%91%E6%AE%8B%E5%B8%AD%E6%95%B0%E3%81%AE%E6%B8%9B%E7%AE%97%E3%80%80%E3%83%88%E3%83%AA%E3%82%AC ※残席数が0で予約不可にするため、トリガの条件で残席数が1以上の場合 残席数を-1、それ以外はエラー終了等の処理の設定する必要がございます。
様々なアドバイスをいただきましたところ恐れ入りますが、再度、冒頭の質問内容をもとにお伺いいたします。 ■前提 ・登録フォームブロック(ソース設定)を使用 ・【入力画面】→【確認画面】→【完了画面】の3ステップで構成 ■質問 通常、【確認画面】の登録ボタンを押下するとDBへの登録が行なわれますが、この登録ボタンを押下したタイミングでAPI(PHP)を実行し、その結果に応じてDBへの登録を実行または中止させることは可能でしょうか?登録フォームブロックでは、登録処理のソースが開発側からは見られないという認識です。登録フォームブロックを使用するうえで、開発側からDBへの登録を実行または中止にさせる制御が可能かどうか、ご回答のほどよろしくお願いいたします。また、可能な場合は、実装方法をお教えいただけますと幸いです。
誤解を招く回答をしてしまい、申し訳ございません。 ダミーボタンはあくまでただのボタンであるため、DBへの登録は実施されません。 DBへの登録が実施されるのは、APIの処理で登録の判断となった場合のみの想定です。 前回の回答で、処理の説明を省略してお伝えしてしまったため、 改めて、ダミーボタンを押した際の処理についてご案内いたします。 ダミーボタンはフォームの送信ボタンとは別に設置いただくボタンで、 ボタンをクリックした際に、JSを動作させて非同期処理を行います。 非同期処理ではダブルブッキングのチェックを行います。 このチェックの結果により、以下の通り処理を分けて実装ください。 ・登録の場合:JSでフォームの送信ボタンを押す処理 ・中止の場合:エラーメッセージを表示する処理
ナレッジ
向上チーム
1つの予約枠に対して、1件のみ予約を登録する処理は標準機能内で実現可能です。 予約枠選択時に予約枠番号などの重複しないIDをパラメーターで引き継いでいただき、 その項目をDBフィールド上で重複不可に設定することで実現可能です。 この方法であれば、もしダブルブッキングが発生した場合、 最初の1件は登録、次の1件は重複不可でエラー処理することができます。 >ブロックに搭載されている処理を開発側から制御できるのか 上記のように管理画面にてブロックで受ける項目を必須に設定したりと変更可能です。 もし具体的に制御したい内容等ございましたらご相談ください。