从第2页开始破碎分页 - PHP PDO MYSQL

时间:2017-01-26 07:32:12

标签: mysql mysql-5.6 php paging

我的分页脚本显示的结果与第2页以后的第一页相同。

这是我用于文章等的原始分页脚本。它返回文章和类别并加入它们以显示文章&每篇文章的类别,但仅在最近两个月内发布'制品

$page = isset($_GET['page']) ? (int)$_GET['page'] :1;
$perpage =10;
$start = ($page>1) ? ($page*$perpage)-$perpage :0;
$selects = $DB->prepare("
            SELECT SQL_CALC_FOUND_ROWS articles.*, art_categories.*
            FROM art_categories LEFT JOIN articles
            ON articles.categoryID=art_categories.categoryID
            WHERE articles.categoryID=art_categories.categoryID
            AND articles.publishDate < DATE(NOW() + INTERVAL 2 MONTH)
            ORDER BY articles.publishDate DESC LIMIT {$start},10
            ");
$selects->execute();
$selects= $selects->fetchALL(PDO::FETCH_ASSOC);
$total = $DB->query("SELECT FOUND_ROWS() as total")->fetch()['total'];
$pages = ceil($total / $perpage);

然后我再次使用它来查看我的文章类别页面,根据其categoryID列出所有文章,通过下拉菜单,这是我使用的分页代码。

$page = isset($_GET['page']) ? (int)$_GET['page'] :1;
$perpage =10;
$start = ($page>1) ? ($page*$perpage)-$perpage :0;
$selects = $DB->prepare("
                        SELECT SQL_CALC_FOUND_ROWS 
                             articles.*, 
                             art_categories.*
                        FROM art_categories LEFT JOIN articles
                        ON articles.categoryID=art_categories.categoryID
                        WHERE art_categories.categoryID=:cat_id 
                        ORDER BY publishDate DESC LIMIT {$start},10
                        ");

$selects->bindParam(':cat_id', $_GET['categoryID'], PDO::PARAM_INT);
$selects->execute();
$selects= $selects->fetchALL(PDO::FETCH_ASSOC);
$total = $DB->query("SELECT FOUND_ROWS() as total")->fetch()['total'];
$pages = ceil($total / $perpage);

以下是我用于分页本身的代码

<ul class="pagination">
    <?php for($i=1;$i<=$pages;$i++):?>
      <li><a href="categories.php?categoryID=<?php echo $cate['categoryID']; ?>?page=<?php echo $i; ?>"><?php echo $i; ?></a></li>
    <?php endfor;?>
</ul>

现在我已经阅读了很多关于这方面的文章,人们建议将[&#39;页面&#39;]作为$ _SESSION的一部分进行保存,但我没有运气。

session_start();
$page = isset($_SESSION['page']) && is_numeric($_SESSION['page']) ? $_SESSION['page'] : 1;
$_SESSION['page'] = $page;
$perpage =10;
$start = ($page>1) ? ($page*$perpage)-$perpage :0;
$selects = $DB->prepare("
                        SELECT SQL_CALC_FOUND_ROWS 
                             articles.*, 
                             art_categories.*
                        FROM art_categories LEFT JOIN articles
                        ON articles.categoryID=art_categories.categoryID
                        WHERE art_categories.categoryID=:cat_id 
                        ORDER BY publishDate DESC LIMIT 10 OFFSET {$start}
                        ");

$selects->bindParam(':cat_id', $_GET['categoryID'], PDO::PARAM_INT);
$selects->execute();
$selects= $selects->fetchALL(PDO::FETCH_ASSOC);
$total = $DB->query("SELECT FOUND_ROWS() as total")->fetch()['total']; 
$pages = ceil($total / $perpage);

单击分页时,URL如下所示,但内容保持不变:

categories.php?categoryID=1?page=1
categories.php?categoryID=1?page=2
categories.php?categoryID=1?page=3

我不知道如何从这里前进任何帮助都很棒我还在学习PHP&amp; MySQL所以我根本不是高级程序员。

这个问题已经结束。

0 个答案:

没有答案
相关问题