我一直在考虑使用 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/