使用PHP数学和四舍五入计算页面数量

11
我有一些潜在的帖子。我们不知道有多少,但系统设置每页显示12个帖子。我想在底部显示页面数。
那么首先,如果我们获取帖子:
<?php $pages =  get_posts('category_name=news'); ?>

现在我们要做的是:

  1. 计算它找到了多少篇文章
  2. 将该数字除以12
  3. 将此数字四舍五入为最接近的整数(不向下,只向上)
  4. 将该数字除以1,并给出1可以被除几次。
  5. 从而得到所需的页面数量。

想法是将它们排成1 | 2 | 3 | 4 | 5等等。

有什么想法吗?


2
如果你已经想出了算法,那么是什么阻止你去实现它呢? - Poelinca Dorin
2
“将该数字除以1,并给出1可以被整除的次数”?为什么要除以1呢? - add9
@imellan:这正是我所想的。;-) - Michiel Pater
如果你使用WordPress(因为你使用get_posts),那么已经有许多分页插件可以使用,你可以下载其中一个并查看一下(如果你真的打算使用自己的)。 - Poelinca Dorin
2个回答

21

你想太多了。如果你知道结果的数量和每页最大的结果数,那么你就知道需要多少页了。我猜这是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 "|"
     }
}
?>

刚才意识到自己犯了点错误,应该是 echo '<a href="?page=' . $i . '">' . $i . '</a>'; 而不是 echo '<a href="?page=' . $i . '">1</a>'; - Phoenix

1
  1. 计算它找到了多少篇文章

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

  2. 将该数字除以12

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

    或者

    $count = mysql_query(*见#1*)/12.0; // 不仅仅是12!

  3. 将该数字四舍五入到最接近的整数(向上舍入)

    $count = ceil($count);

  4. 将该数字除以1,然后给出1可以被整除的次数。

    真的吗?任何数除以1都会返回它本身!

  5. 因此提供所需的页码数量。

    不完全如此。你怎么知道用户当前正在访问哪一页?你如何实现文章分页?如果文章已经显示在页面上了,那么每次进行分页时浪费1-2次查询,这样并不划算。

你基本上是在尝试制作分页,但如果不了解很多SQL,最好使用现有的解决方案(或者至少重构现有代码以限制查询)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接