|
|
| |
|
|
| |
для: QWPLJ
(11.07.2006 в 16:46)
| | | Есть статья на этом сайте - "Постраничная навигация" - http://www.softtime.ru/info/articlephp.php?id_article=33
Но там записи хранятся СУРБД MySQL, а не в файловой - файле. Делая свой сайт, я столкнулся с такой же проблемой. Вот мое решение - точнее краткая форма решения. Я использовал вышеупомянутую статью.
<?
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
$num = 3; // сколько записей необходимо отобразить
$array = file('somefile.csv'); //файл - массив
//если надо перевернуть массив, чтобы первая запись на странице была последней записью в файле
$new_array = array_reverse($array);
// Определяем общее число сообщений в базе данных
totals = count($array);
// Находим общее число страниц
$total = intval(($totals - 1) / $num) + 1;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
//теперь надо вытащить необходимое число записей / строк из файла
// подробнее о функции: http://ru.php.net/manual/ru/function.array-slice.php
$strs = array_slice($new_array , $start, $num);
//далее надо вывести записи на экран / в браузер
//если в файле записи представлены как строки, объединеныые разделителем # или любым другим, например, date#title#text#, в цикле разбиваем разбитый массив
foreach($strs as $new_strs)
{
$n_strs = explode('#', $new_strs);
echo $n_strs[0].' - '.$n_strs[1].'<br />'.$n_strs[2].'<hr>'<br>;
}
//теперь надо вывести навигацию
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href= ./page?page=1><<</a>
<a href= ./page?page='. ($page - 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href= ./page?page='. ($page + 1) .'>></a>
<a href= ./page?page=' .$total. '>>></a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href= ./page?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href= ./page?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href= ./page?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href= ./page?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
?>
|
| |
| |
|
|
| |
|
|
| | Люди, как осуществить систему сортировки записей по типу "Следующие" - "Предыдущие". Вообщем, нужно сделать нечто похожее на ту систему, которая обычно бывает в гостевых книгах: когда записей много, то они разбиваются на несколько частей и на странице выводится не больше определённого количества сообщений. И при этом добавляются ссылки "Следующие" - "Предыдущие". Допустим, у меня есть файл, в котором много записей (строк). Я хочу, чтобы на странице выводилось из этого файла не более, скажем, трёх строк. А оставшиеся строки были бы доступны по ссылкам "Следующие" - "Предыдущие". Как такое осуществить попроще? Может, есть какой универсальный готовый скрипт? Заранее спасибо! | |
| |
|
|
|