+7(983)178-57-68

Новые горизонты успешного бизнеса!

Главная Посчитать и заказатьОставить заявку Статьи Отзывы Контакты

Постраничный вывод информации (текста) из файла на PHP

Очень часто возникает необходимость, а иногда просто желание,

сделать постраничный вывод какой-либо информации.


Например, по 10 новостей на странице.

В нашем примере у нас есть файл file.txt, в котором записаны 22 строки, напишем скрипт, который будет выводить по 5 строк на странице.

При этом мы сделаем удобную навигацию, отображаться будет несколько страниц.


<?php
// файл в массив
$file=@file("file.txt");
// считаем строки
$count=count($file);
// количество строк на странице
$max="5";

$total=ceil($count/$max);

if(empty($_GET["p"])){$_GET["p"]="1";}
$p=$_GET["p"];

if(!ctype_digit($p) or $p>$total):
$p="1";
endif;

$first=$p*$max-$max;
$last=($p*$max)-1;

for($i=$first;$i<=$last;$i++):
if(@$file[$i]):
print "$file[$i]<br>";
endif;
endfor;

if($total>0):
#две назад
print "<div>";
if(($p-2)>0):
$ptwoleft="<a class='first_page_link' href='index.php?p=".($p-2)."'>".($p-2)."</a> ";
else:
$ptwoleft=null;
endif;

#одна назад
if(($p-1)>0):
$poneleft="<a class='first_page_link' href='index.php?p=".($p-1)."'>".($p-1)."</a> ";
$ptemp=($p-1);
else:
$poneleft=null;
$ptemp=null;
endif;

#две вперед
if(($p+2)<=$total):
$ptworight=" <a class='first_page_link' href='index.php?p=".($p+2)."'>".($p+2)."</a>";
else:
$ptworight=null;
endif;

#одна вперед
if(($p+1)<=$total):
$poneright=" <a class='first_page_link' href='index.php?p=".($p+1)."'>".($p+1)."</a>";
$ptemp2=($p+1);
else:
$poneright=null;
$ptemp2=null;
endif;

# в начало
if($p!=1 && $ptemp!=1 && $ptemp!=2):
$prevp="<a href='index.php' class='first_page_link' title='В начало'><<</a> ";
else:
$prevp=null;
endif;

#в конец
if($p!=$total && $ptemp2!=($total-1) && $ptemp2!=$total):
$nextp=" ... <a href='index.php?p=".$total."'".$total."' class='first_page_link'>$total</a>";
else:
$nextp=null;
endif;

print "<br>".$prevp.$ptwoleft.$poneleft.'<span class="num_page_not_link"><b>'.$p.'</b></span>'.$poneright.$ptworight.$nextp;
print "</div>";
endif;
?>

Демонстрация

Давайте изменим код и позволим пользователю самому выбирать количество строк на странице.
Например 5 | 10 | 20

Мы создали другой файл, назвали его news.php
Пишем в него следующий код:
<?php
$file=@file("file.txt");
$count=count($file);

$link="<a href='news.php?n=5'>5</a>";
$link2="<a href='news.php?n=10'>10</a>";
$link3="<a href='news.php?n=20'>20</a>";

// получаем кол-во строк
if(isset($_GET["n"])):
$n=$_GET["n"];
else: $n="5";
endif;

$temp_array=array("5","10","20");
if(!ctype_digit($n) or !in_array($n,$temp_array)):
$n="15";
endif;

switch($n):
case 5:
$max="5"; $link="<b>5</b>";
break;

case 10:
$max="10"; $link2="<b>10</b>";
break;

case 20:
$max="20"; $link3="<b>20</b>";
break;
endswitch;

$total=ceil($count/$max);

// вводим переменную, указывающую номер страницы
if(empty($_GET["p"])){$_GET["p"]="1";}
$p=$_GET["p"];

if(!ctype_digit($p) or $p>$total):
$p="1";
endif;
$first=$p*$max-$max;
$last=($p*$max)-1;

print "Строк на страницу: $link | $link2 | $link3<br><br>";

for($i=$first;$i<=$last;$i++):
if(@$file[$i]){print "$file[$i]<br>";}
endfor;

if($total>0):
#две назад
print "<div>";
if(($p-2)>0):
$ptwoleft="<span id='first_page_link'><a class='first_page_link' href='news.php?n=$n&p=".($p-2)."'>".($p-2)."</a></span> ";
else:
$ptwoleft=null;
endif;

#одна назад
if(($p-1)>0):
$poneleft="<span id='first_page_link'><a class='first_page_link' href='news.php?n=$n&p=".($p-1)."'>".($p-1)."</a></span> ";
$ptemp=($p-1);
else:
$poneleft=null;
$ptemp=null;
endif;

#две вперед
if(($p+2)<=$total):
$ptworight=" <span id='first_page_link'><a class='first_page_link' href='news.php?n=$n&p=".($p+2)."'>".($p+2)."</a></span>";
else:
$ptworight=null;
endif;

#одна вперед
if(($p+1)<=$total):
$poneright=" <span id='first_page_link'><a class='first_page_link' href='news.php?n=$n&p=".($p+1)."'>".($p+1)."</a></span>";
$ptemp2=($p+1);
else:
$poneright=null;
$ptemp2=null;
endif;

# в начало
if($p!=1 && $ptemp!=1 && $ptemp!=2):
$prevp="<span id='first_page_link'><a href='news.php?n=$n&p=1' class='first_page_link' title='В начало'><<</a></span> ";
else:
$prevp=null;
endif;

#в конец
if($p!=$total && $ptemp2!=($total-1) && $ptemp2!=$total):
$nextp=" ... <span id='first_page_link'><a href='news.php?n=$n&p=".$total."'".$total."' class='first_page_link'>$total</a></span>";
else:
$nextp=null;
endif;

print "<br>".$prevp.$ptwoleft.$poneleft.'<span class="num_page_not_link"><b>'.$p.'</b></span>'.$poneright.$ptworight.$nextp;
print "</div>";
endif;
?>

Демонстрация


Остались вопросы? Спрашивайте!


Понравилась статья? Расскажи другим :)

Опубликовано: | Просмотров: 10087