0

我有一个使用 MVC 设计模式在本地主机上构建的网站。我有一个点击按钮,它将显示我使用 TheMovieDatabaseAPI 获得的 TheMovieDatabase 中的所有流派。点击一个类型,我得到第 1 页的数据,有 20 个结果。但是,我不知道如何请求第 2 页的结果。这些请求是使用 PHP 发出的。

4

2 回答 2

1

我假设您正在使用分页,我还假设您正在使用 mySQL 作为数据库,我不确定您使用的是哪个框架,这是我使用的一个函数,您可以围绕它构建

 function get_movie($page = 1){
    global $database_connection;
    $start = 0; //Don't modify this
    $limit = 10; //set this to 20 to display 20 movies per page
    $start = ($page - 1)* $limit;

    //get the movie from the table
    $sql = "SELECT genre FROM movie_table LIMIT $start, $limit";
    $result = mysqli_query($database_connection, $sql);
    while ($row = mysqli_fetch_array($result)){
        echo "<div>$row['genre']</div>";
    }

    $movie_rows = mysqli_num_rows (mysqli_query($database_connection ,"SELECT * FROM movie_table"));
    $total = ceil($testimony_rows / $limit);
    if (isset($page)){
        echo "<div>";
        echo "<ul class='pager'>";
        if($page > 1) {
            echo "<a href='?page=".($page - 1)."' style='float: left;' class=' w3-sand w3-btn w3-margin w3-round'>Previous</a>";
        }
        for($i = 1; $i <= $total; $i++) {
            if($i == $page) { echo "<li class='active current'>".$i."</li>"; }

            else { echo "<li><a href='?page=".$i."'>".$i."</a></li>"; }
        }
        if($page != $total) {
            echo "<a href='?page=".($page + 1)."' class='w3-btn w3-margin w3-sand w3-round'>Next</a>";
        }
        echo "</ul></div>";
    }
}
于 2016-05-03T22:20:23.517 回答
0

您可以使用 limit 和 offset 来获得第 2 页的结果。

示例:- 如果您使用查询生成器来获取结果

$limit = 20;
$offset = 21;
$queryBuilder->select('d')
            ->from(<table name>, 'd')
            ->setMaxResults($limit)
            ->setFirstResult($offset)
            ->setParameter('limit', $limit)
            ->setParameter('offset', $offset);

如果您使用原始查询:

SELECT * FROM table LIMIT 20 OFFSET 21

否则你也可以使用分页器

$paginator  = new \Doctrine\ORM\Tools\Pagination\Paginator($query);

$totalItems = count($paginator);
$pagesCount = ceil($totalItems / $pageSize);

// now get one page's items:
$paginator
    ->getQuery()
    ->setFirstResult($pageSize * ($currentPage-1)) // set the offset
    ->setMaxResults($pageSize); // set the limit

foreach ($paginator as $pageItem) {
    echo "<li>" . $pageItem->getName() . "</li>";
}
于 2016-05-03T22:18:42.030 回答