内联分页记录与PHP JQUERY AJAX JSON


Inline Pagination of Records with PHP JQUERY AJAX JSON

我试图找出一个好方法加载记录顺序使用一些分页。

加载后,页面将查询数据库并抓取最近的5条记录,并在这些记录的末尾显示一个链接'show more'。当这个链接被点击时,它应该再次发布并检索接下来的5条记录,所以在这个意义上,记录将只被加载。

我猜这在某种程度上类似于分页,但没有页面计数器,只是"下一个"。我们目前的代码是内联javascript, jquery发布到一个php脚本,并返回一个数组,然后得到追加。好在html不是

我的初始查询是否应该抓取db中所有记录的计数进行分页?

有什么特别的参考资料可以帮助我完成这项工作吗?

下面的代码有一个问题,当'Showmore'点击它只加载一个记录而不是3 (num var)

var num = 3;
                var i =0,j=0;
                var total;
                var sm;
                function fun(sm){                        
                      $.post('select1.php?id=2',{},function(count){
                        total = count;
                        });
                      $.post('select1.php?id=1',{num:num},function(data)
                        {
                        if(num == total)
                        {
                            $('#show').hide();
                            $('#show1').html('<p>No more images found!</p>');
                        } 
                       var arr = data.split('/');
                    //alert(arr.length);
                    if(sm){j=sm};
                    for(i=j;i<(arr.length-1);i++)
                    {
                    //alert(arr[i]);
                       var p = arr[i].split('.');
                    //alert(p[1]);
                       $('#imggal').append('<a href="page3.php?file='+arr[i]+'"><img src="upload/small'+arr[i]+'" title ='+arr[i+1]+' border="0"></img></a><br><span style="display:block;font-size:12px;color:blue;letter-spacing:-1px">'+arr[i+2]+'<br>'+arr[i+1]+'</span><br></br').fadeIn('slow');
                       i=i+2;
                    }
                    });
                }
                fun();
                $(document).ready(function(){
                    $('#showmore').click(function(e){
                       //e.preventDefault();

                        j=num*3;
                        num++;
                        //alert(num);
                        //$('#imggal').html('');
                        fun(j);
                    });
                });

我还不能发表评论,所以我将尝试在这里回答有限的信息。我要做一些假设。

  • 你有你的选择查询排序的东西,以保持你的结果顺序调用之间
  • 你不想删除以前的项目,当你加载更多,你真的想继续显示新的项目,直到你用完数据库中的项目添加

有了这些假设,确定是否有更多项目要显示的简单方法是跟踪每个请求的偏移量和数量。作为一个例子…

如果你想在每个'show more'请求中显示5个项目,你会

  • 开始偏移量为0
  • 请求num+1,但只显示num
  • 如果结果集是> num,你可以显示更多,因为你知道肯定存在更多
  • 如果结果集为<= num,则无法显示更多数据
  • 如果你'show more',增加你的偏移数num

使用此方法,您不知道数据库中的项目总数,但您始终知道是否有更多项目要显示。

同样,您需要在数据库中限制和排序您的选择查询以使此工作。IE for mysql

select filename, thumbnail, id from image_table order by id limit OFFSET, NUM

OFFSET和NUM来自你的。post