7

ディレクトリから画像を動的に呼び出して表示するスクリプトを持っています。これをページネーションする最良の方法は何ですか? スクリプト内の変数を使用して、ページごとに表示される画像の数を制御できるようにしたいと考えています。URL 変数 (つまり、 http://domain.com/page.php?page=1 ) を使用することを考えていますが、これについてどうすればよいかわかりません。

助けてくれてありがとう。

4

4 に答える 4

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
)

そのすべてのデータを使用すると、ページネーション リンクを作成するための十分な準備が整います。

于 2008-10-16T04:40:38.367 に答える
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
}

始めるのに役立つことを願っています!

于 2008-10-16T03:01:42.560 に答える
0

画像に 01.jpg、02.jpg という名前を付けると、ページ付けが簡単になります。次に、glob を使用してすべての画像を配列に取得し、並べ替えます。

于 2008-10-16T04:09:52.720 に答える
0

迷ったらjavascriptを使おう!これも役立つかもしれません: http://www.webplicity.net/flexigrid/

私は試したことはありませんが、ギャラリーのようなアプリには良いかもしれません:)

于 2008-10-16T20:17:59.833 に答える