3

私は PHP で短いクイズを作成しています。これは、4 つのはい/いいえの質問に基づいて、どの生物について考えているかを示します。各質問への回答に応じて別の質問が表示されるように、主に switch ステートメントを使用してこれを行いました。

私の質問は、フォームの送信ボタンの ID として条件を使用して switch ステートメントを作成する方法はありますか?

      echo "<form method ='post' action='Creatures.php'>
     <input type='submit' name='answer' id='1' value='Yes' />
     <input type='submit' name='answer' id='2' value='No' />
     </form>";

これは私がボタンを表示するために使用しているフォームです。各ボタンが異なる ID を持つように作成したので、クイズの最後に、最後に押されたボタンの ID に応じて、右のボタンを表示できます。答え。以下は私がやろうとしたことですが、うまくいきませんでした。

switch($_POST['id'])
{
 case 1: echo "It's a goldfish";
 case 2: echo "It's a eel";
}

また、これらのフィールドは、Web ページ全体で ID を使用する唯一のフィールドです。必ずしも switch ステートメントを使用しなくても、これを適切に機能させる方法について何か提案はありますか?

4

8 に答える 8

3
switch($_POST['answer']) {

case 'Yes':
   // do soemthing
   break;
case 'No':
   // do something
   break;
}
于 2012-05-25T17:32:39.973 に答える
1

これには多くのエラーがあります。次のことを勉強してください。

echo '<form method ="post" action="Creatures.php">
<button name="answer" type="submit" value="Yes">Yes</button>
<button name="answer" type="submit" value="No">No</button>
</form>';

switch($_POST['answer'])
{
   case 'Yes':
        echo "It's a goldfish";
        break;
   case 'No':
        echo "It's a eel";
        break;
}

thisおよびthisも参照してください。

于 2012-05-25T17:34:53.047 に答える
0

これはうまくいきません。ブラウザがキーと値のペアの形式でフォームからサーバーにデータを送信するとき。キーはフォーム名で、値は入力の値です。

入力名の回答の値を取得するには、次を使用します$_GET['answer'];

これらは値であるため、「はい」または「いいえ」のいずれかになります。誰かがあなたのサーバーに任意のデータを送信する可能性があるため、エラーチェックも行う必要があります。yoursite.com/creatures.php?answer=somerandomstuffthatidontexpect

于 2012-05-25T17:32:12.767 に答える
0

jQuery/jsでやらないと苦労します。さまざまなブラウザはこれを異なる方法で解釈します(自分の経験)ので、jQueryの方法で行ってください:)

http://www.vancelucas.com/blog/ie6-and-multiple-button-submit-elements/ - これが役立つはずです

于 2012-05-25T17:35:00.193 に答える
0
<form method ='post' name="formAnswer1" action=''>
    <input type='submit' name='answer' value='Yes' />
</form>

<form method ='post' name="formAnswer2" action=''>
    <input type='submit' name='answer' value='No' />
</form>

<?php
switch($_POST['answer'])
{
   case 'Yes': echo "Yes";
   break;

   case 'No': echo "No";
   break;
}
?>
于 2012-05-25T17:43:53.173 に答える
0

How about this?

switch(key($_POST['answer']))
{
case 1: 
    echo "answer 1"; break;
case 2: 
    echo "answer 2"; break;
}
echo "<form method ='post' action='/tmp/test.php'>
<input type='submit' name='answer[1]' value='Yes' />
<input type='submit' name='answer[2]' value='No' />
</form>";

I think it works the way you want it to. But your approach is a bit counter-intuitive from programmers POV; consider using radiobuttons + submit button.

于 2012-05-25T18:02:27.203 に答える
0

自分のクラス リビジョンに $_GET を switch ステートメントで使用しようとしていました。これが私のために働いたものです。アイデアは、フォームに入力された成績に基づいて何かを表示することでした。

 <form action="processGrade.php" method "get">
 Enter your grade: <input type = "text" name ="grade">
 <input type = "submit">
 </form>

// 私の processGrade.php フォームで:

<?php
echo "You have entered: ".$mygrade = $_GET['grade'].". ";

switch($mygrade){

case 100:
    echo " Your grade is A";
    break;

case 70:
    echo " Your grade is B+";
    break;

default: echo "Ungraded";
}
?>
于 2016-08-16T22:57:47.603 に答える
0

あなたが必要

break;

各ステートメントの後、フォーム入力が間違っています(answerの代わりにid)。NAME 属性は、POST 配列のキーを決定するものです (ID はクライアント側の css および javascript のみです)。

そして tigrang が指摘したように、値は ID ではなく投稿されるものであるため、配列は次のようになります。

$_POST['answer']='はい'

だからあなたの声明は

switch($_POST['answer'])
{
 case 'Yes': echo "It's a goldfish";break;
 case 'No': echo "It's a eel";break;
}
于 2012-05-25T17:29:10.323 に答える