AJAX、PHP&;MYSQL-限制数据选择和偏移

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

好的,我的问题是我有一个博客,我想在第一页向用户显示5篇文章,所以我执行这个查询

 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请求中发送偏移量,并在查询中使用该偏移量,以下是简单的步骤:

  • 加载前5篇文章,使AJAX“加载更多”按钮发送的值为5
  • 单击“加载更多”按钮时,获取发送的值(在我们的示例5中)并将其插入查询中(希望使用准备好的安全语句),然后检索接下来的5篇文章,并发回5篇文章和“加载更多”按钮的新值,该值现在为10(可以通过将从AJAX请求获得的值加上5来计算)
  • 重复,单击“加载更多”按钮时发送10,检索从数字/偏移量10开始的下5篇文章,返回5篇文章和“加载更多”按钮的新值,即15(10+5)
  • 等等…

    试试这个

    //变量来保存偏移量

    var offSet=5;//初始值

    //请在您的post请求中发送此邮件

    $.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请求而增加。@Tayyab
    echo“[$m]\n
    请。上面写的是什么?谢谢,它正在工作,不幸的是,我将此函数放在另一个函数上(替换),因此它无法工作…再次感谢+1检查我的问题中编辑的请检查我的问题中编辑的,请键入您正在谈论的脚本:)谢谢