目的
<form>で、講習の予約情報(顧客氏名、講習名、講習日時、他)をDBに登録したいと思います。 基本的には、予約の重複は避けたいので重複チェックをするのですが、まれに重複を受け付ける場合もあるため、確認ダイアログにて人の判断を反映させる仕組みが必要だと考えます。環境
HTML、JAVASCRIPT(JQUERY)、PHP、SQLSERVER
現状
regist.php
該当する講習の予約状況を調べ、定員に達していなければ仮予約ボタンを表示する。
仮予約ボタンをクリックして自身にsubmitする。
PHP→DBにて、主キーとなる項目のみinsertする(仮予約枠を確保するイメージ)。併せて本登録用のフォームを表示する。
formに入力して、本登録ボタンでajax通信を実施する(→check_booking.php)。
check_booking.php
ajax通信を受けて、同じ顧客の予約情報(講習日の前後3カ月)がDBにあるか重複の確認をする。
PHP→DBにて該当するデータ数をカウントして結果をajaxに戻す。
想定中のこと
重複がなければ予約情報を登録する
(ajaxに戻ってきたカウントが0なら、全ての予約情報を仮予約枠に対しupdateする)
重複がある(カウントが1以上)場合、confirmダイアログを表示して処理を分岐する
「OK」 → 全ての予約情報を仮予約枠に対しupdateする
「キャンセル」→ 仮予約枠をdeleteする
お聞きしたいこと
ajaxによる通信が成功したら.done()の中の処理が行われるはずで、javascriptのconfirmなどは記述できると思いますが、PHPでDBを操作する処理をどこに記述したらいいのかが分かりません。
「想定中のこと」を実現するために、以下のことをご教示願います。
1.confirmや、update・delete等の処理を記述する具体的な場所。
2.「ajax使うならこうすべき」などのアドバイス。
3.「そもそも、処理の流れをこうするべき」などのアドバイス。
よろしくお願いします。
ご意見をいただき質問内容を具体的にします。
そこは質問を編集して他者に伝わる表現に調整してもらえたらと。
ajax通信の結果、重複するデータがあれば1以上の数値が、なければ0が.done()のdataとして戻ってくる想定です。
regist.php内
html
1<form method="POST" id="regist_form"> 2 <input 以下省略… > 3 <button type="submit" name="mode" value="chkBooking" >登録</button> 4</form> 5
jalascript
1$(function() { 2 $('#regist_form').submit(function(event){ 3 //HTMLでの送信をキャンセル 4 event.preventDefault(); 5 // 送信するフォーム要素を取得 6 var regist_data = $('#regist_form').serializeArray(); 7 // POST用配列に変換する 8 var postData = {}; 9 var name = ''; 10 var val = ''; 11 for (var key in regist_data) { 12 name = regist_data[key]['name']; 13 val = regist_data[key]['value']; 14 postData[name] = val; 15 } 16 17 //Ajax通信を行う処理 18 var ajax_res = $.post({ 19 url:"./ajax_check_booking.php", 20 type:"post", 21 data:postData 22 }) 23 .done(function(data,textStatus){ 24 //通信成功時の処理 25**通信に成功したらdataの値により、0だったら仮予約枠に情報をupdateしたり、1以上だったらconfirmダイアログを出してOkならupdate、キャンセルなら予約枠のデータをdeleteしたい** 26 }) 27 .fail(function(textStatus){ 28 //通信失敗時の処理 29 alert('通信に失敗しました/' + textStatus); 30 }) 31 }); 32});
check_booking.php
PHP
1//POSTされたデータの重複を判定する 2if($_POST){ 3 //SQLを投げて重複するデータ数を返す関数 4 $dup = check($_POST); 5} 6echo $dup['count_id'];
処理の流れとしては.done()の部分でDB処理をさせたいのですが、.done()内にPHPは記述できないと思います。
どこにDB処理をさせるPHPを書くべきでしょうか?
重ねてお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/09 05:30
2019/08/09 06:08
2019/08/11 01:04
2019/08/11 01:08
2019/08/11 01:16
2019/08/11 01:18
2019/08/11 01:20
2019/08/11 01:26
2019/08/11 01:38
2019/08/11 01:44
2019/08/11 01:46
2019/08/11 01:53
2019/08/11 01:55
2019/08/11 01:59
2019/08/11 02:25
2019/08/11 02:30