複数ボタンの入力テスト(サンプル)
ページにいっぱいボタンが配置されている時に
「どのボタンが押されたのか?」を判別するサンプルプログラムです
forやwhileで複数のボタンを設置した時の判別
設置したボタンが2つとか3つとかの場合は
if(isset($_POST['submit1'])){ ボタンを押したときの処理; } if(isset($_POST['submit2'])){ ボタン2を押したときの処理; }なんて書いたらいいけど・・・・・
「ボタンがいっぱいあってそんなのいちいち書いてられない!!」
っていう人がきっとこのページを訪れるんだと思う
PHPでどのボタンが押されたかを判別する方法は
色々あるんですが、下の書き方が簡単かな?
ふつうは、value=には、データベースからの戻り値なんかが入るかな?
key関数で押されたボタンを判別 1つのページでボタンを複数設置した場合
(forやwhile文で複数設置したボタンを判別する)<meta charset="UTF-8"> //ボタンテスト <?php $mes = array('りんご','オレンジ','メロン','パイナップル'); $idname = array('ID1','ID2','ID3','ID4'); if(isset($_POST['submit'])){ $button = key($_POST['submit']); //$buttonには押された番号が入る $newmes = $_POST['test'][$button]; $newid = $_POST['hidden'][$button]; echo '入力されたのは'.$newmes.'<br />'; echo 'hidden属性は'.$newid; } //フォーム部分 echo '<form method="post" action="">'; $i=0; while($i<4){ echo '<input type="text" name="test['.$i.']" value="'.$mes[$i].'">'. '<input type="hidden" name="hidden['.$i.']" value="'.$idname[$i].'">'. '<input type="submit" name="submit['.$i.']" value="ボタン"><br />'; $i++; } echo '</form>'; ?>
忘れやすいのでメモ(補足説明)
PHPでfor文などで1つのページに複数ボタンを設置した場合のボタンの判別
- input typeのボタンやテキストのname部分を配列にしとく
- if($_POST['submit'])の時、key関数を使ってどのボタンが押されたかを判別
- 配列を使って取り出す
- 後はお好きなように・・・
- ちなみにセキュリティーは考慮されてません(エスケープして下さい)