1

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

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

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

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

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

4

3 回答 3

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传入 (via 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(由 DESC 订购ID)以及*,但您可以根据需要更改它。

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

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

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

于 2013-08-16T15:27:07.230 回答
0

你可以使用jqGrid

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

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

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

于 2013-08-16T15:22:29.100 回答
0

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

  1. 一个实用程序页面,它接受GET指示哪些行的参数,并从数据库返回它们(简单)
  2. 在您的主页上,一个 AJAX 例程在调用时请求该页面并将其附加到增长表的底部。(不太难;标准的 AJAX 习语将完成大部分工作)
  3. 一种检测何时使表格变长并跟踪其当前长度的方法(从容易到难,取决于您想要制作它的花哨。按钮真的很容易)

编辑:请注意,如上所述,JQuery 是不必要的——如果您愿意,您可以使用它并可能简化其中的几个步骤。

于 2013-08-16T15:22:38.190 回答