PHPとMySQLについての質問です。

会員データーの登録システムを作成しました。
データ処理の流れは以下の通りです。
登録画面→登録内容チェック画面→登録完了画面という構成になっています。
最初の登録画面にチェックボックスが5つありますがチェック出来る項目は3つにしたいのです。
そこで登録画面にて登録ボタンを押してsubmitした時に登録内容チェック画面にてチェックした数をカウントして3つより多い場合はメッセージを出したいのですがどのように処理すれば良いのでしょうか?

例えばチェックボックスの他にnameというテキストエリアのデータも送っています。
submit後に登録内容チェック画面では
下記のように入力がされているかチェックしています。
if (strlen($name) == 0) {
$errmsg .= "氏名が入力されていません。<BR>";
}
これと同じような感じでチェックしたいと考えています。
よろしくお願いします。



登録画面のチェックボックス
<label>
<input type="checkbox" name="chk1" value="checkbox">
<FONT size="2">あ</FONT>
</label>
 
<label>
<input type="checkbox" name="chk2" value="checkbox">
<FONT size="2">い</FONT>
</label>




回答の条件
  • 1人5回まで
  • 登録:2006/11/18 17:49:08
  • 終了:2006/11/18 20:28:46

ベストアンサー

id:tobeoscontinue No.2

tobeoscontinue回答回数214ベストアンサー獲得回数542006/11/18 20:20:51

ポイント100pt
<label>
<input type="checkbox" name="chk[]" value="a">
<FONT size="2">あ</FONT>
</label>
<label>
<input type="checkbox" name="chk[]" value="i">
<FONT size="2">い</FONT>
</label>
<label>
<input type="checkbox" name="chk[]" value="u">
<FONT size="2">う</FONT>
</label>
<label>
<input type="checkbox" name="chk[]" value="e">
<FONT size="2">え</FONT>
</label>
<label>
<input type="checkbox" name="chk[]" value="o">
<FONT size="2">お</FONT>
</label>

のようにnameを配列にすることでcount($_POST["chk"])で判定できます。

id:moks

回答ありがとうございます。非常に参考になりました。

2006/11/18 20:28:24

その他の回答(2件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012006/11/18 18:07:29

ポイント100pt

(1)HTMLのほうはそのまま使う場合

$c = 0;

if(isset($_POST[chk1])) { $c++; }

if(isset($_POST[chk2])) { $c++; }

if(isset($_POST[chk3])) { $c++; }

if(isset($_POST[chk4])) { $c++; }

if(isset($_POST[chk5])) { $c++; }

if($c>3) { print "3つまでにしてください"; }

(2)HTMLのほうも少し改良する場合

<input type="checkbox" name="chk1" value="1">

<input type="checkbox" name="chk2" value="1">

などはいかが?

※いきなり書き込んでますので動作確認はしておりません。

余談ですが、FONTタグを使うのではなくてCSSを使うほうが今風でデザイン変更も楽になると思いますよ。

id:moks

ありがとうございます。試してみます。

2006/11/18 20:28:06
id:tobeoscontinue No.2

tobeoscontinue回答回数214ベストアンサー獲得回数542006/11/18 20:20:51ここでベストアンサー

ポイント100pt
<label>
<input type="checkbox" name="chk[]" value="a">
<FONT size="2">あ</FONT>
</label>
<label>
<input type="checkbox" name="chk[]" value="i">
<FONT size="2">い</FONT>
</label>
<label>
<input type="checkbox" name="chk[]" value="u">
<FONT size="2">う</FONT>
</label>
<label>
<input type="checkbox" name="chk[]" value="e">
<FONT size="2">え</FONT>
</label>
<label>
<input type="checkbox" name="chk[]" value="o">
<FONT size="2">お</FONT>
</label>

のようにnameを配列にすることでcount($_POST["chk"])で判定できます。

id:moks

回答ありがとうございます。非常に参考になりました。

2006/11/18 20:28:24
id:backupper No.3

backupper回答回数95ベストアンサー獲得回数102006/11/18 20:28:04

ポイント10pt

チェクボックスを配列にして、valueに値を入れて渡した方がグループとして扱う際には、いろいろと便利だと思いますよ。

<input type="checkbox" name="hoge[]" value="あ">あ<br />
<input type="checkbox" name="hoge[]" value="い">い<br />
<input type="checkbox" name="hoge[]" value="う">う<br />

そうすると、以下の様にチェックされた数を取得して判断する事も手間無く出来ます。

if (count($_POST['hoge']) > 3) {
  print "3つ以上チェックされている¥n";
}

要素を取得する際も配列に入っているのでfor文等で扱えますし。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません