フォームから受け取った値をPHPで表示する方法とは?

このQ&Aのポイント
  • フォームで受け取った値を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
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5085/13293)
回答No.1

<?php if(isset($_POST["check"])){ echo implode ("と" , $_POST["check"]) . "が好きです。"; } ?>

okdayook
質問者

お礼

これはものすごくシンプルですね! こんな書き方もあるなんてびっくりしました。 implodeは少し前に見かけて調べてみたのですが 実際に使ってみないと どのような使い方ができるのか身につかないことが 身にしみて分かりました。 勉強になりました。ありがとうございました。

関連するQ&A

  • 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
  • PHP

    PHPで <p>曜日</p> <p> <input type="checkbox" name="youbi[]" value="1" <?php if(strstr($result[4],'1')) echo"checked"; ?>>月 <input type="checkbox" name="youbi[]" value="2" <?php if(strstr($result[4], '2')) echo"checked"; ?>>火 <input type="checkbox" name="youbi[]" value="3" <?php if(strstr($result[4],'3')) echo"checked"; ?>>水 <input type="checkbox" name="youbi[]" value="4" <?php if(strstr($result[4],'4')) echo"checked"; ?>>木 <input type="checkbox" name="youbi[]" value="5" <?php if(strstr($result[4],'5')) echo"checked"; ?>>金 <input type="checkbox" name="youbi[]" value="6" <?php if(strstr($result[4],'6')) echo"checked"; ?>>土 <input type="checkbox" name="youbi[]" value="0" <?php if(strstr($result[4],'0')) echo"checked"; ?>>日 </p> <p>時間</p> <p> <input type="submit" value="設定" /> とやると日曜日を選択してsubmitするとチェックが外れます。なぜでしょうか?

    • ベストアンサー
    • PHP
  • PHP 送信されたフォームについて

    HTMLから送信されたフォームがうまくうけとれないので質問させていただきます。 HTML側でチェックボックスを用いてphp側に送ったところうまく結果が反映されません。 HTML側で以下のソースを書き <input type="checkbox" name="kaitouran321" value="a">a <input type="checkbox" name="kaitouran322" value="b">b <input type="checkbox" name="kaitouran323" value="c">c php側で <?php print(htmlspecialchars($_POST['kaitouran321'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran322'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran323'], ENT_QUOTES, 'UTF-8')); ?> および <?php if($_POST['kaitouran321'] == 'a' && $_POST['kaitouran322'] == 'b' && $_POST['kaitouran323'] == 'c') ?> $i++; と書きました。htmlキャラはしっかり受け取ってくれるのですが、if文で書いた方は反応してくれません(iが+1されない)。選択肢がひとつの時、if文は反応するので条件の書き方がおかしいのでしょうか? 回答お願いします。

    • 締切済み
    • PHP
  • []を付けずにcheckboxの値を複数受信

    カテゴリをPHPとするか迷いましたが、 こちらに質問させていただきます。 <input type="checkbox" name="hiragana[]" value="a">あ <input type="checkbox" name="hiragana[]" value="i">い <input type="checkbox" name="hiragana[]" value="u">う とした場合、 $checked=$_POST['hiragana']; print_r($checked); などとして使えることはわかるのですが、 角括弧をつけず、 <input type="checkbox" name="hiragana" value="a">あ <input type="checkbox" name="hiragana" value="i">い <input type="checkbox" name="hiragana" value="u">う としたときに、同様に配列として取得する(すべてのチェックされた項目を取得する) 方法はあるのでしょうか? このようにした場合、 $checked=$_POST['hiragana']; print_r($checked); や print_r($_POST); すると、最後にチェックされた値しか入っていないようです。 (上書きされているようですが...) HTTPヘッダを見ると、 hiragana=a&hiragana=i&hiragana=u のように、すべて送信はされているのは確認できるのですが... 後者のような角括弧をつけていないタイプのcheckboxを使って ちゃんとチェックされた値をすべて受信して動作していると 思われるサイトを目にするので どうすればできるのかと思い質問させて頂きました。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • PHPでのフォームバリデートと値保持について

    いつもお世話になってます。PHP+Apache(+MySQL)の環境です。 フォーム(ラジオ、チェック、プルダウン、テキスト)に入力された内容をチェックし,すべて正しければ確認画面、間違いがあればフォーム画面にもどるが、その際、正しい項目の入力内容は保持したまま、さらに、間違いの項目に対して、エラーの内容を各項目のところ(ページ上部にまとめて表示するのではなく)に表示したいです。 要は、フォームの各種要素の値を保持する方法 と 入力規則の各種(値有無、条件合致等)チェックとフラグ表示をしたいです。 フォーム入力 └値有無チェック   ├全てあたいがあれば─内容確認┬送信(完了)   │                    └もどって修正(値保持したまま)   └値抜け、違反(チェックボックスで指定選択数オーバー、文字数オーバー等)があれば・・・      └入力画面にもどる(正しい項目は値保持、間違っている部分にはエラー内容のフラグ表示) <状況>フォームから値を受信し、空白の場合に当該項目に”未回答です!!”というメッセージを表示するところまでできています。違反なく入力されたところにメッセージは表示されませんが、値が消えます(保持されません)。 #vali.php if(!isset($_POST['exec'])){ include('temp/anc.php'); exit; } if(isset($_POST['exec'])){ function HTMLsc($str){中身省略します} $ErrorMsg = array(); $ErrorCnt = 0; for($i=1; $i<5; $i++){ $num = "q".$i; $$num = HTMLsc($_POST["$num"]); if(empty($$num)){ $ErrorMsg["$i"] = "未回答です"; $ErrorCnt++; }else{ /*この部分に作り込むのかなぁ?*/ } } if($ErrorCnt != 0){ include('temp/anc.php'); exit; } include('temp/comp.php'); } ----------- #anc.php <!-- 項目ごとに簡単に記述します --> <? if(isset($ErrorMsg[1])){echo $ErrorMsg[1];}?> <h3>問1.元気ですか?</h3> <input type="radio" name="q1" value="1">はい <input type="radio" name="q2" value="2">いいえ <? if(isset($ErrorMsg[1])){echo $ErrorMsg[1];}?> <h3>問2.朝なに食べた?</h3> <input type="checkbox" name="q2[]" value="1">ごはん <input type="checkbox" name="q2[]" value="2">パン <input type="checkbox" name="q2[]" value="3">みそ汁 <input type="checkbox" name="q2[]" value="4">牛乳 <? if(isset($ErrorMsg[1])){echo $ErrorMsg[1];}?> <h3>問3.起きてまず何する?</h3> <select name="q3"> <option value="1">顔洗う</option> <option value="2">歯磨く</option> <option value="3">ぼーっとする</option> </select> <input type="checkbox" name="q2[]" value="4">牛乳 <? if(isset($ErrorMsg[4])){echo $ErrorMsg[4];}?> <h3>問4.なんか書いて</h3> <input type="text" name="q4" value="<?php echo $_POST["q4"];?>"> <input type="submit" name="exec" value="終了・確認"> ※ラジオボタンの数、チェックボックスの数、プルダウン項目数は変化に耐えうる構造がよいです。参考サイトの紹介でもOKです。結構探しましたが単独での参考しかありませんでした

    • ベストアンサー
    • PHP
  • FORMの値を返す方法です。

    こんにちは。質問させてください。 フォームを作成したのですが思うような値を得られませんでした。チェックボックスA~Eの中で、たとえばAとCにチェックをいれて送信すると受信側に返される値は 「selection=A&selection=C&submit=~」となるのですが、これを 「selection=A,C&submit=~」というようにselection=を一つにまとめてカンマで区切って表示できたらと思っています。 どうかご存知の方がいらっしゃいましたら、教えてください。よろしくお願いします。 ------以下のように作成しました---------- <form method="post" action="mailto:@.ne.jp"> <br>選択<br> <input type="checkbox" name="selection" value="A">A<br> <input type="checkbox" name="selection" value="B">B<br> <input type="checkbox" name="selection" value="C">C<br> <input type="checkbox" name="selection" value="D">D<br> <input type="checkbox" name="selection" value="E">E<br> <input type="submit" name="Submit" value="送信"> <input type="reset" name="Submit2" value="リセット"> </form>

  • PHPのフォームの複数選択で。。。

    すいません当方PHPかなりの初心者で。。。。 入力→確認→送信のような流れのフォームを作成しているのですが。。。 メールフォームで複数選択が可能な場合フォームの受け取り側のPHPはどのように記載すればいいのでしょうか? □A □B □C □D □E □F ↑のようなフォームを作りチェックされたものを 【フォーム側】 <input type="checkbox" value="A" name="is[]">A <input type="checkbox" value="B" name="is[]">B <input type="checkbox" value="C" name="is[]">C <input type="checkbox" value="D" name="is[]">D <input type="checkbox" value="E" name="is[]">E <input type="checkbox" value="F" name="is[]">F 【確認画面のPHP】 // フォームの値を取得します。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ // 「magic_quotes_gpc = On」のときはエスケープ解除 if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $$k = $v; } } else { exit(); } //中略// // 確認画面表示箇所 <? $is_value = $_POST["is"]; foreach($is_value as $v){ echo $v ." <br> "; } ?> //中略// // 送信PHPへの受け渡し場所 <input type="hidden" name="service" value="<?= $is_value ?>"> ↑この部分の記載の仕方がわかりません。。。 確認画面で表示させたものを関数に格納して送信PHPの方に受け渡ししたいのですが。。。 どのようにどのあたりに記載したらいいのでしょうか? わかりにくい質問かもしれません。。。 なにとぞなにかお気づきの点がありましたらご教授ねがえると助かります。。。 よろしくお願いします。

    • 締切済み
    • PHP
  • フォームから受け取る値について

    フォームから送られてくる値に たまに予期しない内容が入ってくるのですが どういった原因が考えられますでしょうか? 具体的なフォームの内容は下記の通りで a,b,c以外の値が送られてくることがあります。 <FORM action="test.php" method=post> <INPUT type=checkbox name=chk[1] value=a> <INPUT type=checkbox name=chk[2] value=b> <INPUT type=checkbox name=chk[3] value=c> <INPUT type=submit value=OK> </FORM> ローカルにフォーム画面のHTMLをダウンロードし form actionとvalueを変更して実行すれば 送れると思いますが・・他に何かありますでしょうか? よろしくお願い致します。 環境:RedHat7.3+Apache1.3+PHP4.2.2

    • 締切済み
    • PHP
  • チェックボックスの初期選択と選択保持

    複数のチェックボックスのうちどれかを初期選択させ、ボタン押下後は選択保持をさせたいです。 片方のみならできるのですが、どなたかご教授いただけるとうれしいです。 現在のソースはこんな感じになっていて選択したものの保持はできるのですが、初期選択ができていません。よろしくおねがいします。 <html> <body> <form name="form" method="post"> <?php test1() ?> test1 <?php test2() ?> test2 <?php test3() ?> test3<br><br> <input type="submit" name="button" value="button"> </form> <?php function test1(){ if ($_POST['test1']){ echo "<input type=\"checkbox\" name=\"test1\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test1\">"; } } function test2(){ if ($_POST['test2']){ echo "<input type=\"checkbox\" name=\"test2\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test2\">"; } } function test3(){ if ($_POST['test3']){ echo "<input type=\"checkbox\" name=\"test3\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test3\">"; } } ?> </body> </html>

    • 締切済み
    • PHP
  • フォーム INPUTの文字化け対策の対処方は?

    チェックボックス(趣味のリスト)のチェック有無を配列で受けていますが、"パソコン"の文字が"パソ\コン"に文字化けしてしまいます。対処方法をお教えください。 <?php mb_language('Japanese'); $hobby=@implode(" ",$_POST[hobby]); echo $hobby; ?> <FORM action="<?=$_SERVER[PHP_SELF]; ?>" method="post" > <INPUT type="checkbox" name="hobby[]" value="旅行" >旅行<BR> <INPUT type="checkbox" name="hobby[]" value="温泉" >温泉<BR> <INPUT type="checkbox" name="hobby[]" value="ゴルフ" >ゴルフ<BR> <INPUT type="checkbox" name="hobby[]" value="パソコン" >パソコン<BR> <INPUT type="checkbox" name="hobby[]" value="ドライブ" >ドライブ<BR> <INPUT type="checkbox" name="hobby[]" value="写真" >写真<BR> <INPUT type="submit" name="submit" value="送信"><BR> <INPUT type="reset" name="reset" value="RESET"> </FORM>

    • ベストアンサー
    • PHP