dポイントプレゼントキャンペーン実施中!

チェックボックスの複数項目をDBにインサートしたいのですが、DBのフィールドを見ると、チェックボックスの値だけ空になってしまいます。
プログラミング初心者のため、基本的なところでつまずいている可能性も高いのですが、正しいコードがわかる方がいらっしゃいましたらご教授ください。

よろしくお願いします。


■DBの構造

以下のようなフィールド構造にしており、一人につき1行でデータを持ちたいと思っています。
フィールド   name/ mail/comment/kokugo/sugaku/rika/syakai/eigo/・・・

● 実際のデータの持ち方(以下のようにしたいです。)
例 太郎/ taro@/hello/ 国語/数学/ / /  
次郎/ jiro@/ nice/ / 数学/ /社会/ 英語

※太郎は、国語と数学をチェックボックスで選択
※次郎は、数学と社会と英語をチェックボックスで選択



■チェックボックス画面html(一部抜粋)

----


<form action="regist.php" method="post">
名前:<br />
<input type="text" name="name" size="30" value="" /><br />
メールアドレス:<br />
<input type="text" name="mail" size="30" value="" /><br />
コメント:<br />
<textarea name="comment" cols="30" rows="5"></textarea><br />


科目<br />
<form name="kamoku" method="post" action="regist.php">
国語<input type="checkbox" name="kokugo" value="国語">
数学<input type="checkbox" name="sugaku" value="数学">
理科<input type="checkbox" name="rika" value="理科">
社会<input type="checkbox" name="syakai" value="社会">
英語<input type="checkbox" name="eigo" value="英語">
<br />
-----


■phpのファイル(regist.php)
※該当部分だけ記述させていただきます。
----


<?php

// $checkboxの中身は配列
$checkbox = $_REQUEST["chk"];

?>


<html>
<head>

<title>DB登録練習</title>

</head>
<body>

// 選んだ科目を画面に表示させる

<tr>
<td>科目</td><td><?php
for($i=0; $i<sizeof($checkbox); $i++){
print "${checkbox[$i]}<br>";
}
?></td>
</tr>


// DB登録部分

<?php

$name = $_REQUEST['name'];
$mail = $_REQUEST['mail'];
$comment = $_REQUEST['comment'];

$kokugo = $_REQUEST['kokugo'];
$sugaku = $_REQUEST['sugaku'];
$rika = $_REQUEST['rika'];
$syakai = $_REQUEST['syakai'];
$eigo = $_REQUEST['eigo'];


$del_flag = $_REQUEST['del_flag'];
$reg_date = $_REQUEST['reg_date'];

$result = mysql_query("INSERT INTO DBpractice(name, mail, comment, kokugo,sugaku,rika, syakai, eigo,del_flag,reg_date) VALUES('$name', '$mail', '$comment','$kokugo','$sugaku','$rika','$syakai','$eigo','0', now())", $conn);
if (!$result) {
exit('データを登録できませんでした。');
}

----

チェックボックスで選択した複数科目をブラウザ上で表示させるところは上手くできるのですが、DBに挿入するときのみ、科目のみがうまく入りません。(他の項目は挿入されています。)

よろしくお願いします。

A 回答 (2件)

$checkbox = $_REQUEST["chk"];


の前に、

print_r($_POST);

と書いて、どんな風に値が渡されているのか確認しましょう。
解決方法は見えてくると思いますよ。
    • good
    • 0
この回答へのお礼

おっしゃるとおり、手を動かしてみたら何とか解決できました。
ありがとうございました。

お礼日時:2012/02/05 02:18

解決しているのであればよいですが、見た限り



国語<input type="checkbox" name="chk[]" value="国語">
数学<input type="checkbox" name="chk[]" value="数学">
理科<input type="checkbox" name="chk[]" value="理科">
社会<input type="checkbox" name="chk[]" value="社会">
英語<input type="checkbox" name="chk[]" value="英語">

という処理なのではないですか?
    • good
    • 0
この回答へのお礼

配列で持つとうまくデータを処理できなかったため、
結局、nameは一つ一つ個別で持つことにしました。

回答ありがとうございました。

※解決ステータスに変更するのを忘れておりました。失礼しました。

お礼日時:2012/02/06 12:38

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A