我正在尝试创建一个批量删除按钮。我正在尝试输入一个输入字段,管理员可以指定他/她想要删除的行数。
到目前为止,我使用以下代码尝试删除输入字段中指定的数量,但没有任何反应,错误日志中没有错误:
helper.php
function deleteall($all) {
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->delete()
->from('#__shoutbox');
$db->setQuery($query, 0, $all);
$db->query();
}
mod_shoutbox.php
if(isset($post['deleteall'])) {
$all = $post['all'];
modShoutboxHelper::deleteall($all);
}
如default.php
<form method="post" name="deleteall">
<input name="all" type="text" value="" />
<input name="deleteall" type="submit" value="mass delete" />
</form>
我相信SQL查询很好,问题与 default.php 中的HTML有关,但不是100%肯定。有人可以让我知道我哪里出错吗?
更新
$post
已被定义为我正在使用Joomla编码标准。
答案 0 :(得分:1)
我猜你想要做的事情由于以下原因而无法完成。如何告诉db要删除哪些行?你显然应该有一个过滤器。 EG:DELETE FROM table_name WHERE ID BETWEEN 1 AND 2999
。这里的行只有1和1之间的ID。 2999已删除。
其他你想要的是LIMIT
。 EG:DELETE FROM table_name WHERE ID BETWEEN 1 AND 2999 LIMIT 1000
。 LIMIT
可以限制要删除的行。
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[PARTITION (partition_name,...)]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
这里你没有任何语法错误,你出错了就是逻辑。希望能解释一切。如果您有任何问题,请告诉我。
答案 1 :(得分:0)
您的帖子处理程序不正确。它应该是$ _POST ['deleteall']
答案 2 :(得分:0)
问题是方法deleteall
没有收到它的$all
参数(它什么也没收到,所以查询类使用的是0)。