2008-10-16 40 views
7

我有一個腳本可以動態調用並顯示來自目錄的圖像,分頁的最好方法是什麼?我希望能夠通過腳本中的變量來控制每頁顯示的圖像數量。我正在考慮使用URL可變參數(即 - http://domain.com/page.php?page=1),但我不確定如何去解決這個問題。沒有SQL的PHP​​動態分頁

感謝您的幫助。

回答

9

分頁是使用或不使用sql的相同概念。你只需要你的基本變量,然後你就可以創建你想要的內容。這裏的一些準代碼:

$itemsPerPage = 5; 

$currentPage = isset($_GET['page']) ? $_GET['page'] : 1; 
$totalItems = getTotalItems(); 
$totalPages = ceil($totalItems/$itemsPerPage); 

function getTotalItems() { 
// since they're images, perhaps we'll scan a directory of images to determine 
// how many images we have in total 
} 

function getItemsFromPage($page, $itemsPerPage) { 
// function to grab $itemsPerPage based on which $page we're on 
} 

function getPager($totalPages, $currentPage) { 
// build your pager 
} 

希望幫助你開始!

+0

良好的開端,謝謝,使有很大的意義。明天我會看看我能做些什麼。 – PHLAK 2008-10-16 03:38:47

0

如果您將圖片命名爲01.jpg,02.jpg,則可以更容易地分頁。然後使用glob將所有圖像轉換爲數組並對其進行排序。

+0

含義在每個頁面加載時,您擁有相同順序的相同圖像陣列。你可以做的另一件事是有一個captions.php文件,帶有一個由image#索引的字幕數組。 – Galen 2008-10-16 04:14:49

+0

我明白你的意思,但圖像不一定會像這樣編號。 – PHLAK 2008-10-16 07:37:00

10

這是我經常用來做分頁的功能。希望能幫助到你。

function paginate($page, $total, $per_page) { 
    if(!is_numeric($page)) { $page = 1; } 
    if(!is_numeric($per_page)) { $per_page = 10; } 
    if($page > ceil($total/$per_page)) $page = 1; 
    if($page == "" || $page == 0) { 
     $page = 1; 
     $start = 0; 
     $end = $per_page; 
    } else { 
     $start = ($page * $per_page) - ($per_page); 
     $end = $per_page; 
    } 

    $prev_page = ""; 
    $next_page = ""; 
    $all_pages = array(); 
    $selected = ""; 
    $enabled = false; 

    if($total > $per_page) { 
     $enabled = true; 
     $prev = $page - 1; 
     $prev_page = ($prev == 0) ? 0 : $prev; 

     $next = $page + 1; 
     $total_pages = ceil($total/$per_page); 

     $next_page = ($next <= $total_pages) ? $next : 0; 

     for($x=1;$x<=$total_pages;$x++) { 
      $all_pages[] = $x; 
      $selected = ($x == $page) ? $x : $selected; 
     } 
    } 

    return array(
     "per_page" => $per_page, 
     "page" => $page, 
     "prev_page" => $prev_page, 
     "all_pages" => $all_pages, 
     "next_page" => $next_page, 
     "selected" => $selected, 
     "start" => $start, 
     "end" => $end, 
     "enabled" => $enabled 
    ); 
} 

// ex: we are in page 2, we have 50 items, and we're showing 10 per page 
print_r(paginate(2, 50, 10)); 

這將返回:

Array 
(
    [per_page] => 10 
    [page] => 2 
    [prev_page] => 1 
    [all_pages] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
      [3] => 4 
      [4] => 5 
     ) 
    [next_page] => 3 
    [selected] => 2 
    [start] => 10 
    [end] => 10 
    [enabled] => 1 
) 

有了你,然後很好的武裝,使分頁鏈接的所有數據。