【问题标题】:How do I use PHP to limit/paginate my MongoDB search results?如何使用 PHP 限制/分页我的 MongoDB 搜索结果?
【发布时间】:2020-08-12 07:34:05
【问题描述】:

我想像 Google 那样将我的搜索结果分成页面。我尝试过 5 人一组:

<?php
//connect to Atlas and include Composer files
      require 'dbconnection.php';
      require 'vendor/autoload.php';

$page = $_GET["page"];
if ($page=="" || $page=="1")
{
    $page1=0;
}
else{
    $page1=($page*5)-5;
}
      $options=["limit" => 5,
      "skip" => 0
      ];
      $query= $collection->find([], $options);
?>
<!DOCTYPE html>
<html>
<head>
   <title>Results</title>
</head>
<body>

<table>
   <tr>
                          <th>Film</th>
                          <th>Actor</th>
                          <th>Director</th>
                          <th>Year</th>
                          <th>Genre</th>
   </tr>
<?php

     foreach($query as $value) {
         echo "<tr>";
         echo "<td>".$value->film."</td>";
         echo "<td>".$value->actor."</td>";
         echo "<td>".$value->director."</td>";
         echo "<td>".$value->year."</td>";
         echo "<td>".$value->category."</td>";
         echo "<td>";
         echo "</tr>";
      };
echo '</table>';

$countr=$collection->count($query);
$a=$countr/5;
$a=ceil($a);
echo "<br>"; echo "<br>";
    for($b=1;$b<=$a;$b++)
    {
        
        ?><a href="results.php?page=<?php echo $b; ?>" style="text-decoration:none "><?php echo $b." "; ?></a> <?php
        
    }

   ?>


</body>
</html>

当我打开网页时,将显示五个结果(如预期的那样),但底部的按钮不会将我引导至任何其他页面。我做错了什么?

顺便说一句,我从这个 SQL 教程中获得了大部分代码: https://www.youtube.com/watch?v=takddjxhWT0

【问题讨论】:

  • 您应该将 $page1 值传递给跳过选项。
  • 使用@AminShojaei 提到的限制/跳过选项。它们的工作方式非常类似于 sql 的限制/偏移量。这里简单解释一下:w3schools.com/php/php_mysql_select_limit.asp

标签: php mongodb pagination paging


【解决方案1】:

我想通了! @AminShojai 是正确的。

<?php
//connect to Atlas and include Composer files
      require 'dbconnection.php';
      require 'vendor/autoload.php';

$page = $_GET["page"];
if ($page=="" || $page=="1")
{
    $page1=0;
}
else{
    $page1=($page*5)-5;
}
      $options=['limit' => 5,
      'skip' => $page1
      ];
      $query= $collection->find([], $options);
?>
<!DOCTYPE html>
<html>
<head>
   <title>Results</title>
</head>
<body>

<table>
   <tr>
                          <th>Film</th>
                          <th>Actor</th>
                          <th>Director</th>
                          <th>Year</th>
                          <th>Genre</th>
   </tr>
<?php

     foreach($query as $value) {
         echo "<tr>";
         echo "<td>".$value->film."</td>";
         echo "<td>".$value->actor."</td>";
         echo "<td>".$value->director."</td>";
         echo "<td>".$value->year."</td>";
         echo "<td>".$value->category."</td>";
         echo "<td>";
         echo "</tr>";
      };
echo '</table>';

$countr=$collection->count($query);
$a=$countr/5;
$a=ceil($a);
echo "<br>"; echo "<br>";
    for($b=1;$b<=$a;$b++)
    {
        
        ?><a href="results.php?page=<?php echo $b; ?>" style="text-decoration:none "><?php echo $b." "; ?></a> <?php
        
    }

   ?>


</body>
</html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 2018-08-17
    • 2018-05-28
    相关资源
    最近更新 更多