我正在用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";
}
?>