我想为特定用户删除表中的大量行,并且我希望用户知道他/她的内容正在删除。仅显示,删除很容易,但如何显示它是“x”百分比删除或 100-x 百分比动态保留?可以说使用引导进度条
3 回答
MySQL 无法预测查询将处理的时间或正在进行的过程还剩下多少时间。
您可以做的一件事是删除部分记录(即 1000 条记录)并在每次迭代后更新进度条。
嗯,很容易。对不起,我只是在这个阶段解释,因为我有点忙。但是如果你不明白,如果你给我发电子邮件,我可以创建代码。更好的是,我将在这里提供代码,以便其他人受益。
更好的方法是使用复选框来选择要删除的记录。在“列表”页面上,创建一个DIV以显示记录并单击“删除”按钮时(像往常)时,将有一个将处理删除的PHP文件。使用 ajax 处理这个,以便用户仍然可以看到记录列表和将显示百分比的百分比 div。
在这个 PHP 文件(处理文件)中,您需要从数据库中获取要删除的记录总数(计算选中的复选框)以及该表中的总记录数。将这两个值作为 JSON 返回。这应该由先前的 ajax 调用放入变量中。在您的索引页面(您要删除的任何内容的列表所在的位置)中,创建两个变量来保存要删除的总记录和数据库中的总记录,然后创建一个 setInterval 函数来使用 ajax 查询剩余记录的数据库。确保执行此请求的 PHP 文件正在回显数据库中剩余的记录数。(如果间隔是一秒,这将每秒查询数据库并返回总数)。
这一切意味着,您有总共要删除的记录,即 5500 您要从 56000 删除的表中的剩余记录总数
现在在 setInterval 函数中,计算百分比,即
var total_records = 5500;
var deleted_record = total_records 仍在数据库表中 - 总记录;
var 百分比 = 已删除记录数/总记录数*100;
在 setInterval 函数中,添加 $("#percentage").html(percentage) 其中百分比是要显示百分比的 div。这将根据设置的间隔显示结果。
我希望这很容易理解。他们有很多方法可以做到这一点,但为了避免混淆,这是我所拥有的最好的。我会尽快发布代码。
MySQL 不预测查询将花费多少时间。
然而,为了达到你的目标,你可以尝试使用触发器,但这并不能保证工作非常精确,你需要自己制定各种公式来计算进度。
另一种选择是删除每个查询已知数量的记录,以便您的php
脚本可以计算进度,但这会浪费大量资源。