Frage

ich ein Skript haben, die dynamisch ruft und zeigt Bilder aus einem Verzeichnis, was wäre der beste Weg, dies zu Paginieren? Ich möchte in der Lage sein, die Anzahl der Bilder zu steuern, die innerhalb des Skripts pro Seite durch eine Variable angezeigt werden. Ich denke URL varriables verwenden (dh - http://domain.com/page.php? page = 1 ), aber ist nicht sicher, wie um dies zu realisieren.

Danke für die Hilfe.

War es hilfreich?

Lösung

Paginierung ist das gleiche Konzept mit oder ohne SQL. Sie benötigen, um Ihre grundlegenden Variablen nur, dann können Sie den Inhalt, den Sie wollen erstellen. hier einig quasi-Code:

$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
}

Hoffnung, das Ihnen hilft loszulegen!

Andere Tipps

Dies ist eine Funktion, die ich oft zu tun Paginierung verwenden. Hoffe, es hilft.

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));

Dies wird zurück:

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
)

Mit allen, die Daten, die Sie dann ziemlich gut bewaffnet, um die Paginierung Links zu machen.

Wenn Sie Ihre Bilder 01.jpg nennen, 02.jpg es macht es leichter Paginieren. Dann nutzen Sie glob alle Bilder in eine Reihe zu bekommen und es sortieren.

Im Zweifelsfall verwenden Sie Javascript! Dies könnte helfen zu: http://www.webplicity.net/flexigrid/

Könnte für Galerie-ähnliche Anwendungen gut sein, obwohl ich nie habe versucht es:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top