Php 如何在页面上发布所有单击的按钮?

Php 如何在页面上发布所有单击的按钮?,php,post,button,Php,Post,Button,我有一个用户可以提问的页面。 当他们转到下一页时,我需要进行mysql查询,并将所有问题发布到数据库中。我使用jquery隐藏答案,并在单击相应按钮时显示它们 页面的结构如下所示: <!-- questions.php --> <form action="submitquestions.php" method="post"> <div> <span>This is a question</span> &l

我有一个用户可以提问的页面。 当他们转到下一页时,我需要进行mysql查询,并将所有问题发布到数据库中。我使用jquery隐藏答案,并在单击相应按钮时显示它们

页面的结构如下所示:

<!-- questions.php -->

<form action="submitquestions.php" method="post">
   <div>
      <span>This is a question</span>
      <button name="question" value="question1">Ask the question</button>
      <span>This is the answer</span>
   </div>
   <div>
      <span>This is a question</span>
      <button name="question" value="question2">Ask the question</button>
      <span>This is the answer</span>
   </div>
   <div>
   ....
   </div>
   <button name="submit">Go to the next page</button>
</form>

<!-- submitquestions.php -->
<?php if (isset($_POST['submit'])) {

        var_dump($_POST);

} ?>

这是一个问题
提问
这就是答案
这是一个问题
提问
这就是答案
....
转到下一页

如何将所有单击的按钮放入$\u POST数组,并以这种方式将数据提交到我的数据库?

考虑使用复选框?您也可以使用jQuery很好地设置它们的样式。无论如何,你真的不应该使用
s

只需使用
,然后使用。确保在检查完后将其禁用,这样它就不会被撤消

然后在PHP中,检查
if(isset($\u POST['question1']){
以查看是否选中了一个框

感谢您的评论反馈。

如果您使用
按钮文本显示在此处
,则您可以使用
$\u POST[“此按钮的唯一名称显示在此处”]==1

至少在理论上你可以。8版之前的Internet Explorer错误地处理了
标记。在Internet Explorer 6中,如果你使用
标记,基本上不可能确定单击了哪个按钮

以下是我的解决方案:

<form action="submitquestions.php" method="post">
   <div>
      <span>This is a question</span>
      <input type="checkbox" name="question[]" value="question1" style="display:none">
      <button>Ask the question</button>
      <span>This is the answer</span>
   </div>
   <div>
      <span>This is a question</span>
      <input type="checkbox" name="question[]" value="question2" style="display:none">
      <button>Ask the question</button>
      <span>This is the answer</span>
   </div>
   <div>
   ....
   </div>
   <button name="submit">Go to the next page</button>
</form>
<script>
  $(document).ready(function(){
    $("form button").click(function(){
       $(this).prev(":checkbox").attr("checked", true);
    });
  });
</script>

<!-- submitquestions.php -->
<?php if (isset($_POST['submit'])) {
    if(!isset($_POST['question'])) $_POST['question'] = array(); //Just in the case no button is pressed
    //$_POST['question'] will have an array of all clicked questions.
    var_dump($_POST);

} ?>

这是一个问题
提问
这就是答案
这是一个问题
提问
这就是答案
....
转到下一页
$(文档).ready(函数(){
$(“表单按钮”)。单击(函数(){
$(this.prev(“:checkbox”).attr(“checked”,true);
});
});
正如您所看到的,我们在每个按钮后面使用“隐藏”复选框,在按下按钮时进行检查。而且,由于我们的按钮没有名称,但复选框有名称,因此我们只将选中的复选框发送到服务器


$\u POST['question']
将有一个所有单击问题的数组。每个问题不需要设置“isset”

您需要收集每个问题的回答吗?如果需要,您是如何收集的?关于
$\u POST['question1']=='on'
-我会使用
isset($\u POST['question1'])
。如果按钮被多次单击,此解决方案将是一个问题。在第一次单击后使用一些js禁用按钮可能是一个解决方法。我也同意binaryLV关于使用isset的看法,这比检查其值是否为“开”要好得多。好的解决方案:)那也会起作用!感谢您对“不需要每个问题设置isset”部分-如果用户不选中任何复选框怎么办?@binaryLV不需要每个问题设置isset,但需要每个数组设置isset以防万一。我会编辑它以使其更清晰,谢谢