使用PHP Maths和Round计算页数

时间:2011-03-18 14:53:01

标签: php math rounding

我有一定数量的潜在帖子。我们不知道有多少,但系统设置为每页显示12个。在底部,我希望它显示页数。

首先,如果我们收到帖子:

<?php $pages =  get_posts('category_name=news'); ?>

现在我们要做的是

  1. 计算出找到的帖子数
  2. 将该数字除以12
  3. 将该数字四舍五入到最接近的整数(UP永不下降)
  4. 将该数字除以1并给出1进入它的次数。
  5. 从而根据需要提供尽可能多的页码。
  6. 这些想法是让他们排成1 | 2 | 3 | 4 | 5等。

    有什么想法吗?

2 个答案:

答案 0 :(得分:10)

你在想它。如果您知道结果数量和每页的最大结果数,那么您就知道需要多少页面。我想这是WordPress,因为你已经使用了get_posts,所以应该返回一个包含帖子的数组,所以:

<?php
$max_per_page = 12; //Max results per page

$posts = get_posts('category_name=news');
$total_posts = count($posts);  //Total number of posts returned
$pages = ceil($total_posts / $max_per_page);

for($i = 1;$i <= $pages;$i++) 
{
     echo '<a href="?page=' . $i . '">' . $i . '</a>';  //Or whatever the link needs to be
     if($i != $pages)
     {
         echo "|"
     }
}
?>

答案 1 :(得分:1)

  1. 计算出找到了多少帖子

    SELECT COUNT(*) FROM *table* WHERE *conditions*...

  2. 将该数字除以12

    SELECT COUNT(*)/12 AS num_pages FROM *table* WHERE *conditions*...

    OR

    $count = mysql_query(*see #1*)/12.0; // NOT JUST 12!

  3. 将该数字四舍五入到最接近的整数(UP永不下降)

    $count = ceil($count);

  4. 将该数字除以1并给出1进入它的次数。

    真的?将1号任意号码分开归还其中!

  5. 因此根据需要提供尽可能多的页码。

    不是真的。您如何知道用户当前所在的特定页面?你如何计划实际分页?如果帖子已经填充,那么每次都会浪费1-2个查询,只是为了你的分页。

  6. 您基本上是在尝试进行分页,但是在不了解大量SQL的情况下,您最好使用现有的解决方案(或者至少重新考虑现有代码以限制查询)