

PHPを習いはじめたのですが分からない所がありましたので質問をさせて頂きました。
チェックボックスを作り複数選択されたデータをMYSQLに受け渡したいのですがどうしてもうまくいきません。受け渡しが出来たかと思えばARRAYのみ表示されてしまい、重要な内容が一切表示されません。
こちらがスクリプトになります。
<tr>
<td>(チェックボックス)<br />順番不問</td>
<td>
<span class="checkbox"><input name="check1[]" type="checkbox" value="aaa" />aaa</span>
<span class="checkbox"><input name="check1[]" type="checkbox" value="bbb" />bbb</span>
</tr>
</td>
//mysql
$sql = "insert into table values('$check1')";
多分この$sql分のなにかが間違ってると思うですがいくらやっても
出来ません、、
mysql の設定はカラムはcheck1となっており、text, 値はnullとなっております。
どのなたか複数チェックボックスで表示された項目をMYSQLのデータベースに移行できる方法をご存知の方お伺い出来ませんでしょうか。
宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
#3さんと同じような事ですが、受け取り側は配列での処理になります。
チェックが一つでも変数ではなく要素が一つの配列としてみなされます。
$arr_check1 = $_POST['check1'];
として受け取るとチェックをした数だけ要素を持つ配列になるので
例えばカラムcheck1にチェックをつけた項目をスペースで区切って格納したいのであれば、
if(isset($arr_check1) and count($arr_check1)>0){
$str_check1 = "";
for($i=0;$i<count($arr_check1);$i++){
if($i == 0){
$str_check1 .= $arr_check1[$i];
}
else{
$str_check1 .= " " . $arr_check1[$i];
}
}
}
のように一つの文字列にしてから$str_check1をSQLでカラムにインサートします。
gogo-tea様
ご返答ありがとうございます!
まず最初にですが、こちらのスクリプトを利用してみましたら
動きました。ありがとうございました!
正直今日一日ずっとこれをどう動かしたらいいのか一日調べたりなどをして
悩んでいたのですが、まさかこのような書き方が出来るとは考えもしておりませんでした。正直まだ完全に理解していないのが現状です、、
でも色々な方から助言を頂き大変勉強になりました。あきらめずに今後もがんばらさせて頂きます!
本当にありがとうございました!
No.5
- 回答日時:
<?PHP
$check1=$_REQUEST['check1'];
if(is_array($check1)){
foreach($check1 as $val){
$sql = "insert into table values('{$val}')";
・・・・
}elseif($check1!=""){
$sql = "insert into table values('{$check1}')";
・・・・
}
?>
としてみてください。
この回答への補足
ご返答ありがとうございます!
さっそくですがこちらでためしてみたのですが機能致しません。。
なんとなくですが、スクリプトの意味が分かるのですがまだ勉強不足で申し訳ないです。

No.3
- 回答日時:
まず、phpのバージョンが4.1以降で有れば、$_POST[] や $_GET[] で受け取ることを推奨します。
name='check1[]' となっているので、受け取りは配列になります。
http://php.s3.to/man/faq.html.html
配列変数をそのまま表示しようとすれば、ARRAY となるので、添え字をつけて個別指定で値を取り出しましょう。
チェックされた個数分の配列になっているはずなので
$_POST['check1'][0] , $_POST['check1'][1] ,,,
の様にして受信データを取り出します。
foreach($_POST['check1'] as $value )を使ってループ処理すると個数を気にしなくてもよくなります。
しかし、チェックが一個もないときは、$_POST['check1']が存在しないので、isset($_POST['check1'])で分岐して、
さらに、チェックが一個しかないときは、配列になっていない可能性もあったように思うので、is_array($_POST['check1']) で分岐してからforeachループでデータ取りだしするのがよいでしょう。
MySQL文の方は、チェックの個数分の複数の項目に一レコードで登録したいのか、チェックの個数分のレコード数を登録したいのかで作りが違ってくると思います。
参考URL:http://php.s3.to/man/faq.html.html#faq.html.arrays
この回答への補足
大変ご丁寧にご説明して頂きましてどうもありがとうございます。
とても参考になりました。
MYSQL分はチェックの個数分のコードを登録したいと思っているのですが
どうしてもうまくいきません。配列の受け取りに関してはなにか
特別な書き方をするのでしょうか?
hrm_mmm様
頂きましたURL大変勉強になりました!
まだまだ分からない所がたくさんあり、まったくの勉強不足ですが
ひとまずまだ自分のものには出来てないですが、この機能することが出来ましたので締め切りをさせて頂きます。頂きました助言をもっと理解出来るように今後もがんばります、ありがとうございました!
No.2
- 回答日時:
もしかして、スクリプトはそれですべてですか?
チェックボックスのどれにチェックを入れたかを
自分(または他のスクリプト)に伝えるためには、
「送信」ボタンのような仕組みが必要なはずですけれど。
No.1
- 回答日時:
まず
<input name="check1" type="checkbox" value="aaa" />
<input name="check2" type="checkbox" value="bbb" />
nameが同じだとそれぞれのデータが取込めません。
SQLは
$sql = "insert into table ('check1') values('$check1')";
インサートするフィールドを指定しましょう!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPの多次元配列について
-
【Smarty】foreach関数やsectio...
-
チェックボックスが複数選択で...
-
OCI で、SELECT結果行数を取得...
-
呼び出した関数を知る方法はあ...
-
PHPでgrepする件について
-
配列の何番目かを出力したい
-
AppStoreのランキングを配列に...
-
postgresql関数をつかったレコ...
-
while文について
-
配列をMySQLの1カラムに入れ、...
-
$_POSTを一括してサニタイズし...
-
array_combineがうまくいかない...
-
Cookieの発行について
-
配列を回すとき、最後の要素だ...
-
PHPのPOSTでの半角スペース
-
smarty 同じ要素内で改行
-
mb_ereg_replaceについて
-
PHP 配列の数をn対nの割合で分...
-
URLエンコードした配列を使う方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
$_SESSIONに二次元配列を使える...
-
foreachのなかで次のキーを参照...
-
file_existsでファイル名の部分...
-
PHPにてクラスを配列にすること...
-
String だと「 ByRef引数の型が...
-
ネストが深い時のforeachはどう...
-
postgresql関数をつかったレコ...
-
PHPでの簡易ビンゴゲームでの疑...
-
PHPのカッコ[ ]の使い方について
-
sortableで並べ替えてDBに保...
-
漢字のソートについて
-
プルダウンメニューでCSVデータ...
-
チェックボックス複数選択 mys...
-
PHPで配列をPOSTデータで送った...
-
URLのサブドメインとドメイン部...
-
PHP 配列の添字に変数は使えない?
-
チェックボックスが複数選択で...
-
PHP 多次元配列変数のデータ受...
-
SQL文の実行結果を変数で受けて...
おすすめ情報