Здравей!
Преди време с помощта на Админ бях писал подобен код. Ето ти го във вид, който включва определен брой файлове от една директория и ги страницира. Намерих кода в личния си компютър, но го има и в други теми тук, даже някъде го бях предложил и за организирането на проста галерия.
В този си вид включва файловете:
<?
$g=opendir("/home/www/probna.com/direktoriq_s_fajlovete");
while ($fajl= readdir( $g ) )
{
if(!is_dir($fajl) && !is_link($fajl) && $fajl != ".." && $fajl != ".") {
$fm[]=$fajl;
}
}
closedir ($g);
sort($fm) ; // за нуждата от тази функция виж по-долу
$broinastranica = 5;
$pageNum = 1;
if(isset($_GET['page']))
{
$pageNum =$_GET['page'];
$start = ($pageNum - 1) * $broinastranica;
}
else
{
$start=0;
}
$kolko=count ($fm);
for($i = $start; $i < ($start+$broinastranica); $i++){
$z= $fm[$i];
@include("/home/www/probna.com/direktoriq_s_fajlovete/$z");
if ($i==$kolko) break;
}
$maxPage = ceil($kolko/$broinastranica);
$self = $_SERVER['PHP_SELF'];
$nomeranastranici = '';
for($page = 1; $page <= $maxPage; $page++)
{
if ($page == $pageNum)
{
$nomeranastranici .= " $page ";
}
else
{
$nomeranastranici .= " <a href=\"$self?page=$page\" >$page</a> ";
}
}
if ($pageNum > 1)
{
$page = $pageNum - 1;
$predishna = " <a href=\"$self?page=$page\" > << </a> ";
$parva = " <a href=\"$self?page=1\" >FIRST page</a> ";
}
else
{
$predishna = ' ';
$parva = ' ';
}
if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
$sledvashta = " <a href=\"$self?page=$page\" > >> </a> ";
$posledna = " <a href=\"$self?page=$maxPage\" >LAST page</a> ";
}
else
{
$sledvashta = ' ';
$posledna = ' ';
}
echo $parva . $predishna . $nomeranastranici . $sledvashta . $posledna;
?>
Кода работи, ползвал съм го за какво ли не, пред инклуд има @ защото изписва предупреждение (вече не помня причината, мисля че се появяваше в случите, когато остатъчните файлове са по-малко от зададения брой за листване), за всеки случй е сложена и командата брейк, която ще спре цикъла след достигане на крайния брой файлове.
Друго, което си спомням: реда с кода за отделянето на файловете от директориите го бях взел от някъде, премахва служебите директории (тези с "." и ".."), но останалите попадат в масива и сигурно ще се опитва да ги листва и ще дава грешка, така че в директорията ти трябва да има само файлове. Доколкото разбрах искаш файла с кода да го сложиш в директорията - този поне трябва да стои извън нея.
Преди да го сложиш някъде, огледай го за пропуснати затварящи или отварящи знаци (кавички, скоби), защото го изкрах от по-голям скрипт и може да съм премахнал нещо по невнимание.
Това е. Дано ти свърши работа. Успех!
ПП: Същия код с малко по-ясни обянснения:
http://www.web-tourist.net/forum/viewtopic.php?t=2446
Сещам се, че ако търсиш поредност, може да ти се наложи и някакво сортиране, защото функцията readdir(); чете съдържанието на директорията в случаен ред, а в такъв ред ще попаднат и в масива, който ги съхранява - fm[]. Не зная как подреждаш файловете в директорията, но за да няма разминаване можеш да добавиш един от тези редове:
sort($fm) ;-за да подреди имената на файловете от най-малко към най-голямо или напр: 01, 07, 100,100а, 22, а, bа, cа, сz
rsort($fm);- за да ги подреди в низходящ ред. По подразбиране РНР сортира имената по азбучен ред, а числата по големина.
Ако има проблем, пиши! След като един месец не ми оставаше време да помисля за код, смятам тези дни да си наваксам
