2016-05-16 194 views
1

我有一个web应用程序的投票,我建设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每个提交按钮是VOTE - 这不能改变 。所以,我从服务器获取如下:

[email] => [email protected] 
[voteOption1] => VOTE 

我需要知道他们投票支持(如voteOption1)的选项。 是的,HTML可以改变。

你会如何解决这个问题?

+0

他们投了票voteOption1,这是传递给你的表单处理程序的关键。这是最直接的答案,不是吗? – WillardSolutions

+0

问题是,代码是如何生成的?动态无疑,所以你可能需要发布。你可能可以使用一个键来数组方法。如果它不是动态生成的,那么为什么不设置不同的值呢?这里不清楚。 –

回答

1

使用HTML 4提交按钮而非HTML 3.2提交按钮。然后你可以有不同的值并显示文字。

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

是真的,但是如果它们的表单是动态生成的呢?这个问题到目前为止还不清楚。 –

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

etc ..?

+0

我相信他们的代码是动态完成的,他们没有显示它。我确信他们想到了这一点,但它需要动态构建。否则,他们不会发布这个问题。 –

+0

这不是我downvote这里顺便说一句。 –

+0

我讨厌downvotes没有评论解释。 我发布它的原因是因为它没有在问题中说什么可以改变,也不能改变。 – Loek

0

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

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

我以前的解决方案与此类似,但它非常难看难以维护。 –

+0

当然它很丑,但它是这个问题的直接解决方案。 – smozgur

+0

但是,如果其中一个选项发生变化,那就不好了。 –

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] => [email protected] 
[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; 
    } 
} 

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

+0

哪种类似于我在那里建议的;-) –

+0

@ Fred-ii-是的,我打这个答案,因为你显然写你的评论:) –

+0

总是很高兴知道它是有用的;-) *干杯查克* –