PHPでチェックボックスでの値の表示について

このQ&Aのポイント
  • HTMLで作成したテキスト、セレクト、チェックボックスなどに、選択されたもの全てをPOST送信で受け取ってPHPにてパラメータをチェックしてから確認画面(HTML)に表示してPHPにてDB登録するというプログラムを作ってます。
  • HTMLで作成したテキストやセレクト、チェックボックスなどに選択された値をPHPで受け取り、パラメータをチェックしてから確認画面に表示し、最後にPHPを使ってDBに登録するプログラムを作っています。
  • PHPを用いて、HTMLで作成したテキスト、セレクト、チェックボックスなどに選択された値をPOST送信で受け取り、パラメータをチェックしてからHTMLの確認画面に表示し、最終的にPHPを使ってDBに登録するプログラムを開発しています。
回答を見る
  • ベストアンサー

phpでチェックボックスでの値の表示について

HTMLで作成したテキスト、セレクト、チェックボックスなどに、選択されたもの全てをPOST送信で受け取って PHPにてパラメータをチェックしてから 確認画面(HTML)に表示してPHPにてDB登録するというプログラムを作ってます。 HTML側で <input type="checkbox" name="genre[0]" value="1" >国語 <input type="checkbox" name="genre[1]" value="2" >算数 <input type="checkbox" name="genre[2]" value="3" >理科  <input type="checkbox" name="genre[3]" value="4" >社会 として例えば、 <?php $genre = $_POST["genre"]; foreach ($genre as $key => $value){ print($value); } ?> で表示するとチェックした数字が表示されます。 (国語をチェックした場合 1) これを 国語 と表示させるにはどうすればいいんでしょうか? DBに登録する際は数字でいいんですが。

  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>HTML側で <input type="checkbox" name="genre[]" value="1" >国語 <input type="checkbox" name="genre[]" value="2" >算数 <input type="checkbox" name="genre[]" value="3" >理科 <input type="checkbox" name="genre[]" value="4" >社会 としておいて、対比表で処理します <?php $kamoku=Array(1=>"国語",2=>"算数",3=>"理科",4=>"社会"); $genre=$_POST["genre"]; foreach ($genre as $key => $value){ print($kamoku[$value]); } ?> 場合によっては <input type="checkbox" name="genre[]" value="国語" >国語 <input type="checkbox" name="genre[]" value="算数" >算数 <input type="checkbox" name="genre[]" value="理科" >理科 <input type="checkbox" name="genre[]" value="社会" >社会 とする手もありますが、ユーザーから送られてくるデータは信じられないので あまり良いやりかたとは言えません。

s_mac_ts
質問者

補足

ありがとうございます。やりたいことが出来ました! 複数選択した場合に確認画面では 国語算数 と表示されるんですがカンマなりスペースを入れる場合はどのようにしたらいいんでしょうか?

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

<?php $kamoku=Array(1=>"国語",2=>"算数",3=>"理科",4=>"社会"); $genre=$_POST["genre"]; $str=""; foreach ($genre as $key => $value){ if($str!="") $str.=","; $str.=$kamoku[$value]; } print($str); ?> みたいな感じでどうでしょう? ?>

s_mac_ts
質問者

お礼

ありがとうございました!完璧です。 まだまだ聞きたいことはたくさんありますが、この質問の投稿で聞きすぎるのもあれなので…。 本当に助かりました。

関連するQ&A

  • チェックボックスの戻り

    チェックボックスのvalue値に数字を入れてPOSTしています。 DB登録の前にその値を足し算してDBに登録しています。 <input type="checkbox" name="cb[0]" value="1"> <input type="checkbox" name="cb[1]" value="2"> <input type="checkbox" name="cb[2]" value="4"> <input type="checkbox" name="cb[3]" value="8"> <input type="checkbox" name="cb[4]" value="16"> ・・・のようにしています。DBの値を読み取ってcheckedを付ける際はどのようにしたら効率よく処理できるでしょうか?switchを使うとすごくチェックボックスの数が増えると厄介です。困っています。教えてください。

    • ベストアンサー
    • PHP
  • チェックボックスによる検索(複数チェックの場合)

    プログラム超初心者です。色々なサイトを検索し参考にしたのですがどうしても結果が得られないため投稿させていただきました。(似たようなものは多かったのですがわかりませんでした。) チェックボックスにて複数チェックされる可能性があるものをMYSQLより検索をかけ結果を表示したいと思っております。 地域:□北海道、□東北、□関東、□北陸、□中部、 ジャンル:□イタリアン、□アジアン料理、□洋食、□すべて 以上にチェックをいれてもらったものに対し検索結果画面をだす予定です。 検索をかけるhtml画面は以下のように致しました。 <form method="POST" action="search.php"> <input name="area[]" type="checkbox" value="0"/>北海道<br> <input name="area[]" type="checkbox" value="1"/>東北<br> <input name="area[]" type="checkbox" value="2"/>関東<br> <input name="area[]" type="checkbox" value="3"/>北陸<br> <input name="area[]" type="checkbox" value="4"/>中部<br> <input name="genre[]" type="checkbox" value="a"/>イタリアン<br> <input name="genre[]" type="checkbox" value="b"/>アジア料理<br> <input name="genre[]" type="checkbox" value="c"/>洋食<br> <input name="genre[]" type="checkbox" value="g"/>すべて<br> <input type="submit" name="bottun1" value="入 力"> PHPで$変数名a = $_POST["area"];と$変数名b = $_POST["genre"]; とし配列 foreach関数を使うのでは・・・とまで考えたのですがその後どうすればよいかわかりません。こんなにわからない状態でお伺いするのは恥ずかしいのですがお知恵を頂きたく投稿させていただきました。 お忙しいかと思いますがどうか宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP更新フォーム チェックボックス

    入力フォームにて、チェックボックスがあり、チェック送信すると"済"という文字をDBに格納します。 <input type='checkbox' name='check' value='済'> DBに済が格納されていたら、更新フォームのチェックボックスに、チェックが入ってる状態に したのですが、どのようにしたら良いでしょうか? <input type="text" name="checkbox" value="<?php print( $row->checkbox); ?>"> のようにしてもうまくいきません。 ご教授おねがいします。

    • 締切済み
    • PHP
  • 配列で渡されたチェックボックスの値の処理

    POST元のページから <input type="checkbox" name="hoge[23]" value="1"> <input type="checkbox" name="hoge[31]" value="0"> <input type="checkbox" name="hoge[33]" value="1"> ・・・ のような形でデータが渡されます。 要素一つに付き、ONなのか、OFFなのか、表示されていないのかの判別が必要なため、このような形になっています。 受けるPHP側で、hogeの配列番号と一致したものがあればそれに対する処理を行う必要があります。 $buff=array(20,30,31); となっているとして、 $_POST["hoge"]の配列の値と$buff内の数字が一致したら~ (上記例だと31が一致) の書き方はどう書けばいいでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • フォームで受け取った値のPHP表示方法

    フォームのチェックボックスから選択したメニューを 同じページに表示するというPHPのサンプル練習ですが 複数選択した場合、適切に「と」が入るようにするには どのような方法があるのでしょうか? 以下のサンプルの場合だと1つの場合でも 複数選択の場合でも全てに「と」が入ってしまいます。 「echo $_POST["check"][$i]」の次に if条件文のような物を付ければよいと思い試しているのですが なかなか上手く行きません。 初学者ですが何か分かりやすく簡単な方法があれば お教えください。 よろしくお願いいたします。 ---------------------------------------------------------- <?php if(isset($_POST["check"])){ for($i=0; $i<count($_POST["check"]); $i++){ echo $_POST["check"][$i]."と"; ←※※※ } echo "が好きです。"; } ?> <html> <body> <form method="post" action=""> <input type="checkbox" name="check[]" value="きつねうどん">きつねうどん <input type="checkbox" name="check[]" value="カレーうどん">カレーうどん <input type="checkbox" name="check[]" value="ざるそば">ざるそば <input type="checkbox" name="check[]" value="天ぷらうどん">天ぷらうどん <input type="submit" value="何が好き"> </form> </body> </html> -----------------------------------------------------------

    • ベストアンサー
    • PHP
  • チェックボックスのデータの受け取り方について

    以下のようなチェックボックスを作ったとき、 test.phpではどうやって受け取ればよいのでしょうか? nameがそれぞれ違う場合は分かるのですが... 教えてください。 <form method="POST" action="test.php"> <input type="checkbox" name="color" value="red">赤</input> <input type="checkbox" name="color" value="blue">青</input> <input type="checkbox" name="color" value="white">白</input> <input type="checkbox" name="color" value="black">黒</input> <input type="submit" value="送信" > </form>

    • ベストアンサー
    • PHP
  • PHPで返信メールにチェックボックスの値を表示したいのですが。。。

    PHPで返信メールにチェックボックスの値を表示したいのですが。。。 PHP初心者です。 request.phpという資料請求用のWEBページを作成しており、お問い合わせ項目内に 以下の様なチェックボックスを設けました。 <tr> <th>ご希望される商品</th> <td> <input type="checkbox" name="kibo[]" value="a-set" /> Aセット<br /> <input type="checkbox" name="kibo[]" value="b-set" /> Bセット<br /> <input type="checkbox" name="kibo[]" value="c-set" /> Cセット<br /> <input type="checkbox" name="kibo[]" value="d-set" /> Dセット </td> </tr> 入力後の内容確認画面では、 <tr> <th>ご希望される商品:</th> <td class="subheader_txt_l"><?php echo implode(' / ', $_POST['kibo']);?></td> </tr> として、選択した項目が表示されるところまではできましたが、送信ボタン後、確認メールが 送られてくる仕組になっているのですが、メール本文内では【ご希望される商品】欄が空っぽで 返ってきます。。。 ちなみにメール本文作成の処理では、 $body .= '【氏名】        '.$_POST['name1']."\n". '【メールアドレス】   '.$_POST['mail']."\n". '【住所】        '.$_POST['zyuusyo']."\n". '【ご希望される項目】  '.$_POST['kibo']."\n". '【お問い合わせ内容】  '.$_POST['comment']."\n\n". 値取得にあたり特別な関数が必要なのでしょうか。 ご教授頂けますと幸いです。よろしくお願いします。

    • ベストアンサー
    • PHP
  • チェックボックスのうちひとつでもチェックがなければエラー

    チェックボックスが複数個(5~6個)あります。 hajime.html <form action="niban.php" method="post"> <input type="checkbox" value="A" name="CHK1" /> <input type="checkbox" value="B" name="CHK2" /> <input type="checkbox" value="C" name="CHK3" /> <input type="checkbox" value="D" name="CHK4" /> <input type="checkbox" value="E" name="CHK5" /> <input type="checkbox" value="F" name="CHK6" /> </form> ●このA~Fのうち、ひとつでもチェックされていなければ チェックしてください。とエラー表示させたいのですが… ●次のページではこのようにデータを受取していします。 niban.php// フォームの値取得は下記のように行っています。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $v = addslashes($v); $$k = $v; } } else { exit(); } $ErrFlg = 0;(エラーの時は$ErrFlgを1にします) ●エラー構文のサンプル↓ if ($name == "" ) { echo "<p>名前を入力してください。"; $ErrFlg = 1; } どうぞお力をおかしください

    • 締切済み
    • PHP
  • チェックボックスで複数選択した値を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
  • php繰り返し構文とforeache

    PHP5.26 MySQL5 Apache2.2 <html> <head>登録</head> <body> <form action="" method="post"> <input type="submit" value="登録" /> <?php $context=<<<EOF <input type="text" name="name" /><br /> <input type="checkbox" value="" name="国語" />国語<br /> <input type="checkbox" value="" name="算数" />算数<br /> <input type="checkbox" value="" name="理科" />理科<br /> <input type="checkbox" value="" name="社会" />社会<br /> <input type="checkbox" value="" name="道徳" />道徳<br /> EOF; for($i=0;$i<4;$i++) {print $context;} ?> </body> </html> 上記コードを書くと5つループされます。 これをDBに登録する際、insert文を5回繰り返す、科目が複数チェックされていると1つのinsert文のように登録することが出来ません。1つの場合はforeachを使って配列を返す構文まではわかりました。 解決策としてはforeachを使って返された配列をserialize関数を使ってオブジェクト化し、そのまま登録することを考えました。出来ればserializeを使わずに登録したいと思います。 PDOを使用しています。 どうかどなたかお時間御座いましたらご教授お願いします。

    • 締切済み
    • PHP

専門家に質問してみよう