提交包含多个提交值的表单

时间:2016-05-16 14:10:12

标签: php html forms

我有一个投票的webapp我用PHP构建,我正在寻找一个直接解决这个简单问题的方法(我认为这是一个非常有趣的问题!):

投票表格要求您输入您的电子邮件地址进行投票。我需要每个投票选项都是一个提交按钮。

在伪HTML中,它看起来像这样:

<form>
  <input type=email>
  <input type=submit name=voteOption1 value=VOTE> 
  <input type=submit name=voteOption2 value=VOTE>
  <input type=submit name=voteOption3 value=VOTE>
</form>

这样做除了一件事情很好:你会注意到每个提交按钮的value是投票 - 这不能改变。所以我从服务器上得到以下信息:

[email] => hello@example.com
[voteOption1] => VOTE

我需要知道他们投票选出哪个选项(例如voteOption1)。 是的,HTML可以更改。

你会如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

使用HTML 4提交按钮而不是HTML 3.2提示按钮。然后,您可以拥有不同的值并显示文本。

<button name="vote" value="Option 1">
    VOTE
</button>

答案 1 :(得分:1)

感谢您的回答。解决此问题的另一种方法是发送表单数组。例如:

<form>
  <input type=email>
  <input type=hidden name=voteOption1[option] value=voteOption1>
  <input type=submit name=voteOption1[submit] value=VOTE> 
  <input type=hidden name=voteOption2[option] value=voteOption2>
  <input type=submit name=voteOption2[submit] value=VOTE> 
  <input type=hidden name=voteOption3[option] value=voteOption3>
  <input type=submit name=voteOption3[submit] value=VOTE> 
</form>

所以我从服务器获得以下内容:

[email] => hello@example.com
[voteOption1] => Array
    (
        [option] => voteOption1
        [submit] => VOTE
    )

[voteOption2] => Array
    (
        [option] => voteOption2
    )

[voteOption3] => Array
    (
        [option] => voteOption3
    )

然后你可以简单地查找提交:

foreach ($submittedForm as $data) {
    if (array_key_exists ('submit', $data)) {
        $request->option = $data['option'];
        break;
    }
}

这样做的缺点是所有元素都已提交,但在这种情况下,这不是问题。

答案 2 :(得分:0)

我是错了还是您确实需要检查点击了哪个提交按钮?

if (isset($_POST['voteOption1']) {
    // VoteOption1 Clicked
} elseif (isset($_POST['voteOption2']) {
    // VoteOption2 Clicked
} elseif (isset($_POST['voteOption3']) {
    // VoteOption3 Clicked
}

答案 3 :(得分:-2)

<input type=submit name=voteOption1 value=VOTE1>
<input type=submit name=voteOption2 value=VOTE2>

等。?