PHP - 使用表单输入中的 id 进行切换语句


PHP - making a switch statement using id from form input

我正在用PHP做一个简短的测验,根据4个是/否问题告诉你你的想法。我已经做到了,根据您对每个问题的回答,您将被带到不同的问题,我主要使用 switch 语句来做到这一点。

我的问题是,有什么方法可以将条件作为表单提交按钮中的 id 进行切换语句?

      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";
}

此外,这些字段是唯一在整个网页中使用id的字段,关于如何使其正常工作的任何建议,不一定使用switch语句?

switch($_POST['answer']) {
case 'Yes':
   // do soemthing
   break;
case 'No':
   // do something
   break;
}

这有很多错误。请学习以下内容:

echo '<form method ="post" action="Creatures.php">
<button name="answerswer" type="submit" value="Yes">Yes</button>
<button name="answerswer" 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;
}

另请参阅此和此。

这是行不通的。 当浏览器以键值对的形式将数据从表单发送到服务器时。键是表单名称,值是输入的值。

因此,要获取输入名称答案的值,请使用$_GET['answer'];

它会给你"是"

或"否",因为这些是值。您还应该进行一些错误检查,因为人们可以将任意数据发送到您的服务器,例如有人可能会访问yoursite.com/creatures.php?answer=somerandomstuffthatidontexpect

除非你用jQuery/js来做,否则你会很挣扎。不同的浏览器会以不同的方式解释这一点(自己的经验),所以只需使用jQuery方式:)

http://www.vancelucas.com/blog/ie6-and-multiple-button-submit-elements/- 这应该会有所帮助

你需要

break;

在每个语句之后,您的表单输入是错误的(answer而不是id)。NAME 属性决定了 POST 数组中的键(ID 仅适用于客户端 css 和 javascript)。

正如 tigrang 所指出的,值是正在发布的内容,而不是 ID,因此数组如下所示:

$_POST['答案']='是'

所以你的陈述将是

switch($_POST['answer'])
{
 case 'Yes': echo "It's a goldfish";break;
 case 'No': echo "It's a eel";break;
}
<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;
}
?>

这个怎么样?

switch(key($_POST['answer']))
{
case 1: 
    echo "answerswer 1"; break;
case 2: 
    echo "answerswer 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>";

我认为它按照您想要的方式工作。但是你的方法有点违反程序员的直觉 POV;考虑使用单选按钮 + 提交按钮。

我试图将 $_GET 与 switch 语句一起使用,用于我自己的类修订。这就是对我有用的东西。这个想法是根据在表单上输入的成绩显示一些东西。

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

在我的流程等级.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";
}
?>