【问题标题】:how to pagify genre search result on the movie database如何在电影数据库上分页类型搜索结果
【发布时间】:2016-05-03 22:00:19
【问题描述】:

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

【问题讨论】:

    标签: php web themoviedb-api


    【解决方案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>";
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 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>";
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-31
      • 2020-02-20
      • 1970-01-01
      • 2017-10-30
      • 2014-03-26
      • 2017-02-24
      相关资源
      最近更新 更多