2011-03-18 120 views
4

我有一定數量的潛在職位。我們不知道有多少,但系統設置爲每頁顯示12個。沿着底部,我希望它顯示頁數。使用PHP數學計算頁數

所以首先,如果我們得到的帖子:

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

現在我們想要做的是

  1. 工作了它多少職位發現
  2. 除以數量由12
  3. 將該數字舍入到最接近的整數(UP從不降低)
  4. 將該數字除以1並給出ma 1次進入它。
  5. 因此根據需要提供儘可能多的頁碼。

想法是讓他們排成1 | 2 | 3 | 4 | 5等等。

任何想法?

+2

所以如果你媒體鏈接想通了什麼是回採你實現它的算法? – 2011-03-18 14:55:30

+2

「將這個數字除以1,並給出多少次1進入它」?你爲什麼要把它除以1? – add9 2011-03-18 14:58:21

+0

@imellan:這正是我的想法。 ;-) – 2011-03-18 15:00:02

回答

8

你在想這件事。如果您知道每頁結果的數量和結果的最大數量,那麼您就知道需要多少頁面。我想這是因爲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 "|" 
    } 
} 
?> 
+0

做得好的小夥子。確實很好 – 2011-03-18 16:18:23

+0

剛剛意識到我搞砸了一點,應該是'echo'' . $i . '';'而不是'echo'1';' – Phoenix 2011-03-19 00:03:46

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給出多少次進入它。

    REALLY ??將1個號碼除以1即可!

  5. 因此根據需要給出儘可能多的頁碼。

    不是。你怎麼知道用戶目前在用什麼頁面?你如何計劃實際分頁的帖子?如果帖子已經填充,那麼您每次都會浪費1-2個查詢,僅用於分頁。

你基本上是試圖使分頁,但不知道有很多SQL的,你最好還是使用現有的解決方案(或至少是重新因素現有的代碼,以限制查詢)