プロが教える店舗&オフィスのセキュリティ対策術

申し込みフォームで人数制限を行いたいのですが、どの様な方法がありますか?

現在メールフォームを改造して、PHPを使って申し込みフォームを作っているのですが、人数制限をかける方法が分かりません。

例えば申し込みフォームで10人予約したら、カウントの初期値が100で 100-10=90
みたいになり、カウントが0未満になる予約がきたらPHP側で申し込みできませんって表示をしたいのです。

上記の方法や、それ以外の方法で人数制限のかけかたがありましたら教えてください。

A 回答 (4件)

こういうことを1件ではなくてn件やりたいならDB使うけど


1件や2件だけならDBなんて使うのは無駄。
単純にファイル処理だけで十分。
    • good
    • 0

>この場合ですとMaxの人数をテーブルで作りそれで引いてく感じでしょうか?



データベースをどう作るかは人それぞれなんですが…。

私だったら、

商品データベース
|商品管理番号|日付|内容|最大人数|

申込データベース
|申込管理番号|申込商品番号|申込日|申込時刻|申込人数|

最低限この2つは作り、前者データベースで商品の管理をする、後者データベースにフォームからの申し込みを記録していく、みたいにやる感じでしょうか。

「あと○人」は、商品データベースの最大人数から、申し込みデータベースのその商品に対する申込人数を合計した物を引き、表示します。
もしその数値がマイナスになるならば、それは申し込みをオーバーしたということですが。
先に申し込んだ人がキャンセルすることもありますよね?

それならば、最大人数に達したからと言って申込不可になるのではなく、「キャンセル待ち」として受け付けておくのが、良いように思います。

----

まあ、キャンセル待ちとかも考えないならば、

残数データベース
|管理番号|残り人数|

というデータベースで、直接数値操作するように作っちゃってもいいですけど…。
    • good
    • 0

HTMLで書いてあるPHPとは別に、データベースが必要になります。



PHPからは、そのデータベースを参照して、「あと○人」だとか、実際に申し込みが行われれば、申込人数をカウントしていったりします。

考え方としては、最大予約人数のデータと、申し込み人数のデータを別に持ち、「最大予約人数 - これまでの申込人数合計」を計算して、「あと○人」等のように表示した方がいいでしょう。

「あと○人」というデータを用意して、直接減じていく方法はお勧めしません。
Webフォームは何人からもアクセスされるものですので、ほぼ同時に減じようとしてしまったり、予約がいっぱいになったときにどっちが先か後かとか、後にキャンセルがあったとか、キャンセル待ちの処理などがかえって複雑になってしまいます。

以下のページなどを参照し、簡単なデータベースを構築、それを、参照・更新していくように、作ります。

>データベースとSQL - PHP入門
http://ponk.jp/php/basic/database

----

原始的な方法としては、人数を記録する別ファイルを1つ用意して、それを書き換えていくなんていう方法もありますが…。
単純なファイル書き換えは同時アクセスに弱く、よほど気をつけて作らないと、すぐにファイルが壊れます。

データベースとSQL文の操作により、データベースの更新をするのはDBシステム一つということになるので、同時アクセスがあっても壊れません。
ほぼ同時のアクセスがあったとしても、それは順番に処理されていくこととなり、データは保全されるというわけです。

この回答への補足

リンクしてあるサイトを見たのですが、この場合ですとMaxの人数をテーブルで作りそれで引いてく感じでしょうか?

補足日時:2013/08/02 21:28
    • good
    • 0

データベースはお使いでしょうか?


MySQLなど、オープンソースの手ごろなDBを使って人数管理してみてはどうでしょう?
    • good
    • 0
この回答へのお礼

データベースは使ってないので使ってみようと思います

お礼日時:2013/08/02 21:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!