我正在尝试使用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>";
}
如果选中复选框,我只是不明白如何删除它。
答案 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添加到列表中并继续循环。
然后从列表中创建删除语句。检查以查看已删除的行数并将该消息返回给您的用户。
希望有帮助...