Динамическое разбиение на страницы PHP без SQL

StackOverflow https://stackoverflow.com/questions/207223

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть сценарий, который динамически вызывает и отображает изображения из каталога. Как лучше всего разбить его на страницы?Я хотел бы иметь возможность контролировать количество изображений, отображаемых на странице, с помощью переменной внутри скрипта.Я подумываю об использовании переменных URL (т.е. http://domain.com/page.php?page=1), но я не знаю, как это сделать.

Спасибо за помощь.

Это было полезно?

Решение

нумерация страниц — это одна и та же концепция с 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
}

надеюсь, это поможет вам начать работу!

Другие советы

Эту функцию я часто использую для нумерации страниц.Надеюсь, поможет.

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
)

Имея все эти данные, вы достаточно хорошо вооружены для создания ссылок на страницы.

Если вы назовете свои изображения 01.jpg, 02.jpg, это облегчит разбиение на страницы.Затем используйте glob, чтобы собрать все изображения в массив и отсортировать его.

Если сомневаетесь, используйте JavaScript!Это тоже может помочь: http://www.webplicity.net/flexigrid/

Возможно, подойдет для приложений типа галереи, хотя я никогда не пробовал :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top