アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。下記のようなフォームがあります。
<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文で書きたいです。
宜しくお願いします

A 回答 (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;

}
?>
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/03/29 09:41

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

こうしてください
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!