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

标签 php javascript jquery mysql ajax

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

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

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

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

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

最佳答案

你的 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 中,您可以传入页码,对每页 # 进行硬编码(或者也将其传入),查询将为您提供所需内容。

关于php - 来自mysql的分页数据表,自动刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18276730/

相关文章:

php - Nl2br 对除 <li> 标签之外的数据

php - 100,000 次写入的 Redis 性能

javascript - HTML5 canvas 上的设计 - 如何加快渲染速度

javascript - SVG:通过 jQuery 更新在 FF 中有效,但在 Safari 中无效,有什么想法吗?

javascript - 限制输入字符并阻止用户输入

php - 在 Auth 组件 Cakephp 中关闭密码哈希

javascript - jQuery Mobile 中的多个提交按钮

javascript - jQuery;在 .load() 之后定位 HTML

javascript - backbonejs 中的多个路由处理程序

jquery - 如何让这张图片不脱离 parent 的div