来自mysql的分页数据表,自动刷新

时间:2013-08-16 15:17:28

标签: php javascript jquery mysql ajax

我一直在寻找使用AJAX和jQuery来实现我想要做的事情,但是我没有使用它们中的任何一个并且我有点头疼。

我想做的是从MySQL数据库中显示一个数据表。我希望这个表是分页的,因此每页限制为大约25个结果。

最后,我想要一个递归脚本,它使用AJAX或类似的方法获取更新的结果集。

没有尝试学习所有这些东西并尝试将它们全部放在一起,是否有一个更紧凑的简单库我可以用来实现这个自动更新数据表?

如果没有,有人可以指点一些基​​本的分步指南,从哪开始呢?

3 个答案:

答案 0 :(得分:2)

你的AJAX SQL调用就像这样:

WITH cte AS(
    SELECT ROW_NUMBER() OVER (ORDER BY ID DESC) RowNumber, * FROM my_table)
SELECT ID, column FROM cte
WHERE RowNumber BETWEEN ".(page*nxtAmnt)+1." AND ".(page+1)*nxtAmnt

传递page的地方(通过nxt),nxtAmount是每页的记录数(25)。

您还需要按钮来激活它:

<div id="pages"></div>
<input type="button" value="Previous" onclick="page('d');"/>
<input type="button" value="Next" onclick="page('u');"/>

你的JS就是

var pagCounter=0;
    function page(input){
        if(input=='u')
            pagCounter++;
        else
            pagCounter--;

        if(pagCounter<0){
            pagCounter=0;
        }

        getNext();
    }

    function getNext(){
        if(pagCounter<0)
            pagCounter=0;
        $.ajax({
            type: "GET",
            url: "AJAX.php",
            data: "nxt="+pagCounter,
            async: true,
            cache: false,

            success: function(data){ /* called when request completes */
                if(data!=""){
                    $("#pages").html(data);
                }
                else{
                    $("#pages").html("No options found");
                }
            }
        });
    };

修改

根据您的评论,这里是对SQL的解释。

WITH cte AS(有点像将结果拉入临时表然后使用它。在这种情况下,该表名为cte

SELECT ROW_NUMBER() OVER (ORDER BY ID DESC) RowNumber, * FROM my_table)

这是填充cte表的查询。它包括Row Numbers(按ID DESC排序)以及*,但如果您愿意,可以更改此内容。

SELECT ID, column FROM cte
WHERE RowNumber BETWEEN ".(page*nxtAmnt)+1." AND ".(page+1)*nxtAmnt

这是使用cte表的常规查询。我们通过在某些行号之间保持结果来限制记录(这是每页的页码次数)。

因此,在PHP中,您可以传入页码,每页编码#(也可以传入),查询将为您提供所需内容。

答案 1 :(得分:0)

您可以使用jqGrid

要再次获取数据,您应该执行以下操作:

setInterval(function(){
  $("#myGridId").trigger("reloadGrid");
}, 1000);

使用方法.setPostData()更改参数。

答案 2 :(得分:0)

我不知道一个好的预装版本,但你真的只需要几个相对简单的东西:

  1. 一个实用程序页面,它接受GET个参数来指示哪些行,并从DB返回它们(简单)
  2. 在您的主页上,一个AJAX例程,当被调用时,请求该页面并将其附加到增长表的底部。 (不太难;标准的AJAX习语将完成大部分工作)
  3. 一种检测何时使桌子更长,并跟踪其当前长度的方法(根据您想要制作它的方式而变化,从容易到难以变化。按钮非常简单)
  4. 编辑:请注意,如上所述,JQuery是不必要的 - 您可以使用它,如果您愿意,可能会简化其中的几个步骤。