如何在电影数据库中对类型搜索结果进行分类

时间:2016-05-03 22:00:19

标签: php web themoviedb-api

我有一个网站,我使用MVC设计模式在我的localhost上构建。我点击了一个按钮,它将显示我使用TheMovieDatabaseAPI获得的TheMovieDatabase中的所有类型。点击一个类型我得到第1页的数据有20个结果。但是,我无法弄清楚如何请求第2页的结果。这些请求是使用PHP进行的。

2 个答案:

答案 0 :(得分: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>";
    }
}

答案 1 :(得分:0)

您可以使用限制和偏移来获得第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

$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>";
}