• ベストアンサー

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

現在PHPを勉強しているのですがどうしてもわからなくなってしまったので 質問をさせて頂きます。 現在自分が作ろうとしているのは 登録フォーム→確認ページ→登録完了ページ(MYSQLに接続)の流れになっております。 その中でチェックボックスでつまずいております。 こちらにそのコードを一部を記載させて頂きます。 どこで困っているかと申しますと、登録フォームから確認ページまでは 複数選択されたチェックボックスを表示されることができたのですが、 確認ページから登録ページに変わる際に文字化けなどをし、 mysqlに接続して登録した際も文字化けになってしまいます。 他にも変数の受け渡しもうまく出来ていないと思います。 自分の中の結論としては確認ページのhiddenあたりが間違ってるのでは ないかと思ってるのですが何度試してみてもうまくいきません。 大変困っており、誰かご存知の方、もしくはこういう風に変更した方がいいとかありましたらご教授をお願い出来ませんでしょうか? 1,登録フォーム <tr> <td>施術(チェックボックス)<br />順番不問</td> <td> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="aaa" />aaa</span> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="bbb" />bbb</span> </td> </tr> 2,登録確認ページ $sejyutu = $_POST["sejyutu"]; <?php if (trim($sejyutu) == "" || !isset($sejyutu)){ echo "施術が選択されておりません。"; $flag_sejyutu=0; } elseif (empty($sejyutu)){ echo "施術が選択されておりません"; $flag_sejyutu=0; } else { if(isset($sejyutu) and count($sejyutu)>0){ $sejyutu_value = ""; for($i=0;$i<count($sejyutu);$i++){ if($i == 0){ $sejyutu_value .= $sejyutu[$i]; } else { $sejyutu_value .= " " . $sejyutu[$i]; } } } print mb_convert_encoding(trim($sejyutu_value),"sjis","euc-jp") ; $flag_sejyutu=1; } ?> <?php if($flag_sejyutu==1) { ?> <form action="reg_complete.php" method ="post"> <input type="hidden" name="sejyutu_value[]" value="<?php echo $sejyutu_value; ?>"> } 3,登録完了ページ $sejyutu = $_POST['sejyutu_value']; それからmysqlに接続。

noname#130289
noname#130289
  • PHP
  • 回答数5
  • ありがとう数1

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

  • ベストアンサー
  • gogo-tea
  • ベストアンサー率75% (25/33)
回答No.4

一旦文字コードの確認をした方がよさそうですね。。 空のファイルを作成し、 <?php phpinfo() ?> と書いて適当な名前で保存してそのファイルへアクセスし mbstring項の mbstring.http_input mbstring.http_output mbstring.internal_encoding mbstring.language このあたりを確認してみてください。 まずはこの部分とphpファイルの保存時の文字コード、phpファイル内のmetaタグでの文字コード指定がうまくいってないと表示がおかしなことになるかと思います。 http://tsuttayo.sytes.net/php/char_trn/index.html の php.ini 設定表→php.iniの設定 辺りが参考になるかと思います。 登録確認ページの if($i == 0){ $sejyutu_value .= urlencode($sejyutu[$i]); } else { $sejyutu_value .= "," . urlencode($sejyutu[$i]); } を一旦 if($i == 0){ $sejyutu_value .= $sejyutu[$i]; } else { $sejyutu_value .= "," . $sejyutu[$i]; } echo $sejyutu_value;exit; とでもして 受け取った文字列を素直に表示できるようにします。 で、 php.iniのmbstring.~の文字コードを変更 ↓ apache再起動 ↓ 登録確認ページを表示 を行ってみてください。 そちらの環境がわからないので心当たりのあるコードに変えて見て何か変化があればその辺が怪しいということになります。 >print mb_convert_encoding(trim($sejyutu_value),"sjis","euc-jp") ; こうしないと正常に表示されないということはphpファイル保存とmetaでの指定文字コードはSJISでされているっぽいですね。 もしかしたらphp.iniを触らずに登録フォーム、登録確認ページなどをeucで保存しなおしてmetaでの指定もEUC-JPにしたら正常に表示できるかもしれません・・・。

noname#130289
質問者

お礼

ご丁寧な回答どうもありがとうございます! 私の方でphp.iniなどを調べたり色々していたのですが、結局 途方に暮れていたのですが、gogo-tea様が最後に申しておりました metaの変更をしたらうまくいきました!丸二日かけてそこが問題だとは 少々拍子抜けしましたが、ご指摘のおかげで無事に解決することが出来ました。本当にありがとうございます!

その他の回答 (4)

  • widoww
  • ベストアンサー率20% (33/159)
回答No.5

質問主さんの文章を読んでいると、 何が問題となっているのか非常にわかりにくいです。 もっと単純化したプログラムを自分で作ってみて 原因を特定されてから質問したほうがいいと思います。 たとえば 単純にフォームから受け取ったデータを表示する、それがうまく言ったらMYSQLにわたすだけの操作をするプログラムでうまくいくかを調べていくなどすることで、原因は特定できると思います。 どこがおかしいのかわからないなら、小分けにしてそれぞれうまくいくか調べるのが常套手段です、まずそれをやられることをお勧めします。

  • gogo-tea
  • ベストアンサー率75% (25/33)
回答No.3

#2です。 urlencodeで日本語文字列をエンコードして渡したら 受け取る側ではurldecodeという関数でデコードしてやります。 3,登録完了ページ $sejyutu = urldecode($_POST['sejyutu_value']); var_dump($sejyutu); でどうでしょうか。

参考URL:
http://php.s3.to/man/function.urlencode.html
noname#130289
質問者

補足

ご返答ありがとうございます。 こちらでさっそく調べさせて頂きました。encode,decodeについて勉強になりました! またこちらで頂きましたように変更をしてみたのですが、 うまくいきませんでした。 現在の状況ですが、 2,登録確認ページ <?php if (trim($sejyutu) == "" || !isset($sejyutu)){ echo "施術が選択されておりません。"; $flag_sejyutu=0; } elseif (empty($sejyutu)){ echo "施術が選択されておりません"; $flag_sejyutu=0; } else { if(isset($sejyutu) and count($sejyutu)>0){ $sejyutu_value = ""; for($i=0;$i<count($sejyutu);$i++){ if($i == 0){ $sejyutu_value .= urlencode($sejyutu[$i]); } else { $sejyutu_value .= "," . urlencode($sejyutu[$i]); } } } print mb_convert_encoding(trim($sejyutu_value),"sjis","euc-jp") ; $flag_sejyutu=1; } ?> <?php if($flag_sejyutu==1) { ?> <form action="reg_complete.php" method ="post"> <input type="hidden" name="sejyutu_value" value="<?php echo $sejyutu_value; ?>"> } 3, 登録完了ページ $sejyutu = urldecode($_POST['sejyutu_value']); echo var_dump($sejyutu); エラー、文字化けに関しては 登録確認ページで チェックボックスの所は依然文字ではなく、 %A5%E9%A5%B8%A5%AA%C7%C8,%A5%B2%A5%EB%A5%DE%A5%CB%A5%A6%A5%E0%B2%B9%C0%F4,%A5%DB%A5%C3%A5%C8%A5%B9%A5%C8%A1%BC%A5%F3 の形になっており、読めません。 変更前(urlencode)を入れる前はチェックボックスの文字は表示されておりました。 また登録完了ページでdecodeをした際、 var_dumpで調べて見たところ表示は string(40) "・鬣ク・ェヌネ,・イ・・゛・ヒ・ヲ・犂ケタ・・ロ・テ・ネ・ケ・ネ。シ・・ のようになっておりました。 実際になにが原因なのか分からないのですが、いくつか不審点があります。まず一番初めの登録フォームから <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="aaa" />aaa</span>の形で登録確認ページに渡してるのですが var_dumpで確認をした所、すでに文字化けしている状況でしたので print mb_convert_encoding(trim($sejyutu_value),"sjis","euc-jp") ; で確認ページに表示をさせていました。 この登録フォームからすでに文字化けしているのが問題なのかなと思っておりました。 その他に 登録完了ページで文字化けした表記がそのままmysqlに登録されるのですが、その際なぜか<input...とタグまで登録されております。 これは一体なにが問題でなっているのかが分かりません。 変数の受け渡しで問題があるとしか思えないのですが どこかが分かりません。 質問や疑問ばかりでも申し訳ございません。。

  • gogo-tea
  • ベストアンサー率75% (25/33)
回答No.2

if($i == 0){ $sejyutu_value .= $sejyutu[$i]; } else { $sejyutu_value .= " " . $sejyutu[$i]; } これをみると$sejyutu_valueって文字列ですよね なのでhiddenのnameはsejyutu_value[]ではなくsejyutu_valueで良いのではないでしょうか。 で、 上述の部分は if($i == 0){ $sejyutu_value .= urlencode($sejyutu[$i]); } else { $sejyutu_value .= "," . urlencode($sejyutu[$i]); } のようにして渡して見たらどうでしょうか。

noname#130289
質問者

補足

gogo-tea様 ご返答ありがとうございます。さっそくですが$sejyutu_valueはチェックボックスで選択された文字列になります。hiddenのnameは色々と試しており、 sejyutu_valueもやってみたのですがどうしてもうまくいかず色々と試しておりました。 また if($i == 0){ $sejyutu_value .= $sejyutu[$i]; } else { $sejyutu_value .= " " . $sejyutu[$i]; } の部分を if($i == 0){ $sejyutu_value .= urlencode($sejyutu[$i]); } else { $sejyutu_value .= "," . urlencode($sejyutu[$i]); } に変更したところ、 登録確認ページんpチェックボックスで選択された文字列 を表示する所で %A5%E9%A5%B8%A5%AA%C7%C8,%B4%E4%C8%D7%CD%E1,%A5%B2%A5%EB%A5%DE%A5%CB%A5%A6 このように表示されてしまい、 登録確認ページで var_dump($_POST["sejyutu_value"]; で確認してみると string(92) "%A5%E9%A5%B8%A5%AA%C7%C8,%B4%E4%C8%D7%CD%E1,%A5%B2%A5%EB%A5%DE%A5%CB%A5%A6%A5%E0%B2%B9%C0%F4" このような形になっております。 mysqlのデータベースでも確認しみますと 同じ表記で登録されてしまいます。 もう少しで出来そうな気はするのですが、他に変更をどのようにしていいかわからない状況です。。

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

こんちは。 >>自分の中の結論としては確認ページのhiddenあたりが間違ってるのでは では、hiddenの中身を確認してみればよいだけかと思うのですが。。。。 >>文字化けなどをし、 Web関係の文字化けは、大体、文字のコード違いかと個人的には思ってます。 定義してあるファイル自体のコードが違うのか、Web通信を行った際に、通信に適さないコードだったため化けたか。。。 PHP使用者じゃないのであるかどうか分かりませんけど、ASPには、「HTMLEncode」という、HTML通信を行う際に、適したコードに変換して通信を行う処理が存在しますけど、PHPにはどうでしょうか??

noname#130289
質問者

補足

さっそくのご返答ありがとうございます。 hiddenの中身の確認ですが、それは登録完了ページに 変数がちゃんと受け取ってるかどうかの確認ということでしょうか? もしそうであれば、登録確認ページの var_dump($_POST["sejyutu_value"]; $sejyutu = $_POST["sejyutu_value"]; で確認をしたのですが、 表示としては array(1) { [0]=> string(73) "磁失磁蒔蕊縞 雫靆邪赦。ヲ磁軸磁。ヲ酌磁射磁示磁犇嫉実。ヲ> となってしまいます。 文字化けに関しては mb_convert_encodingで対処しようとしてるのですが 登録確認ページから登録完了ページに飛ぶ際にうまくいってません。 素人で深く説明できず、申し訳ございません。 となり

関連するQ&A

  • チェックボックス 複数選択 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[]')"; 配列を使うとまでは調べて分かったのですが、そこからがどうしても 分かりません。どなたご存知になるかたがおりましたら 是非お伺い出来ませんでしょうか。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • チェックボックス複数選択 mysql受け渡し

    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のデータベースに移行できる方法をご存知の方お伺い出来ませんでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • チェックボックスから検索、PHP コード付き

    現在チェックボックスとフリーワード検索をしようしたサイトを作ろうとしているのですが、どうしても仕様通りにいきませんでしたのでここで 質問をさせて頂きました。 検索画面ですが、簡単な2ページ構成になっております。(kensaku.phpとresult.php) コードのどこが間違っているのかが分かりません。 どなたかお分かりになる方がいましたらお伺い出来ませんでしょうか。 宜しくお願い致します。 1,kensaku.php <form action="result.php" method="POST" > <table class="font12" cellpadding="5" cellspacing="10" width="430" align="center"> <tr> <td> <span class="checkbox"><input type="checkbox" name="sejyutu[]" value="1" />aaa</span> <span class="checkbox"><input type="checkbox" name="sejyutu[]" value="2" />bbb</span> <span class="checkbox"><input type="checkbox" name="sejyutu[]" value="3" />ccc</span><br /> </td> </tr> <tr> <td><input type="text" name="sejyutu_else" value="フリーワード検索" size="30" /></td> </tr> <tr> <td colspan="2" align="right"><input type="submit" value="検索する" /></td> <?php //DB接続・選択 if (!$int_connect = @mysql_connect('localhost','bbb','aaa')) { die("can't connect mysql server."); } //データベースに接続 if (!@mysql_select_db("database", $int_connect)) { die("can't use selected database."); } // SQLクエリ $sql = "select * from table"; $where = array(); // sejyutuカラムの条件を調べる if (isset($_POST['sejyutu']) && is_array($_POST['sejyutu'])) { foreach ($_POST['sejyutu'] as $sejyutu) { $where[] = "sejyutu like '%" . mysql_real_escape_string($sejyutu) . "%'"; } } // sejyutu_elseカラムの条件を調べる if (isset($_POST['sejyutu_else']) && strlen($_POST['sejyutu_else'])) { $where[] = "sejyutu_else like '%" . mysql_real_escape_string($_POST['sejyutu_else']) . "%'"; } // 検索キーワードの有無により処理分岐 if (!$where) { echo "検索キーワードを入力して下さい"; } else { // SQL文を生成する $sql .= " where " . implode(' OR ', $where); $res = mysql_query($sql,$int_connect); if (!mysql_num_rows($res)) { echo "<p>該当データがありません</p>"; } else { // TABLEタグを書く while ($row = mysql_fetch_array($res)) { // 各結果をTR,TDタグで整形して表示する ?> <table width="430" cellpadding="5" cellspacing="0" class="font12"> <tr> <td colspan="2"><p class="salon_name"><?php echo mb_convert_encoding(trim($row["salon_name"]),"sjis","euc-jp") ?></p></td> <td><a href="salon_page.php?code=<?php echo $row['id'];?>">詳しくはこちら</a></td> </tr> <tr> <td valign="top"><p class="salon_item">最寄り駅:</p></td> <td class="salon_detail"><?php echo mb_convert_encoding(trim($row["station"]),"sjis","euc-jp") ?></td> </tr> <tr> <td valign="top"><p class="salon_item">住所:</p></td> <td class="salon_detail"><?php echo mb_convert_encoding(trim($row["address"]),"sjis","euc-jp") ?></td> </tr> <tr> <td valign="top"><p class="salon_item">施術名</p></td> <td class="salon_detail"><?php echo mb_convert_encoding(trim($row["sejyutu"]),"sjis","euc-jp") ?></td> </tr> <?php } } } ?>

    • ベストアンサー
    • PHP
  • チェックボックス + フリーワード検索 PHP&MYSQL

    現在検索画面の作成をしているのですが、分からないことがありましたので 質問をさせて頂きました。 検索画面ですが、簡単な2ページ構成になっております。(kensaku.phpとresult.php) 仕様としてはkensaku.phpにチェックボックス(複数選択可)と フリーワードがあり、一つの検索ボタンで検索し結果をresult.phpに表示させようと思っております。データベースはMYSQLです。 検索ボタンが一つしかないため、もしチェックボックスが選択されず、フリーワードだけ入力されたのであれば、それだけで検索。その逆のもし チェックボックスだけ選択されたのであればそれだけで検索。 また両方入力されたのであれば、両方のデータを検索できるように したいと思っております。 フリーワード検索までは出来るようになったのですが、 チェックボックス検索(両方検索・片方のみ検索)などが どうしても出来ません。 どなたかご存知の方ご教授して頂けないでしょうか。 宜しくお願い致します。 こちらがコードになります。 1,kensaku.php <form action="result.php" method="POST" > <table class="font12" cellpadding="5" cellspacing="10" width="430" align="center"> <tr> <td> <span class="checkbox"><input type="checkbox" name="sejyutu[]" value="1" />aaa</span> <span class="checkbox"><input type="checkbox" name="sejyutu[]" value="2" />bbb</span> <span class="checkbox"><input type="checkbox" name="sejyutu[]" value="3" />ccc</span><br /> </td> </tr> <tr> <td><input type="text" name="sejyutu_else" value="フリーワード検索" size="30" /></td> </tr> <tr> <td colspan="2" align="right"><input type="submit" value="検索する" /></td> 2, result.php <?php $sejyutu = $_POST["sejyutu"]; $sejyutu_else = $_POST["sejyutu_else"]; if($sejyutu and sejyutu_else<>''){ //DB接続・選択 if (!$int_connect = @mysql_connect('localhost','aaa','aaaa')) { die("can't connect mysql server."); } //データベースに接続 if (!@mysql_select_db("database", $int_connect)) { die("can't use selected database."); } $sql = "select * from table where sejyutu_else like'%$sejyutu_else%'"; $result=mysql_query($sql,$int_connect); $rows=mysql_num_rows($result); ?> <table width="430" cellpadding="5" cellspacing="0" class="font12"> <?php while($row = mysql_fetch_array($result)){ ?> <tr> <td colspan="2"><p class="salon_name"><?php echo $row["name"]; ?></p></td> </tr> <tr> <td valign="top"><p class="salon_item">最寄り駅:</p></td> <td class="salon_detail"><?php echo $row["station"]; ?></td> </tr> <tr> <td valign="top"><p class="salon_item">住所:</p></td> <td class="salon_detail"><?php echo $row["address"]; ?></td> </tr> <tr> <td valign="top"><p class="salon_item">施術名</p></td> <td class="salon_detail"><?php echo $row["sejyutu"];?></td> </tr> <?php } } ?> </table> </body> </html>

    • ベストアンサー
    • PHP
  • 複数あるチェックボックスの入力チェックするには?

    チェックボックスの入力チェックスクリプトを探しており、下記のようなスクリプトをネット検索で見つけました。 <!-- <script type="text/javascript"> function chNull(msg,obj) { if(!obj) return true; if((obj.type || obj[0].type) == 'checkbox'){ var flag = 0; if(obj.length){ for(var i=0; i<obj.length; i++) { if(obj[i].checked) flag = 1; } } else { if(obj.checked) flag = 1; } if(flag == 0) { alert(msg + 'を選択してください。'); return false; } } return true; } --> </script> <form method="POST" action="■.cgi" onSubmit="return chNull('チェックボックス',a);"> <input type="checkbox" name="a" value="A1" />A1 <input type="checkbox" name="a" value="A2" />A2 </form> 同じnameのチェックボックス群がひとつしかないときはこれで問題ないのですが、 下記のようにnameが複数ある場合にはこのスクリプトのどの部分を変えればよいのでしょうか? <input type="checkbox" name="a" value="A1" />A1 <input type="checkbox" name="a" value="A2" />A2 <input type="checkbox" name="b" value="B1" />B1 <input type="checkbox" name="b" value="B2" />B2 <input type="checkbox" name="c" value="C1" />C1 <input type="checkbox" name="c" value="C2" />C2 できればこのスクリプトをベースとして使用したいと思っています。どなたかお分かりの方がいらっしゃいましたらお教え下さいませ。 よろしくお願い致します。

  • 複数のチェックボックスをチェックしたい

    質問させてください。 複数のチェックボックスを項目別に全てチェックするようなjqueryの書き方をご教授いただきたいです。 <table> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />a</li> <li><input type="checkbox" name="" value="" />b</li> <li><input type="checkbox" name="" value="" />c</li> <li><input type="checkbox" name="" value="" />d</li> </td> </tr> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />e</li> <li><input type="checkbox" name="" value="" />f</li> <li><input type="checkbox" name="" value="" />g</li> <li><input type="checkbox" name="" value="" />h</li> </td> </tr> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />i</li> <li><input type="checkbox" name="" value="" />j</li> <li><input type="checkbox" name="" value="" />k</li> <li><input type="checkbox" name="" value="" />l</li> </td> </tr> </table> 上記のようにそれぞれの項目に「まとめてチェック」のチェックボックスがあり、 そこに該当するチェック項目は全てチェックorチェックを外す っという挙動の実装を考えています。 jqueryでやりたいのですが、javascript、jqueryがかなり苦手でいまいちいきません。 ググって $(function(){ $('#all').click(function(){ if(this.checked){ $('#check input').attr('checked','checked'); }else{ $('#check input').removeAttr('checked'); } }); }); このソースを見つけたのですが、これだと一つの項目でしか実装できず 項目分このjqueryを書くのも余り良い書き方だと思えません。 どなたか、ご教授お願いいたします。

  • チェックボックスで複数選択する方法教えて下さい

    いつもありがとうございます。 00.PHPというファイルにチェックボックスを配置して複数選択し 同じ00.phpにPOSTで情報送り、表示させたいのですが、 下記の記述では「Array」としか表示されません。 検索結果を最終的にはMYSQLにデータ登録をしたいのですが うまくいきません。御指導お願いします。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>無題ドキュメント</title> </head> <body> <? echo $_POST["working_days"] ?> <form action="00.php" method="post">  <label>  <input type="checkbox" name="working_days[1]" value="1"> ド短期1日~OK <input type="checkbox" name="working_days[2]" value="2"> 週2、3日程度  <input type="checkbox" name="working_days[3]" value="3"> 月~金曜日 <input type="checkbox" name="working_days[4]" value="4"> 土日祝日のみ <input type="checkbox" name="working_days[5]" value="5"> 毎日オールフリー</label>      <input type="submit" name="Submit" value="登録"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • チェックボックスを使った複数選択からデータベースへの登録

    チェックボックスを使った複数選択の処理を教えて下さい。 現在の処理は下記のようにしております。 00.phpの中のチェックボックスの記述です。複数選択してから01.phpに値を渡します。 <label> <input type="checkbox" name="working_days1" value="ド短期1日~OK"> ド短期1日~OK</label> <label> <input type="checkbox" name="working_days2" value="週2、3日程度"> 週2、3日程度</label> <label>     <input type="checkbox" name="working_days3" value="月~金曜日"> 月~金曜日</label> <br> <label> <input type="checkbox" name="working_days4" value="土日祝日のみ"> 土日祝日のみ</label> <label> <input type="checkbox" name="working_days5" value="毎日オールフリー"> 毎日オールフリー</label> 00.phpから01.phpへPOSTでデータを渡します。 <? $working_days1 = htmlspecialchars($_POST["working_days1"]); $working_days2 = htmlspecialchars($_POST["working_days2"]); $working_days3 = htmlspecialchars($_POST["working_days3"]); $working_days4 = htmlspecialchars($_POST["working_days4"]); $working_days5 = htmlspecialchars($_POST["working_days5"]); 各変数の中を確認してチェックするかどうかへ決め、変数に格納します。 if($working_days1 == "ド短期1日~OK" ){$d01 = "checked";} if($working_days2 == "週2、3日程度"){$d02 = "checked";} if($working_days3 == "月~金曜日"){$d03 = "checked";} if($working_days4 == "土日祝日のみ" ){$d04 = "checked";} if($working_days5 == "毎日オールフリー"){$d05 = "checked";} ?> 変数に格納されたチェックを実行してチェック済みとします。 <label> <input type="checkbox" name="working_days1" value="ド短期1日~OK" <?php echo $d01 ?>> ド短期1日~OK</label>  <label> <input type="checkbox" name="working_days2" value="週2、3日程度" <?php echo $d02 ?>> 週2、3日程度</label> <label>     <input type="checkbox" name="working_days3" value="月~金曜日" <?php echo $d03 ?>> 月~金曜日</label> <label> <input type="checkbox" name="working_days4" value="土日祝日のみ" <?php echo $d04 ?>> 土日祝日のみ</label> <label> <input type="checkbox" name="working_days5" value="毎日オールフリー" <?php echo $d05 ?>> 毎日オールフリー</label> こんな感じでチェックされた項目の確認をした後で、内容をMYSQLのデータベースに登録をしたいのですが、 データベースへの登録も含めて、一連の流れの中で、配列を利用して、もっと簡単なよい方法が ないか御指導いただけませんでしょうか? データベースへの登録も配列に格納しないとworking_dayというテーブルしか用意をしていないので その中にどのように格納して、また取り出しをすればよいかわかりません。 どうぞ超初心者レベルでのご指導をお手間ですが、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • チェックボックスが複数ある場合の値取得について

    【javascript】チェックボックスが複数ある場合の値取得について こんにちは。 チェックボックスのグループが複数ある場合に、値取得のロジックをチェックボックスのグループ毎に記述せず、 まとめて1つのロジックで取得できる記述方法はありますでしょうか? 色々と検索しましたが、解決できず何かよい方法があれば教えて頂けないでしょうか。 よろしくお願い致します。 ■やりたいこと ・チェックボックスの値取得の記述を1つにまとめたい。 サンプルソースでは、チェックボックスのグループが3つで、チェックボックスの値取得のソースも3つ記述しています。 チェックボックスのグループを50個設置すると、50回値取得のソースを記述することになってしまうので、1つの記述にまとめたいです。 ■サンプルソース <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <script src="jquery.js"></script> <style type="text/css"> table {border: solid;} td{width:150px;} </style> <script type="text/javascript" language="JavaScript"><!-- function setVal(obj) { var formname = obj.form.name; var radioname = obj.getAttribute("Name"); document.forms[formname]["h"+radioname].value = $("input:radio[name='" + radioname + "']:checked").val(); } // --></script> <script type="text/javascript" language="JavaScript"><!-- function disp(obj){ var naiyo02=""; var naiyo03=""; var naiyo04=""; var flag = 0; //チェックボックス1の値 for(i=0; i<document.forms["test"].checkbox02.length; i++){ if(document.forms["test"].checkbox02[i].checked){ naiyo02 = naiyo02 + "■本日は月曜日:"+ document.forms["test"].hradio00.value + ' ' + document.forms["test"].checkbox02[i].value + '\n'; flag = flag+1; }} if(flag == 0){ naiyo02 = "■本日は月曜日:"+ document.forms["test"].hradio00.value + ' ' + "未選択"+ '\n'; } //チェックボックス2の値 for(i=0; i<document.forms["test"].checkbox03.length; i++){ if(document.forms["test"].checkbox03[i].checked){ naiyo03 = naiyo03 + "■本日は火曜日:"+ document.forms["test"].hradio00.value + ' ' + document.forms["test"].checkbox03[i].value + '\n'; flag = flag+1; }} if(flag == 0){ naiyo03 = "■本日は火曜日:"+ document.forms["test"].hradio00.value + ' ' + "未選択"+ '\n'; } //チェックボックス3の値 for(i=0; i<document.forms["test"].checkbox04.length; i++){ if(document.forms["test"].checkbox04[i].checked){ naiyo04 = naiyo04 + "■本日は水曜日:"+ document.forms["test"].hradio00.value + ' ' + document.forms["test"].checkbox04[i].value + '\n'; flag = flag+1; }} if(flag == 0){ naiyo04 = "■本日は水曜日:"+ document.forms["test"].hradio00.value + ' ' + "未選択"+ '\n'; } str = naiyo02 +'\n'+ naiyo03 +'\n'+ naiyo04 +'\n'; alert(str); } // --></script> </head> <body> <FORM name="test"> <table> <tr> <td class="c"> ■天気 </td> <td class="n" > <label for="radiocheck04"><input type="radio" id="radiocheck04" name="radio00" value="晴れ" onClick="setVal(this);">晴れ</label> <label for="radiocheck05"><input type="radio" id="radiocheck05" name="radio00" value="曇り" onClick="setVal(this);">曇り</label> <input type="hidden" name="hradio00" value="未入力"><br> </td> </tr> </table> <table> <tr> <td class="c" > ■月曜日<br> (複数選択可) </td> <td class="n" > <input type="checkbox" name="checkbox02" value="さくら">さくら<br> <input type="checkbox" name="checkbox02" value="まっちゃ">まっちゃ<br> <input type="checkbox" name="checkbox02" value="不明"> 不明<br> </td> </tr> </table> <table> <tr> <td class="c" > ■火曜日<br> (複数選択可) </td> <td class="n" > <input type="checkbox" name="checkbox03" value="バニラ">バニラ<br> <input type="checkbox" name="checkbox03" value="不明"> 不明<br> </td> </tr> </table> <table> <tr> <td class="c" > ■火曜日<br> (複数選択可) </td> <td class="n" > <input type="checkbox" name="checkbox04" value="いちご">いちご<br> <input type="checkbox" name="checkbox04" value="ミント">ミント<br> <input type="checkbox" name="checkbox04" value="バニラ">バニラ<br> <input type="checkbox" name="checkbox04" value="不明"> 不明<br> </td> </tr> </table> <input type="button" value="確認" onclick="javascript:disp(this.form)"> </Form> <body> </html>

  • チェックボックスで複数選択した値をSQLへ

    次のような入力フォームから、SQLのテーブルに登録します。 <?php function connect() { return new PDO("mysql:dbname=★★★;host=★★★","★★★","★★★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); if (@$_POST['submit']) { $hoge = $_POST['hoge']; if (!$error) { $pdo->query("INSERT INTO ★(hoge) VALUES('$hoge')"); header('Location: example.php'); exit(); } } ?> <form action="insert.php" method="post"> <input type="checkbox" name="hoge[]" value="りんご"/>りんご<br> <input type="checkbox" name="hoge[]" value="みかん" />みかん<br> <input type="checkbox" name="hoge[]" value="いちご" />いちご <input class="submit" type="submit" name="submit" value="登録"> </form> これで、例えば「りんご」と「みかん」をチェックして登録ボタンを押すと 受け取りのexample.phpにはArrayと表示され、SQLに反映されません。 よい方法があったら教えてください。

    • ベストアンサー
    • PHP

専門家に質問してみよう