こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

投稿日時 - 2008-03-28 16:44:26

QNo.3902353

困ってます

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

こんにちは、

以下でどうですか?


/*
* 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;

}
?>

投稿日時 - 2008-03-28 20:34:59

お礼

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

投稿日時 - 2008-03-29 09:41:43

ANo.2

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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 "ココがデフォルト表示";
}

こうしてください

投稿日時 - 2008-03-28 17:15:18

あなたにオススメの質問