チェックボックスの複数項目を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に挿入するときのみ、科目のみがうまく入りません。(他の項目は挿入されています。)
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
$checkbox = $_REQUEST["chk"];
の前に、
print_r($_POST);
と書いて、どんな風に値が渡されているのか確認しましょう。
解決方法は見えてくると思いますよ。
No.2
- 回答日時:
解決しているのであればよいですが、見た限り
国語<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="英語">
という処理なのではないですか?
配列で持つとうまくデータを処理できなかったため、
結局、nameは一つ一つ個別で持つことにしました。
回答ありがとうございました。
※解決ステータスに変更するのを忘れておりました。失礼しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP php ログイン 1 2022/11/01 00:24
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
DBの値をチェックボックスに反映させたい
PHP
-
DB設計について
MySQL
-
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
-
4
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
5
1つのformで複数のactionを実行できますか?
JavaScript
-
6
【VB】コンボボックスにデータベースから取り出した値を入れたい
Visual Basic(VBA)
-
7
$_SESSIONに二次元配列を使えるのですか?
PHP
-
8
画面が更新されてもチェックボックスのチェック状態を維持したい
PHP
-
9
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
10
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
11
チェックボックスを使った複数選択からデータベースへの登録
PHP
-
12
チェックボックス複数選択 mysql受け渡し
PHP
-
13
<VB.NET>INSERT文でDBにデータを入れたい
Visual Basic(VBA)
-
14
ループでチェックボックスにcheckedを入れたい
PHP
-
15
Eclipseで、プロジェクト名のところに赤いバッテンのエラーマークが
Java
-
16
チェックボックスを用い、MySQLからデータを取得
PHP
-
17
JavaScript変数をPHPへ渡す
PHP
-
18
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
19
C# dataGridViewの値だけクリア
C言語・C++・C#
-
20
データベースのデータをTextBoxに入力された値で検索しDataGridViewに表示する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL文で右から1文字だけ削除す...
-
MySQLで MAX()とGROUP BYを使う...
-
【MYSQL】asでリネームしてwher...
-
sum()の出力結果順に並び替えを...
-
使うべきでない文字。
-
replaceした上でwhere
-
月別、販売員別の集計がわかり...
-
チェックボックスの項目をDBにi...
-
カウント結果を1レコードの中...
-
SQLの集計で「全て」の合計も表...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
SELECTで1件のみ取得するには?
-
Accessで別テーブルの値をフォ...
-
アクセスでレポートの1印刷内...
-
Excelで、改行がある場合の条件...
-
GROUP BYを使ったSELECT文の総...
-
SELECTの結果で同一行を複数回...
-
ADO VBA 実行時エラー3021
-
固定値を含む結合と複数テーブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL文で右から1文字だけ削除す...
-
【MYSQL】asでリネームしてwher...
-
使うべきでない文字。
-
割合(パーセント)を求めるに...
-
チェックボックスの項目をDBにi...
-
カウント結果を1レコードの中...
-
SQLの集計で「全て」の合計も表...
-
月別、販売員別の集計がわかり...
-
sum()の出力結果順に並び替えを...
-
MySQLで MAX()とGROUP BYを使う...
-
【初歩】ラジオボタンをつかっ...
-
何にかが違うから エラーなんで...
-
複数の表の条件でのDELETE文
-
replaceした上でwhere
-
LIKE述語/SQLとPHPを使った検...
-
今週の日曜日から土曜日までの...
-
重複が
-
MySQLにて特定レコードのみを抽...
-
MySQLで2つのテーブルのデータ...
-
phpmyadminはトリガーやIF文を...
おすすめ情報