2015-02-13 5 views
1

Я пытаюсь создать веб-страницу, которая отображает 10 файлов, хранящихся в каталоге каждый раз. Однако я не хочу использовать базу данных. Это то, что у меня до сих пор.Pagination без использования базы данных в PHP

<?php 
$exclude = array("index.php"); 
$cssfiles = array_diff(glob("*.php"), $exclude); 
foreach ($cssfiles as $cssfile) { 
$filename = "http://example.com/lessons/css/".$cssfile; 
outputtags($filename,true,true); 
} 
?> 

Это печатает все результаты, я не могу понять, как показать только первые десять результатов, а после этого, когда пользователь щелкает рядом 10 других результатов без использования базы данных. Я думаю, что использование базы данных только для этой цели не имеет смысла.

EDIT Причина, по которой я хочу это сделать, заключается в том, что я получаю ошибку max_user_connection.

+0

Поскольку файлы не имеют реального порядка в каталоге, вы никогда не сможете гарантировать получение следующих 10, если вы не выполните сортировку. Создайте массив всех имен файлов, которые вы можете использовать для сортировки и разбивки на страницы. –

+0

* «Я не хочу использовать базу данных для этого, хотя.» * - Почему бы и нет? Это намного меньше проблем и обслуживания с использованием БД. –

+0

У меня есть некоторая ошибка, например max_connection –

ответ

-1

Это зависит от того, как вы хотите выбрать эти десять страниц. Можно использовать цикл for, в котором перечислены файлы 0-9 и могут рассчитываться с 10-19, ..., в зависимости от диапазона страниц, который пользователь запрашивает.

Однако, когда файл будет добавлен, система выйдет из строя. В этом случае загрузка/сохранение некоторой сортировки Информация для сеансов/файлов cookie может решить проблему.

EDIT: Использование базы данных, однако, является стандартом для таких задач. Даже если вам они не нравятся, вам, скорее всего, понадобятся они для более сложных задач, требующих сортировки, поиска или объединения нескольких наборов данных, которые слишком сложны для достижения функций файловой системы.

0

Вы можете сделать это путем сохранения файлов в массив и сортировать его, как вы хотите, как следующее:

$exclude = array("index.php"); 
    $cssfiles = array_diff(glob("*.php"), $exclude); 
    $files = array(); 
    foreach ($cssfiles as $cssfile) { 
    $filename = "http://example.com/lessons/css/".$cssfile; 
     $files[] = $filename; 
    } 

    asort($files); 

    // Pagination start from here 
    $page = 1; // You will get this parameter from the url using $_GET['page'] for instance 
    $limit = 10; // Number of files to display. 
    $offset = (($page-1) * $limit); 
    $max = ($page * $limit); 
    $max = $max > count($files) ? count($files) : $max; 

    for ($i=$offset; $i<$max; $i++) { 
     echo $files[$i] . PHP_EOL; 
    } 

    echo 'Total Pages : ', count($files). PHP_EOL; 
    echo 'Page number : ' , $page; 

Может быть, вы могли бы использовать Ajax и извлечь страницу постраничной, чтобы избежать получения всех файлов каждый раз, когда ,