• ベストアンサー

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文で書きたいです。 宜しくお願いします

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

  • ベストアンサー
  • exists
  • ベストアンサー率62% (27/43)
回答No.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; } ?>

noname#227352
質問者

お礼

有り難うございます。 思い通りの結果になりました。 本当に有り難うございました。

その他の回答 (1)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

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 "ココがデフォルト表示"; } こうしてください

関連するQ&A