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

解決済みの質問

チェックボックス 複数選択 MYSQL

PHP習い始めたのですがどうしても分からない問題がありましたので
質問をさせて頂きました。
現在チェックボックスで複数選択された情報をMYSQLに反映させようとしているのですがどうしても複数選択された項目の内、一つしかMYSQLに反映されません。
こちらがスクリプトの一部になります。
<span class="checkbox"><input name="check[]" type="checkbox" value="aaa" />aaa</span>

<span class="checkbox"><input name="check[]" type="checkbox" value="bbb" />bbb</span>

<span class="checkbox"><input name="check[]" type="checkbox" value="ccc" />ccc</span><br />
//MYSQL
$sql = "insert into table values('$check[]')";

配列を使うとまでは調べて分かったのですが、そこからがどうしても
分かりません。どなたご存知になるかたがおりましたら
是非お伺い出来ませんでしょうか。宜しくお願い致します。

投稿日時 - 2007-05-13 12:42:33

QNo.2996152

すぐに回答ほしいです

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

> check1ですがこちらがテキストになっております。

char型かvarchar型、ということですか?
例えば、チェックボックスの"aaa"と"ccc"にチェックを入れたとき、
カラムcheck1にどういった内容が入れば正しいのですか?

また、チェックボックスに入れた内容をデータベースに入れるとき、
通常はこんな方法を使うと思うのです。それは、以下のとおりです。
・htmlのformを定義して、その中に(複数の)チェックボックスを設ける
・formには送信用のボタン定義を含む
・formのactionの設定で、入力結果を受け取る側のプログラムファイルを指定しておく
・入力結果を受け取った側では、内容に応じたSQL文を生成する

このあたりは、どのようなプログラムを書かれていますか?
最初の投稿でスクリプトの一部だけ見せてくださいましたが、
この際全部見せてくださった方が、何をなさろうとしているか
伝わりやすいだろうと思うのです。

投稿日時 - 2007-05-13 15:57:57

補足

asuncion様
詳しいご説明ありがとうございます。
こちらがそのスクリプトの全容になります。


<html>
</head>

<body>
<form action="" method="GET" name="salon">
<table class="font12" border="1" cellpadding="5" cellspacing="0" width="500" bordercolor="#333333">
<tr>
><input name="sname" type="text" id="sname" size="30" /></td>
</tr>
<tr>
<td>施術1(チェックボックス)<br />順番不問</td>
<td>
<span class="checkbox"><input name="check1[]" type="checkbox" value="aaa" />aaa</span>
<span class="checkbox"><input name="check1[]" type="checkbox" value="ccc" />bbb</span>
<span class="checkbox"><input name="check1[]" type="checkbox" value="ddd" />ddd</span><br />
<span class="checkbox"><input name="check1[]" type="checkbox" value="eee" />eee</span>
<span class="checkbox"><input name="check1[]" type="checkbox" value="fff" />fff</span><br />
<span class="checkbox"><input name="check1[]" type="checkbox" value="ggg" />ggg</span>
<span class="checkbox"><input name="check1[]" type="checkbox" value="hhh" />hhh</span><br />
<span class="checkbox"><input name="check1[]" type="checkbox" value="iii" />iii</span>
<span class="checkbox"><input name="check1[]" type="checkbox" value="kkk" />kkk</span>
</td>
</tr>

<tr>
<td colspan="2" align="right"><input type="submit" value="登録"></td>
</tr>
</table>
</form>


<?php

extract($_POST);
//MySQLサーバに接続
if (!$int_connect = @mysql_connect('localhost','aaa','aaa')) {
die("can't connect mysql server.");
}
//データベースに接続
if (!@mysql_select_db("ccc", $int_connect)) {
die("can't use selected database.");
}

$array = $_GET[check1];
$today = date("y-m-d");

$sql = "insert into table values(0, '$today','$array')";

mysql_query($sql);

?>


</body>

</html>

投稿日時 - 2007-05-13 18:04:16

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

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

回答(4)

ANo.3

> mysqlデーブルのカラム定義ですがこちらは check1 となっています。

check1カラムの属性(型と大きさ)は何ですか?

投稿日時 - 2007-05-13 15:16:20

補足

asuncion様
ご返答ありがとうございます。
check1ですがこちらがテキストになっております。
また基本値はnullになっております。

投稿日時 - 2007-05-13 15:21:47

ANo.2

> こちらは<table></table>タグを使用しております。

伺いたいこととは違っていました。
最初の投稿で

> $sql = "insert into table values('$check[]')";

と書かれています。これは、「table」という名前のMySQLテーブルに
何らかの値をinsertする、という意味です。
その、「table」というMySQLテーブルのカラム定義はどうなっていますか?

投稿日時 - 2007-05-13 14:31:43

補足

再度のご返答ありがとうございます。
また返答を間違ってしまい申し訳ございません。
mysqlデーブルのカラム定義ですがこちらは check1 となっています。
今も何度も試しているのですが、MYSQLのデータベースで確認してみると
ARRAYとしか表示されません。
また先ほどのスクリプトに誤りがありました
<span class="checkbox"><input name="check1[]" type="checkbox" value="aaa" />aaa</span>
<span class="checkbox"><input name="check1[]" type="checkbox" value="bbb" />bbb</span>
です。checkがcheck1になっております。

投稿日時 - 2007-05-13 14:33:10

ANo.1

さしあたり、tableというテーブルの定義を教えていただけますか?
複数のチェックボックスにチェックを入れたとき、
どのカラムにinsertしようとしているのかがよくわからないのです。

投稿日時 - 2007-05-13 13:54:10

補足

さっそくのご返答ありがとうございます!
こちらは<table></table>タグを使用しております。
初心者のためこの回答であってるのか分かりませんが
宜しくお願いします。

投稿日時 - 2007-05-13 13:56:46

あなたにオススメの質問