2011/07/13例えば、PHPでフォームを構築する場合など複数のボタンを設置して、それぞれサーバ処理を分けたい場合があります。具体的には、メールフォームで「送信してもよろしいですか?」といった確認画面では、「入力フォームに戻る」と「送信する」ボタンがあり、それぞれでサーバ処理を分岐させます。複数のsubmitボタンがある場合に、サーバ側でどのボタンが押されたかを取得したいときに、どのような処理が適当なのかを考えてみます。ちなみにこれから示す全てのコードは比較のために簡略化してあり、動作確認はとっていません。JavaScriptでポストするデータを分けるこれまで私は、主にJavaScriptでPOSTするデータを操作し、サーバ側でその内容を判定することで、処理を分岐していました。/></a>JSの処理の中身は省略しますが、関数back()とsend()で異なるパラメータを設定してsubmitします。すると、そのデータがPOSTされるので、PHP側でデータ内容を判定して処理を分岐すればいいわけです。JSではPOSTで送信するデータを自由に加工できるので、この方法では複雑な処理も可能になります。それぞれHTML、JS、PHPを実装する必要があり、どれか一つに記入ミスがあるとバグになり、また、デバッグするにもソースが煩雑になると解析がめんどくさいです。逆にデータ加工が必要ない場合は、HTMLからsubmitするだけなので、JSは不要です。そこで、JSを使わない、ボタン判定方法を考えてみました。フォームのsubmitをnameで判別するJavaScriptを使わずに、HTMLのみで押下されたボタンのPOST情報を判別する方法です。/>このように記述することで、PHPでは以下のような分岐が可能です。'「送信」ボタンが押されました!';}2つのボタンが同時に押され、両方ポストされることはないので、上記の方法で分岐可能です。この場合だと、ボタンに画像が指定できないので、デザインがダサくなります。CSSの背景画像を置いて装飾することは可能ですが、ボタン毎にスタイルを用意したり、ロールオーバー画像も指定するとなると、どうもスマートじゃないですね。フォームのimageをnameで判別するフォームをsubmitする方法に、フォームのimageを利用する方法があります。/>imageタイプのsubmitでは、画像のどの部分がクリックされたかを、x座標とy座標がPOSTされます。戻るボタンが押された場合、画像の左上を基準としてx軸は「$_POST[‘back_x’]」、y軸は「$_POST[‘back_y’]」という2つのデータが渡されます。そこで、先ほどと同様に、データの有無により以下のようなボタン判定が可能なわけです。'「送信」ボタンが押されました!';}この場合、デザインに応じた画像設置も用意ですし、マウスオンの設置も可能です。このような例を見たことがないので、正しいかどうか不安ですが。見ると、POSTだけでもデータ送信の方法にはいろいろあるんですね。他にもボタンを判定する方法はありますが、それぞれ長所と短所があるので、懸案に応じて適材適所といったところでしょうか。リックテレコムプログラミングは全く初めての人、他の入門書で挫折しちゃった人、つまづく所はみんな同じです。そこを徹底分析したメソッドで、全員ゴールに辿り着ける入門教室が秋葉原にあります。1日でWeb画面と簡単なDBまで作れるようになるとってもユニークな速習コース。その方法を1冊に凝縮した本書なら、いきなりの初心者でも、無理せず楽しくPHPとMySQLのエッセンスを習得できます。ソーテック社FuelPHPでのフレームワーク開発を基礎から解説!役立つコアクラスとパッケージを徹底詳解!自由に使えるサンプルプログラムで実例をあげながら解説!Webアプリ開発の効率を大幅アップ!統合開発環境でOS問わず開発可能。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。inc.Profileサイト「helog」は私がWeb制作に携わるなかでの経験を中心に記しています。前にも発生したんだよなぁ。」といった無駄な時間を省くことを目的に書き始めました。「へ」の「ログ」です。個人的な技術メモのようなものですが、みなさんの何か役に立つことがあればこの上ないです。