みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

チェックボックスの値をデータベースに登録

お世話になります。
現在PHP+MySQLで会員登録するためのフォームを
作っているのですが、携帯用フォームからデータを
データベースに登録する際にチェックボックスが
あるのですが、チェックした値を一つしか登録する
事が出来ず悩んでおります。以下にソースを
記載させて頂きます。
初心者に近いもので、何卒よろしくお願い致します。

HTML側
<form action="test.php" method="post">
性別<br />
<select name="sex">
<option value="男性" selected>男性</option>
<option value="女性">女性</option>
</select>
<br />
年代<br />
<select name="etc1">
<option value="10代" selected>10代</option>
<option value="20代">20代</option>
<option value="30代">30代</option>
<option value="40代">40代</option>
<option value="50代">50代</option>
<option value="60代">60代</option>
<option value="70代以上">70代以上</option>
</select>
<br />
誕生月<br />
<select name="birthday">
<option value="1月" selected>1月</option>
<option value="2月">2月</option>
<option value="3月">3月</option>
<option value="4月">4月</option>
<option value="5月">5月</option>
<option value="6月">6月</option>
<option value="7月">7月</option>
<option value="8月">8月</option>
<option value="9月">9月</option>
<option value="10月">10月</option>
<option value="11月">11月</option>
<option value="12月">12月</option>
</select>
<br />


メルマガをご希望の店舗を選択してください(複数可)<br />
<input type="checkbox" name="etc2[]" value="店舗1">
店舗1<br />
<input type="checkbox" name="etc2[]" value="店舗2">
店舗2<br />
<input type="checkbox" name="etc2[]" value="店舗3">
店舗3
<input type="hidden" name="mail" value="<? echo $_GET['no'] ?>"><br />
<input type="submit" name="sub" value="送信"><br />
</form>

php側
<?

require("../ini/dbconnect.ini");
require("../ini/common.ini");

$db = dbConnect();//データベース接続

$mail = $_POST['mail'];

mysql_query("set character set sjis");

$nsql = "SELECT * FROM users WHERE no = '$mail'";
$nresult = mysql_query($nsql);// selectを実行
$nrows = mysql_num_rows($nresult);// 行数を取得
if($nresult == false) {
}elseif($nrows == 0){
}else{
while ($comm = mysql_fetch_array($nresult)) {
$add = $comm[keimail ];
}

$isql = "UPDATE users SET ";
$isql .= "sex = '".mb_convert_encoding($_POST['sex'],'euc-jp','auto')."'";
$isql .= ",birthday = '".mb_convert_encoding($_POST['birthday'],'euc-jp','auto')."'";
$isql .= ",etc1 = '".mb_convert_encoding($_POST['etc1'],'euc-jp','auto')."'";
$isql .= ",etc2 = '".mb_convert_encoding($_POST['etc2'],'euc-jp','auto')."'";
$isql .= " WHERE no = '$mail'";
$iresult = mysql_query($isql);// selectを実行
以下略

よろしくお願い致します。

投稿日時 - 2009-06-16 19:24:21

QNo.5049475

すぐに回答ほしいです

質問者が選んだベストアンサー

チェックボックスで

<input type="checkbox" name="etc2[]" value="店舗1">

と記述していますが、name属性の値に "etc2[]" のように後ろに "[]" を付けると、PHP側ではこのリクエストパラメータを配列として扱うことができるようになります。
つまり、PHP側では "$_POST['etc2']" が配列型のデータとなります。

貼り付けされたPHPのソースコードのみではDBのスキーマが分かりませんが、"$_POST['etc2']" は配列型のデータなのでfor文かforeach文を使用して配列に格納されているデータ分だけ処理を書く必要があります。

参考URL:http://plog.pya.jp/program/php/lesson08/sample04.html

投稿日時 - 2009-06-16 19:49:42

お礼

有難うございました。
お陰さまで、何とか最後まで出来ました。

投稿日時 - 2009-07-01 19:57:24

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問