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

此外,这些字段是唯一在整个网页中使用 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;
}

还看到这个这个

于 2012-05-25T17:34:53.047 回答
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 回答
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

这个怎么样?

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

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

于 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 回答