Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > небольшая проблема с гостевой книгой


Автор: mc 6.8.2004, 12:22
я новичок в PHP. пишу гостевую книгу.. книга пока что убога и крива, но это только пока smile.gif

я хочу сделать страницы. т.е. чтобы на каждой странице было лишь 10 сообщений. я до одного не вьезжаю, допустим вывел я первые 10 сообщений, а остальные как выводить? сделать создание файла? или заранее несколько файлов чтоли.. брр помогите плиз

Автор: skalex 6.8.2004, 12:30
Надо сделать "постраничную разбивку". Это стандартный элемент для подобных вещей.
Делается очень просто. Определяешь кол-во всех сообщений, делишь на кол-во сообщений, которые должны отображаться на 1 странице - получаешь кол-во страниц.
А дальше циклом формируешь HTML - верстку (грубо говоря цифровые ссылки на страницы с передачей параметра (номера страницы)). Ну а выводишь список сообщений - в зависимости от передаваемого параметра!
Есть конечно и свои ньюансы в этом деле.... hehe.gif

Автор: Ignat 6.8.2004, 12:36
Вот ФАКи по теме http://forum.vingrad.ru/index.php?showtopic=25984

Автор: mc 6.8.2004, 14:24
Цитата
А дальше циклом формируешь HTML - верстку (грубо говоря цифровые ссылки на страницы с передачей параметра (номера страницы)).

можно вот тут поподробней, плиз.

Автор: skalex 6.8.2004, 14:36
Вот простой класс, который делает постраничную разбивку. Только смещение страниц здесь не реализовано. Руки не доходят...

Код
<?php

/**
 * Pager.php - Класс построения простой постраничной навигации.
*/

class Pager {

 /**
  * @var integer - Общее количество элементов
 */
 var $numOfItems;

 /**
  * @var integer - Количество элементов на одной странице
 */
 var $numOnPage;

 /**
  * @var integer - Количество страниц разбиения
 */
 var $numOfPages;

 /**
  * @var integer - Текущая страница
 */
 var $currentPage;

 /**
  * @var string  - Шаблон адреса страницы
 */
 var $urlTemplate;

 /**
  * Конструктор  - Инициализация полей экземпляра класса в зависимости от переданных параметров
  * @param int   - Общее количество элементов
  * @param array - Ассоциативный массив параметров c ключами numOnPage, currentPage, urlTemplate
 */
 function Pager($numOfItems, $parms = array()) {
   $this->numOfItems = $numOfItems;
   foreach ($parms as $key => $value) $this->$key = $value;
 }

 /**
  * Метод show()   - Построение HTML-верстки постраничной навигации
  * @return string - HTML-верстка
 */
 function show() {
   $temp = $this->numOfItems / $this->numOnPage;
   $this->numOfPages = ($temp == intval($temp)) ? $temp : intval($temp) + 1;
   for ($i = 1; $i <= $this->numOfPages; $i++) $html .= ($i == $this->currentPage) ? '<b>'.$i.'</b> ' : '<a href="'.sprintf($this->urlTemplate, $i).'">'.$i.'</a> ';
   return trim($html);
 }

}


?>

Вот - как использовать:

Код
$parms = array(
              'numOnPage'   => 20,
              'currentPage' => $page,
              'urlTemplate' => 'imgnavigator.htm?page=%s'
);
$pager = new Pager([сюда надо подставить общее кол-во элементов], $parms);


Ну а потом, там где необходимо:
Код
echo $pager->show()

Автор: IZ@TOP 6.8.2004, 15:30
Модератор: нзвание темы должно отражать ее суть! И хочу заметить что тема неодноратно обсуждалсь.

Тема закрта и в ближайшее время будет удалена.


PS Если что то непонятно, продолжаем обсуждать все эти вопросы в http://forum.vingrad.ru/index.php?showtopic=25278 теме.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)