AJAX、PHP&;MYSQL-限制数据选择和偏移
好的,我的问题是我有一个博客,我想在第一页向用户显示5篇文章,所以我执行这个查询AJAX、PHP&;MYSQL-限制数据选择和偏移,php,mysql,ajax,loops,Php,Mysql,Ajax,Loops,好的,我的问题是我有一个博客,我想在第一页向用户显示5篇文章,所以我执行这个查询 mysql_query("select * from posts LIMIT 5"); mysql_query("select * from posts LIMIT 5 OFFSET 5"); 在显示了5篇文章之后,我做了一个按钮,名为:显示更多的文章 当用户点击该按钮时,另一个PHP文件(loadmoreposts.PHP)被执行,我在其中执行这个查询 mysql_query("select * fr
mysql_query("select * from posts LIMIT 5");
mysql_query("select * from posts LIMIT 5 OFFSET 5");
在显示了5篇文章之后,我做了一个按钮,名为:显示更多的文章
当用户点击该按钮时,另一个PHP文件(loadmoreposts.PHP)被执行,我在其中执行这个查询
mysql_query("select * from posts LIMIT 5");
mysql_query("select * from posts LIMIT 5 OFFSET 5");
但我想在用户每次单击该按钮时显示用户5 post,所以我在PHP脚本loadmoreposts.PHP中创建了这个循环
include('dbConnectClass.php');
$connect = new doConnect();
$beforequery = mysql_query('select * from posts ORDER BY id DESC LIMIT 1;');
if (mysql_num_rows($beforequery) > 0) {
$max_public_id = mysql_fetch_row($beforequery);
$lastid = $max_public_id[0]; //Here it is
}else{
$lastid = "[0]";
}
echo "Last ID $lastid<br />";
$m=5;
for($n=5; $n<=15; $n++):
$afterQuery = mysql_query("select * from posts LIMIT $m OFFSET $m");
$m = $m+5;
$result = "";
while($row = mysql_fetch_assoc($afterQuery)){
$result .= "<div class='cd-timeline-block'>";
$result .="<div class='cd-timeline-img cd-warning'>";
$result .=" <i class='fa fa-pencil-square-o'></i>";
$result .="</div>";
$result .="<div class='cd-timeline-content'>";
$result .= "<h2>{$row['title']}</h2>
<p>{$row['content']}</p>
<img src='{$row['imagesrc']}' alt=''>
<br />
<span style='font-size:85%;'' class='label label-primary'>{$row['category']}</span>
</div>
</div>";
}
echo $result;
endfor;
这是loadmoreposts();函数正在onload=“loadmoreposts();”正文标记中运行
任何建议和帮助都将不胜感激:)
============================
*编辑**
===========================
我删除了循环并添加了这个,但不起作用
include('dbConnectClass.php');
$connect = new doConnect();
$m = $_POST['offset'];
$afterQuery = mysql_query("select * from posts LIMIT 5 OFFSET $m");
$result = "";
while($row = mysql_fetch_assoc($afterQuery)){
$result .= "<div class='cd-timeline-block'>";
$result .="<div class='cd-timeline-img cd-warning'>";
$result .=" <i class='fa fa-pencil-square-o'></i>";
$result .="</div>";
$result .="<div class='cd-timeline-content'>";
$result .= "<h2>{$row['title']}</h2>
<p>{$row['content']}</p>
<img src='{$row['imagesrc']}' alt=''>
<br />
<span style='font-size:85%;'' class='label label-primary'>{$row['category']}</span>
</div>
</div>" ;
// $result .= "<tr><td> {$row['name']}</td>"."<td> {$row['password']}</td></tr></p>";
}
echo $result;
您只需在AJAX请求中发送偏移量,并在查询中使用该偏移量,以下是简单的步骤:
$.post('url', {aOffset : offset }, function(returnedData) {
// do something here
//update the offset value
offset+=5; });
您的AJAX脚本需要发送
OFFSET
的当前值,从0
开始。每次单击显示更多帖子
链接时,该值都会增加5
因此,您应该将AJAX脚本更改为:
var offsetValue = 0;
var loadmoreposts = function () {
$.post( 'assets/includes/fetchMoreRows.php', { offset: offsetValue} ).done(function( data ) {
$('#displaymoreposts').html(data);
offsetValue += 5;
});
}
在PHP脚本中,您可以像这样获取offset
值:
$m = $_POST['offset'];
另外,不要增加限制
。将查询更改为:
mysql_query("select * from posts LIMIT 5 OFFSET $m");
如果增加LIMIT
,脚本每次将返回+5个帖子
希望这能有所帮助。不要担心我在回显什么,它不是一个公共脚本,只是为了管理员(我)和我正在测试它,并想让它工作:)相反,
.html()
,你可以使用.append()
并将点击次数传递给PHPcan,你可以通过的scriptistead编辑给我你正在谈论的脚本吗$('#displaymoreposts').html(数据);
do$('#displaymoreposts').append(数据);
检查我的问题编辑please@Tayyab使用此脚本,但我认为您应该使用.append而不是.htmlIf。如果它还不起作用,请准确解释发生了什么,并尝试回显查询$afterQuery
,并检查偏移量是否确实随着每个AJAX请求而增加。@Tayyabecho“[$m]\n
请。上面写的是什么?谢谢,它正在工作,不幸的是,我将此函数放在另一个函数上(替换),因此它无法工作…再次感谢+1检查我的问题中编辑的请检查我的问题中编辑的,请键入您正在谈论的脚本:)谢谢