人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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>






●質問者: moks
●カテゴリ:インターネット ウェブ制作
✍キーワード:MySQL name PHP いるか エリア
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kn1967
●100ポイント

(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を使うほうが今風でデザイン変更も楽になると思いますよ。

◎質問者からの返答

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


2 ● tobeoscontinue
●100ポイント ベストアンサー
<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"])で判定できます。

◎質問者からの返答

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


3 ● backupper
●10ポイント

チェクボックスを配列にして、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文等で扱えますし。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ