Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Система разбивки вывода сообщений.
 
 автор: QWPLJ   (11.07.2006 в 16:46)   письмо автору
 
 

Люди, как осуществить систему сортировки записей по типу "Следующие" - "Предыдущие". Вообщем, нужно сделать нечто похожее на ту систему, которая обычно бывает в гостевых книгах: когда записей много, то они разбиваются на несколько частей и на странице выводится не больше определённого количества сообщений. И при этом добавляются ссылки "Следующие" - "Предыдущие". Допустим, у меня есть файл, в котором много записей (строк). Я хочу, чтобы на странице выводилось из этого файла не более, скажем, трёх строк. А оставшиеся строки были бы доступны по ссылкам "Следующие" - "Предыдущие". Как такое осуществить попроще? Может, есть какой универсальный готовый скрипт? Заранее спасибо!

   
 
 автор: Alex Kraft   (11.07.2006 в 20:30)   письмо автору
 
   для: 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 0$page2left ' <a href= ./page?page='. ($page 2) .'>'. ($page 2) .'</a> | '
if(
$page 0$page1left '<a href= ./page?page='. ($page 1) .'>'. ($page 1) .'</a> | '
if(
$page <= $total$page2right ' | <a href= ./page?page='. ($page 2) .'>'. ($page 2) .'</a>'
if(
$page <= $total$page1right ' | <a href= ./page?page='. ($page 1) .'>'. ($page 1) .'</a>'

// Вывод меню 
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage
?>

   
 
 автор: cheops   (11.07.2006 в 22:47)   письмо автору
 
   для: QWPLJ   (11.07.2006 в 16:46)
 

Это называется постраничной навигацией, вы сможете найти примеры её реализации по ссылкам
http://www.softtime.ru/scripts/pager.php
http://www.softtime.ru/forum/srchform.php?id_forum=1&name=%EF%EE%F1%F2%F0%E0%ED%E8%F7+%ED%E0%E2%E8%E3%E0%F6&numberthemes=30&srchwhere=1&id_forum=0&logic=1&send=%CD%E0%E9%F2%E8

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования