给定复选框,如何删除相应的数据库行?

时间:2012-06-14 16:31:36

标签: mysql html perl datatable

我正在尝试使用Perl从网页中删除MySQL表行。我想迭代复选框,如果选中一个复选框,将删除数据库中的该行。我已将复选框的值设为自动递增键值。这是我的一段代码,所以你可以逐步了解我所处的位置:

while (@data = $STH1->fetchrow_array()) {
    print "<tr>";
    print " <td>$data[2]</td>";
    print " <td>$data[3]</td>";
    print " <td>$data[7]</td>";
    print " <td>$data[6]</td>";
    print " <td>$data[4]</td>";
    print " <td>$data[5]</td>";
    print " <td>$data[1]</td>";
    print "<td>";
    print '<form><center>';
    print checkbox(
        -name     => 'delete',
        -value    => 'data[0]',
        -selected => 0,
        -label    => 'delete'
    );
    print '<center></form>';
    print "</td>";
    print "</tr>";
}

如果选中复选框,我只是不明白如何删除它。

4 个答案:

答案 0 :(得分:0)

使用CGI,创建一个form,其中包含所有复选框。

然后再由另一个脚本CGI读取提交的表单值,并根据所选复选框执行SQL delete命令以从表中删除请求的行。

请务必使用唯一的id列作为表单复选框的标识符。

答案 1 :(得分:0)

我相信您对复选框的调用需要稍微调整一下:

print checkbox(
    -name => 'delete',
    # -value => 'data[0]'
    # should be
    -value => $data[0],
    # do you need this ?
    # -selected => 0,
    -label => 'delete'
);

然后在你的cgi或对象中:

my @ids_to_delete = $q->param( 'delete' );

将为您提供按ID删除的行,然后您只需构建&amp;运行你的删除声明。

答案 2 :(得分:0)

您希望将数据发布到第二个perl脚本。 在第二个perl脚本中,您将该行作为查询参数选取。 您具有要删除的行的ID。 然后使用其中包含SQL的id调用deleteRow函数。

我现在正在使用http://template-toolkit.org/基本完成您所描述的内容。

答案 3 :(得分:0)

将你的表单放在循环中,这样你就可以为每个复选框创建一个不同的表单。

如果您想支持多次删除,则必须在循环外移动表单打开和关闭标记。

然后在循环中添加隐藏的输入。使用“id”作为隐藏名称,使用“delete”作为复选框。

我不确定cgi但你应该把表格作为两个字段的二维数组返回。循环收集。如果复选框存在并且已选中(有时您没有取回未选中复选框),请查找ID。然后将id添加到列表中并继续循环。

然后从列表中创建删除语句。检查以查看已删除的行数并将该消息返回给您的用户。

希望有帮助...