#php #navigation #pagination
#php #навигация #разбивка на страницы
Вопрос:
Я хотел бы изменить приведенный ниже сценарий, чтобы в нем не было номеров нумерации страниц, только кнопки «Предыдущий» и «Следующий». Я бы хотел, чтобы предыдущие / следующие ссылки отображались / были выделены серым цветом в зависимости от того, существует ли следующая / предыдущая страница. Например, если вы находитесь на странице 1, кнопка previous не будет отображаться, потому что страница 0 не существует.
Скрипт, который я использую в данный момент, извлекает данные из текстового файла, создавая динамические страницы, и создает разбивку на страницы на основе этого:
(перед началом html)
$data=file("brief.txt");
$pages=0;
foreach($data as $temp){
$x=explode("|",$temp);
if($x[0]>0){
$pages=$pages 1;
}
}
if($_GET['p']){
$page=$_GET['p'];
}
if($_GET['i']){
$index=$_GET['i'];
}
if($index == "p"){
$page=$page-1;
}
if($index == "n"){
$page=$page 1;
}
if($page < 1){
$page=1;
}
if($page > $pages){
$page=$pages;
}
$line=$data[$page-1];
$fields=explode("|",$line);
?>
(в разделе тела)
<?php
$show=6;
echo "<li><a href='?i=pamp;p=$page'>amp;#171; PREV</li></a>";
if($page-($show/2) > 1){
$temp=$page-$show;
echo "<li><a href='?p=$temp'>...</li></a>";
}
if($page-($show/2) >= 1 amp;amp; $page ($show/2) <= $pages){
$start=$page-($show/2);
$stop=$page ($show/2);
}
if($page-($show/2) < 1){
$start=1;
$stop=$show;
}
if($page ($show/2) > $pages){
$start=$pages-$show;
$stop=$pages;
}
for($i=$start; $i<=$stop; $i ){
if($page==$i){
echo "<li class='active'>$i</li></a>";
}
else{
echo "<li><a href='?p=$i'>$i</li></a>";
}
}
if($page ($show/2) < $pages){
$temp=$page $show;
echo "<li><a href='?p=$temp'>...</li></a>";
}
echo "<li><a href='?i=namp;p=$page'>NEXT amp;#187;</li></a>";
?>
Я получил только следующие и предыдущие кнопки для отображения и работы, просто изменив сценарий на этот:
<?php
echo "<li><a href='?i=pamp;p=$page'>amp;#171; PREV</li></a>";
echo "<li><a href='?i=namp;p=$page'>NEXT amp;#187;</li></a>";
?>
Но я не знаю, куда идти дальше. Любая помощь была бы потрясающей! 🙂
Ответ №1:
Во-первых, вложение тегов неверно — </a> должно быть перед </li> . Во-вторых, код не очень элегантный — он мог бы быть намного короче.
Но чтобы ответить на ваш вопрос об отключении ссылок, вы могли бы просто использовать
<?php
if($page == 1) echo "<li>echo amp;#171; PREV</li>" else echo "<li><a href='?i=pamp;p=$page'>amp;#171; PREV</a></li>";
if($page == $pages) echo "<li>echo NEXT amp;#187;" else echo "<li><a href='?i=namp;p=$page'>NEXT amp;#187;</a></li>";
?>
(общее количество страниц можно найти в $pages).
Комментарии:
1. Спасибо! 🙂 Хотя у меня были некоторые проблемы с частями <li>echo, поэтому я изменил его на это: if ($page == 1) echo «»; else echo «<li><a href=’?i=pamp;p= $page’>amp;#171;ПРЕДЫДУЩЕЕ </li></a>»;
2. Думаю, это тоже хорошо 🙂