数据库驱动表单中的多个“提交”按钮

时间:2012-04-11 02:21:16

标签: php mysql forms dynamic submit

好的人,

我正在尝试显示数据库表的内容以及REMOVE或PUSH按钮。 REMOVE按钮将从数据库中删除所述项目。 PUSH按钮将项目推送到另一个数据库,然后通过将变量设置为true来标记该项目。

我有连接和while循环回显数据库中的每个项目以及REMOVE按钮和PUSH按钮。回声看起来像这样:

echo '<form method='post' name='$ID' action='$_PHP_SELF'>
    <tr>
        <td width='5%' align='center'>$ID</td>
        <td width='75%'>$content</td>
        <td width='10%' align='center'><input type='submit' name='remove' id='remove' value='REMOVE'></td>
        <td width='10%' align='center'><input type='submit' name='push' id='push' value='PUSH'></td>
    </tr>
</form>';

我遇到的问题是如何设置一个简单的提交代码,该代码将检查表单并推送或删除该特定项目。如果/ Else或Switch语句不起作用,因为我期待数十个数据库条目,并且我希望提交代码本身也是动态的。

我开始时:

if(isset($_POST['push'])){
 echo "PUSH ".$ID." TO DATABASE";
}

if(isset($_POST['remove'])){
 echo "REMOVE ".$ID." FROM DATABASE";
}

但这两个都只返回最后一个$ ID变量。

提前感谢。

3 个答案:

答案 0 :(得分:2)

使用自己的两个按钮,将每个相关的行设置为自己的形式。他们都可以提交到同一页面。此外,将ID保存在隐藏字段中(并验证服务器端),而不是表单名称。

答案 1 :(得分:2)

一个简单的解决方案是将HTML输出更改为两个表单,每个表单一个提交。你可以保持你的PHP完全一样。

编辑:为了动态获取按下按钮的ID,然后添加一个带有ID的隐藏数据字段,如下所示:

<tr>
    <td width='5%' align='center'>$ID</td>
    <td width='75%'>$content</td>
    <td width='10%' align='center'>
        <form method='post' action='$_PHP_SELF'>
            <input type='hidden' value='$ID' name='id'>
            <input type='submit' name='remove' id='remove' value='REMOVE'>
            </form>
    </td>
    <td width='10%' align='center'>
        <form method='post' name='$ID' action='$_PHP_SELF'>
            <input type='hidden' value='$ID' name='id'>
            <input type='submit' name='push' id='push' value='PUSH'>
        </form>
    </td>
</tr>

然后,您的PHP将是:

$ID=mysql_real_escape_string($_POST['id']); //Encapsulate in this function to prevent bad IDs causing SQL injections.
if(isset($_POST['push'])){
 echo "PUSH ".$ID." TO DATABASE";
}

if(isset($_POST['remove'])){
 echo "REMOVE ".$ID." FROM DATABASE";
}

答案 2 :(得分:0)

按照本教程创建复选框系统和php处理器。 Php Checkboxes

你可以通过以下两种方式之一做到这一点。如果您希望用户能够一次删除多个项目,您可以这样做。

让用户通过复选框选择任意数量的行。然后点击“REMOVE”或“PUSH”按钮,将其发送到另一页,每行都有进程。

另一种方法是在每行旁边有一个REMOVE和PUSH按钮,一次删除或推送一行。我会推荐第一种方法。如果您按照该指南进行操作非常直接。