好的,所以这里我的问题我有一个博客,我想在第一页只显示5个帖子的用户,所以我执行此查询
mysql_query("select * from posts LIMIT 5");
然后在显示5个帖子之后我做了一个名为的按钮:显示更多帖子
当用户点击该按钮时执行另一个PHP文件(loadmoreposts.php),其中我执行此查询
mysql_query("select * from posts LIMIT 5 OFFSET 5");
但是我希望每次点击该按钮时都显示用户5帖子,所以我在我的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;
让我解释一下我在这个脚本中做了什么,首先我通过类连接到数据库然后我通过运行 $ beforequery 然后再一次获取我的帖子的最后一个ID(最后更新的帖子)我执行另一个名为 $ afterquery 的查询,然后我得到我的结果
但我不想只显示一次点击我想要显示他们5个用户点击该按钮就像前五个已经显示但点击按钮会再显示5个点击再次,它将显示接下来的5个帖子。 然后,这个脚本被这个AJAX脚本抓住:
var loadmoreposts = function () {
$.post('assets/includes/fetchMoreRows.php').done(function( data ) {
$('#displaymoreposts').html(data);
});
}
此 loadmoreposts(); 功能在 onload =“loadmoreposts();”body tag
中运行任何建议和帮助将不胜感激:)
============================ * ** EDITED ===========================
我删除了循环并添加了但不能正常工作
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;
和JS / AJAX脚本现在就是这个
var offsetValue = 0;
var loadmoreposts = function () {
$.post( 'assets/includes/fetchMoreRows.php', { offset: offsetValue} ).done(function( data ) {
$('#displaymoreposts').html(data);
offsetValue += 5;
});
}
答案 0 :(得分:2)
您的AJAX脚本需要从OFFSET
开始发送0
的当前值。每当您点击Show more posts
链接时,它都会将值增加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'];
也不会增加LIMIT
。将您的查询更改为:
mysql_query("select * from posts LIMIT 5 OFFSET $m");
如果你增加LIMIT
,脚本每次都会返回+5个帖子。
希望有所帮助。
答案 1 :(得分:1)
您可以简单地在AJAX请求中发送偏移量,并在查询中使用该偏移量,这里有一些简单的步骤:
依旧......
答案 2 :(得分:0)
试试这个..
//用于保存偏移的变量
var offSet = 5; //初始值
//在您的帖子请求中发送此内容
$.post('url', {aOffset : offset }, function(returnedData) {
// do something here
//update the offset value
offset+=5; });