※ ChatGPTを利用し、要約された質問です(原文:チェックボックスの項目をDBにinsertしたい)
チェックボックスの複数項目をDBにinsertしたい
このQ&Aのポイント
チェックボックスの複数項目をDBにインサートする方法がわからない。
プログラミング初心者ですので、コードが正しいかどうかわかりません。
チェックボックスで選択した科目がうまくDBに挿入されていません。
チェックボックスの複数項目を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に挿入するときのみ、科目のみがうまく入りません。(他の項目は挿入されています。)
よろしくお願いします。
お礼
おっしゃるとおり、手を動かしてみたら何とか解決できました。 ありがとうございました。