Подсчитайте количество страниц, используя PHP Maths и Round - PullRequest
6 голосов
/ 18 марта 2011

У меня есть определенное количество потенциальных постов. Мы не знаем, сколько их, но система настроена на показ 12 на страницу. Внизу я хотел бы, чтобы отображалось количество страниц.

Итак, сначала, если мы получим сообщения:

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

Теперь то, что мы хотим сделать, это

  1. выяснить, сколько сообщений он нашел
  2. разделите это число на 12
  3. округлить это число до ближайшего целого числа (UP никогда не опускается)
  4. разделите это число на 1 и укажите, сколько раз в него входит 1.
  5. , что дает столько номеров страниц, сколько необходимо.

Идея состоит в том, чтобы выстроить их как 1 | 2 | 3 | 4 | 5 и т. Д.

Есть идеи?

Ответы [ 2 ]

10 голосов
/ 18 марта 2011

Ты слишком задумался. Если вы знаете количество результатов и максимальное количество результатов на страницу, то вы знаете, сколько страниц вам нужно. Я предполагаю, что это 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 голос
/ 18 марта 2011
  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 запроса каждый раз, просто для разбивки на страницы.

В основном вы пытаетесь разбить на страницы, но, не зная большого количества SQL, вам лучше использовать существующее решение (или хотя бы повторно использовать существующий код для ограничения запросов)

...