- ベストアンサー
phpのswitch文
お世話になります。下記のようなフォームがあります。 <form method="post"><input type="submit" value="新規登録" name="registration"><form method="post"><input type="submit" value="一覧" name="list"></form> 新規登録と一覧、2つのボタンがあるのですが押されたボタンによって処理を区別したいです。 データを受け取るPHP内に下記のように記述したのですが思い通りの結果になりません。アドバイスを宜しくお願いします。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー <?php switch(ココの記述が判りません){ //新規登録画面を表示 case "registration": print "新規登録!"; break; //一覧を表示 case "'list', )": print "一覧表示"; break; default: print "ココがデフォルト表示"; } ?> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー if文だとif(isset($_POST["registration"])){の記述で分岐できたのですが、条件分岐が多いのでswitch文で書きたいです。 宜しくお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、 以下でどうですか? /* * switch.php *-----------------------------------------*/ <form method="post" action="switch.php"> <input type="submit" value="新規登録" name="registration"> <input type="submit" value="一覧" name="list"> </form> <?php switch(true){ case(isset($_POST['registration']) and $_POST['registration'] == "新規登録" ): print "新規登録!"; break; case(isset($_POST['list']) and $_POST['list'] == "一覧" ): print "一覧"; break; } ?>
その他の回答 (1)
- inu2
- ベストアンサー率33% (1229/3720)
HTMLの文法がまちがっていますが、これは単に記述ミス? <form> が2つあるのに、 </form>が最後にひとつしかありませんよ。 もしかしたらif文で書いていたときには こうやっていませんでしたか? if( isset($_POST["registration"]) ) { }elseif( isset($_POST["list"] ) ) { }elseif( isset($_POST["default"] ) ) { } もし、上記のようなif文を使っていたとしたら、if文の文法上は動きますし正しいのですが、 if文の本質としては 倫理に反してます switchはあくまでも、 1つの変数(又は式)に対しての評価しかできません ですから、上記のようなIF文を使っていたとしたら、switch文に置き換えることは不可能です ですから HTMLを <form method="post"> <input type="hidden" value="registration" name="mode" /> <input type="submit" value="新規登録" name="submit" /> </form> <form method="post"> <input type="hidden" value="list" name="mode" /> <input type="submit" value="一覧" name="submit" /> </form> このようにします。 PHPを $mode = $_POST["mode"]; switch($mode){ //新規登録画面を表示 case "registration": print "新規登録!"; break; //一覧を表示 case "list": print "一覧表示"; break; default: print "ココがデフォルト表示"; } こうしてください
お礼
有り難うございます。 思い通りの結果になりました。 本当に有り難うございました。