簡體   English   中英

提交包含多個提交值的表單

[英]Submitting a form with multiple submit values

我有一個投票的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都是VOTE - 這是無法更改的 所以我從服務器獲得以下內容:

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

我需要知道他們投票的選項(例如, voteOption1 )。 是的,HTML可以更改。

你怎么解決這個問題?

使用HTML 4提交按鈕而不是HTML 3.2提示按鈕。 然后,您可以擁有不同的值並顯示文本。

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

謝謝你的回答。 解決此問題的另一種方法是發送表單數組。 例如:

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

這樣做的缺點是所有元素都已提交,但在這種情況下,這不是問題。

我是弄錯了還是你真的需要檢查點擊了哪個提交按鈕?

if (isset($_POST['voteOption1']) {
    // VoteOption1 Clicked
} elseif (isset($_POST['voteOption2']) {
    // VoteOption2 Clicked
} elseif (isset($_POST['voteOption3']) {
    // VoteOption3 Clicked
}
<input type=submit name=voteOption1 value=VOTE1>
<input type=submit name=voteOption2 value=VOTE2>

等等..?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM