【问题标题】:Using PHP MySQL to grab data for a form, but having issues in $_POST使用 PHP MySQL 获取表单数据,但在 $_POST 中出现问题
【发布时间】:2012-02-21 02:24:58
【问题描述】:

好的,我确定我遗漏了一些简单的东西,但是我正在使用 MySQL While 语句中的数据填充表单上的隐藏字段。数据在页面上正确显示,但提交时,提交的数据总是来自最后加载的id。

while ($row = mysql_fetch_assoc($result)) {
    $id = $row['id'];
    echo '<form name="voting" action="thanks_for_voting.php" method="POST">
    <align="right"><input type="hidden" name="id" value="'.$id.'"
    <br><input type="submit" value="VOTE FOR '.$id.'"><br>';
}

我做错了什么?我试图保持对我的数据库的一次调用以防止过载,我认为必须有一种简单的方法来实现我的目标?但是什么?

Machineadict 通过注意到我没有关闭我的表单解决了我的问题。我关闭了它,问题就解决了。谢谢!

【问题讨论】:

    标签: php mysql forms


    【解决方案1】:

    表单标签未关闭。丢失 html 标签,您不需要它们。并且可以循环使用表单,不必更改输入的名称。

    【讨论】:

    • 你明白了!我忘了关闭我的表单,所以它一直处于打开状态!
    【解决方案2】:

    正如 machineaddict 所说,如果你想使用多个表单,你必须在打开下一个之前关闭前一个的标签。

    您也可以使用具有单个隐藏字段的单个表单来执行此操作,根据单击的按钮为其分配特定值:

    echo '<html><form name="voting" action="thanks_for_voting.php" method="POST"><align="right">';
    echo '<input type="hidden" name="id" value="-1">';
    while ($row = mysql_fetch_assoc($result)) {
      $id = $row['id'];
      echo '<input type="button" value="VOTE FOR '.$id.'" onclick="javascript:document.forms[\'voting\'].elements[\'id\'].value='.$id.'; document.forms[\'voting\'].submit();">';
    }
    echo '</form></html>';
    

    在这里,您可以为数据库中的每个 ID 提供一个按钮。每个按钮在其 onclick 处理程序中执行以下 JavaScript 代码:

    document.forms['voting'].elements['id'].value = YOUR_ID;
    document.forms['voting'].submit();
    

    这会将 ID 设置为所需的值,然后提交表单。您可能希望将此代码放在一个函数中,并将该函数的名称放入 onclick 处理程序中。

    另外,您可能不想生成多个&lt;html&gt; 标签。

    【讨论】:

    • 你认为最简单的方法是在循环中完成它?我按照设计在每个循环中输出 3 个结果。
    【解决方案3】:

    您的 &lt;form&gt; 在 while 循环内。正如 Adam Zalcman 所说,使用唯一的名称。

    试试

    echo '<html><form name="myform" action="thanks_for_voting.php" method="POST"><align="right">';
    while ($row = mysql_fetch_assoc($result)) {
      $id = $row['id'];
      echo '<input type="hidden" name="id[]" value="'.$id.'"><br><input type="submit" value="VOTE FOR '.$id.'">';
    }
    echo '<br></html>';}
    

    这将发布一个值数组,您可以将其检索为$_POST['id'][0]$_POST['id'][1]

    【讨论】:

    • 实际上。这是错误的。我错过了你想要做的事情的重点。
    • 我的目标是在页面上有三个提交按钮,每个按钮对应一个不同的项目,包含唯一的 id。这样,当用户单击“投票给___”按钮时,它会将来自该项目的 id 数据提交到下一页。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 2013-10-21
    • 2012-05-16
    • 1970-01-01
    相关资源
    最近更新 更多