分页无限嵌套

时间:2015-10-06 16:45:46

标签: php mysql pagination

我有一个mySQL表,它存储嵌套到无限级别的类别和子类别。表结构是:

cat_id, parent_id, cat_name
   1       0       Ingredients
   2       1       Veg
   3       1       Non-veg
   4       3       Egg
   5       2       Potatoes

我想在树状视图的PHP页面中显示这些项目的完整列表。因此,首先显示父ID为“0”的项目,如果它们具有子项目,则子元素将以递归到无限级别的方式显示。输出将类似于以下内容,但采用表格格式:

id         title
 1         Ingredients
   2         Veg
     5         Potatoes
   3         Non-veg
     4         Egg

我能够在多个查询的帮助下实现这一目标。首先,我获取父id = 0的所有记录,然后循环遍历所有项目并在循环内部检查是否存在子记录(递归)。

但现在我需要添加分页并且每页只显示10条记录。

有没有办法实现分页并动态显示每页10条记录,包括子记录和子记录? 我如何计算总页数并获得记录?我还必须稍后在这些类型的表中添加过滤器。

2 个答案:

答案 0 :(得分:0)

你的意思是,只有10个根项目记录,那些cat_id为0的记录?对于您的第一个查询,只需执行SELECT * FROM cats WHERE parent_id = 0 LIMIT 10即可。然后您的后续查询将只找到前10个的后代。

对于总页数(10组),请执行SELECT COUNT(*) / 10 AS number_of_pages FROM cats WHERE parent_id = 0

答案 1 :(得分:0)

有一种快速的方法可以在html表中获取所有结果,然后应用jquery分页,如:

$(document).ready(function() {
    $('#mytable').DataTable();
} );

网站来源:https://www.datatables.net/examples/basic_init/zero_configuration.html

这样客户端将只在第一次等待,然后单击“下一步”直接是一个不必打扰服务器的客户端事件。

你的php和html也会很干净,有很多功能,比如: 排序,过滤,搜索......

jsfiddle中的

演示:http://jsfiddle.net/0wvtpzc8/