- 締切済み
checkboxの代わりにbutton
はじめまして、現在PHP勉強しているものです。 したのコードのcheckboxのかわりにbuttonを使ってデータの受け渡しをしたいのですが・・・ <html> <head> <title></title> </head> <body> <form name="form1" method="POST" action="ppp2.php"> <niput type="checkbox" name="ringo" alt="林檎"> <input type="submit" name="123" value="次へ"> </body> </html> 林檎のボタンを押して送信ボタンを押して次に”林檎をクリックされました”とを表示させるのは難しいのでしょうか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- hkd9001
- ベストアンサー率48% (99/204)
ojirin さん、こんにちは。 さて私の作ってみたサンプルです。こんなイメージ(動作が)でいいのかしら? ------------送り側-------------- <html> <hrad> <title>果物を入力してください</title> </head> <body> <form name="Myform" action="qqq2.php" method="POST"> <input type="hidden" name="Q1" value=""><br> <INPUT TYPE="button" VALUE="林檎" ONCLICK="Myform.Q1.value += 'ringo,';"><br> <INPUT TYPE="button" VALUE="蜜柑" ONCLICK="Myform.Q1.value += 'mikan,';"><br> <INPUT TYPE="button" VALUE="メロン" ONCLICK="Myform.Q1.value += 'meron,';"><br> <input type="reset" value="クリア" name="reset"> <input type="submit"> </form> </body> </html> ------------受け側-------------- <html> <head> <title>好きな果物結果</title> </head> <body> <?php if($_POST['Q1'] != ""){ $kudamono = split(",",$_POST['Q1']); //選択されたラジオボタンの value の内容を表示する for( $i = 0; $i < count( $kudamono ) - 1; $i ++ ){ if($kudamono[$i]=='ringo') { print"なし<br>"; }else if($kudamono[$i]=='mikan'){ print"体がだるい<br>"; }else if($kudamono[$i]=='meron'){ print"寒気がす<br>"; } } } else { print("データをいれて"); } ?> </body> </html>
- moon_night
- ベストアンサー率32% (598/1831)
>例えば、リンゴのボタンとメロンのボタンを押したあとに送信ボタンをおすと、次の画面でリンゴがクリックされたときの画面、メロンがクリックされたときの画面、両方押した時の画面を表示できるようにしたいです。 ということは、Javascriptを使用しないと不可能です。 通常のボタンは押した時点で送信されてしまいますから。 以下サンプル。動作確認済み <html> <hrad> </head> <body> <?PHP if ($_POST['ringo']) { print $_POST['ringo'] ."をクリックされました<br>\n"; } if ($_POST['mikan']) { print $_POST['mikan'] ."をクリックされました<br>\n"; } ?> <form name="Myform" action="ppp2.php" method="POST"> <input type="hidden" name="ringo" value=""><br> <input type="hidden" name="mikan" value=""> <INPUT TYPE="button" VALUE="林檎" ONCLICK="Myform.ringo.value = '林檎';"><br> <INPUT TYPE="button" VALUE="蜜柑" ONCLICK="Myform.mikan.value = '蜜柑';"><br> <input type="submit"> </form> </body> </html> この辺が参考になるかもしれません http://www.tryhp.net/dynamic02.htm http://www.tagindex.com/cgi-lib/q4bbs/patio.cgi?mode=view&no=815
補足
サンプルコードありがとうございます。 こちらでも動作の確認できました。やはりJavaスクリプトでしたか^^; いただいたコードを参考に配列をやりたいんですが、うまくいかないです;; <html> <hrad> <title>果物を入力してください</title> </head> <body> <form name="Myform" action="qqq2.php" method="POST"> <input type="hidden" name="Q1[]" value=""><br> <INPUT TYPE="button" VALUE="林檎" ONCLICK="Myform.Q1.value = 'ringo';"><br> <INPUT TYPE="button" VALUE="蜜柑" ONCLICK="Myform.Q1.value = 'mikan';"><br> <INPUT TYPE="button" VALUE="メロン" ONCLICK="Myform.Q1.value = 'meron';"><br> <input type="reset" value="クリア" name="reset"> <input type="submit"> </form> </body> </html> 受け取り <html> <head> <title>好きな果物結果/title> </head> <body> <?php if( isset( $_POST[ 'Q1' ] ) ){ $kudamono = $_POST[ 'Q1' ]; //選択されたラジオボタンの value の内容を表示する for( $i = 0; $i < count( $kudamono ); $i ++ ){ if($kudamono[$i]==val1) { print"なし"; }else if($Qkudamono[$i]==val2){ print"体がだるい"; }else if($Qkudamono[$i]==val3){ print"寒気がす"; } else { print("データをいれて"); } } } ?> </body> </html> 以上が作ったコードです。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
buttonが押された時にsubmitと同じ動作をさせたいなら onclick="submit()"しちゃえばいいと思います。 次へボタンではデータを転送し、ringoボタンではデータを転送しないのですか? データを転送(ページ切り替え)せず、「林檎が押された」という文字を出力したいのですか? クライアント側の話かサーバ側の話なのか、フローが見えません。 個人的には、例えが出すぎで混乱しちゃってます。 やろうとしているソースを出してもらった方が早いです。
- fake-tang
- ベストアンサー率24% (186/772)
私もまだまだ勉強中ではありますが。 <html> <body> <form action="ppp2.php" method="POST"> <input type="submit" name="apple" value="リンゴ"> <input type="submit" name="melon" value="メロン"> </form> <?php if ($_POST['apple']) {print $_POST['apple'] ;} elseif ($_POST['melon']) {print $_POST['melon'] ;} ?> </form> </html> でしょうか?
補足
返信ありがとうございます。 おそらくそれでもできるんですが、submitではなくbuttonでやりたいのです。 例えば、リンゴのボタンとメロンのボタンを押したあとに送信ボタンをおすと、次の画面でリンゴがクリックされたときの画面、メロンがクリックされたときの画面、両方押した時の画面を表示できるようにしたいです。
- moon_night
- ベストアンサー率32% (598/1831)
少し意味がわかりませんが、 質問のHTMLから「林檎」をチェックしてsubmitした場合 「林檎をクリックされました」 と表示すれば言いだけなら簡単です。 ppp2.php の中身を <?PHP if($_POST['ringo']){ print $_POST['ringo'] ."をクリックされました"; } ?> とするだけです。 ただし、基のHTMLが間違っていますので、修正してください。 <niput type="checkbox" name="ringo" alt="林檎"> ↓ <input type="checkbox" name="ringo" value="林檎">
補足
さっそく回答ありがとうございます。 上のコードはcheckboxでかいてますが、そこをbuttonに変えてフォームを作りたいんです。 <iniput type="checkbox" name="ringo" alt="林檎"> ↓ <iniput type="button" name="ringo" alt="林檎"> checkboxではできたんですが、どうしてもbuttonでは出来なくて・・・ 分かりにくい説明で申し訳ございません^^;
お礼
返事が送れてすみませんでした。 頂いたコードを参考にしたら、うまく動きました。 このコードを応用しながら、さらに技術向上をめざします。 いままで回答していただいた皆様ありがとうございます。