Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Гостевая книга, вывод сообщений 
:(
    Опции темы
Troy Evans
Дата 23.3.2004, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 2.3.2004

Репутация: нет
Всего: нет



Ребята, я прошу прощения...
Кто-нибудь знает как реализовать постраничный вывод сообщений в гостевой книге, либо где можно посмотреть похожий код?!
Буду признателен всем кто поможет!..

PM MAIL ICQ   Вверх
Baster
Дата 23.3.2004, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 11.1.2004

Репутация: нет
Всего: 1



ну ты скажи у тебя на чём книга ? mysql ? текстовики ?
PM MAIL   Вверх
IZ@TOP
Дата 24.3.2004, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Baster , какая ращница на чем? Тут важен алгоритм.

Значит так, пишу один раз, пишу последний раз. Если кто то будет еще спрашивать, направляйте в эту тему... хотя что то мне кажется что это уже обсуждалось mad.gif

И так. Для начала мы закачиваем в массив данные, например из бд, но это не суть важно:
Цитата
$messages = my_func_grab_data();
// На выходе получаем примерно такой массив:
// $messages = array(
//    0 => array(
//        0 => "User name",
//        1 => "Sur name",
//        2 => "email user",
//        3 => "message"
//    );
// );

Но и опять таки, это не суть важно, наш массив может быть абсолютно какой угодно структуры.
Ползем дальше. Определяем максимальное количество сообщений на странице:
Цитата

$max_m = 5; // Допустим что по пять сообщений мы хотим на странице видеть, и не более!

Далее, проверяем, есть ли переменная которая передается через GET (адресную строку в браузере) и отвечает за хранение в себе номер текущей страницы:
Цитата

If(isset($_GET['pn'])) { // Собственно $_GET['pn'] и есть та самая переменая.
    $pn = $_GET['pn'];
    if($pn <= 0) { // Проверка на обнуление или уменьшение.
        $pn = 1; // Если в строку адреса случайно, или по чужому злому умыслу попало ненужное нам значение, то мы это исправляем.
        $ppn = 1;
        $npn = 2;
    } else // Думаю несложно догадаться что если у нас не меньше положеного, то может быть больше  butbut.gif
    if($pn * $max_m > sizeof($messages)) { // Проверка на то что у нас количество страниц не переедет за предел. А если переехало, значит судьба такова  sad.gif
        $pn = ceil(sizeof($messages) / $max_m) - 1;
        $ppn = $pn - 1;
        $npn = $pn;
    } else {
        // Коли все прошло успешно, ставим мы следующую страницу равной + 1 к текущей позиции, а предыдущую - 1 (если разумеется это удволетворяет нашим потребностям).
        $ppn = ($pn != 1) ? $pn - 1 : 1;
        $npn = (ceil(sizeof($messages) / $max_m) != $pn) ? $pn + 1 : ceil(sizeof($messages) / $max_m) - 1;
    }
}

Так, значит с этим мы разобрались, теперь нам осталось собственно вывести все данные:
Цитата

$i = $pn * $max_m - $max_m; // Вычисляем текущую позицию.
$e = ($i + $max_m <= sizeof($messages)) ? $i + $max_m : sizeof($messages); // Вычисляем сколько сообщений вывдить. причем если у нас так получится что одного индекса будет не хватать, то нужно как то это дело урезать. Что мы и сделали приравняв конечный итог к длинне самого массива с сообщениями.
Ну а далее поехали print'ом или echo'м в цикле фигачить сообщения на страницу:
while($i < $e) {
    printing_messages_funtion($messages[$i]);
    $i++;
}


Ну а теперь нам ни чего не стоит джать ссылку на следующую страницу:
Цитата

echo "<a href=\"?pn={$ppn}\">Предыдущая</a><br>";
echo "<a href=\"?pn={$npn}\">Следующая</a><br>";


Вот и все. Если что то не понятно, спрашивайте (но как говорится, прежде чем задать какой то вопрос - посмотрите в FAQ!!! mad.gif )!


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Wowa
Дата 24.3.2004, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



если MySQL, то с использованием конструкции LIMIT выбирается нужное кол-во записей начиная с такой-то записи.
PM WWW   Вверх
IZ@TOP
Дата 24.3.2004, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Admin , да! Чуть не забыл... можно тогда конструкцию совсем иначе построить smile.gif

Добавлено @ 00:17
ЧТо то типа:
Цитата
$cp->FETCH = MYSQL_NUM;
$slimit = 0;
$order = "lid";
$sort_to = 'ASC';
$nextsort = 'd';
$limit = MAX_RESULT_TO_PAGE;
if(isset($_GET['orderby'])) {
$order = $_GET['orderby'];
}
if(isset($_GET['sortto'])) {
if($_GET['sortto'] == 'a') {
  $sort_to = 'ASC';
  $nextsort = 'd';
} else {
  $sort_to = 'DESC';
  $nextsort = 'a';
}
}
if($count_document[0] > MAX_RESULT_TO_PAGE) {
if(isset($_GET['slimit'])) {
  $slimit = $_GET['slimit'];
}
$prevlimit = ($slimit - $limit < 0)? 0 : $slimit - $limit;
$nextlimit = ($slimit + $limit > $count_document[0])? $slimit : $slimit + $limit;
$prevmeta = "<a class=\"normal\" href=\"?".GOMOD."={$cp->mod}&".RESOURCE."={$cp->res}&slimit={$prevlimit}\">предыдущая</a>";
$nextmeta = "<a class=\"normal\" href=\"?".GOMOD."={$cp->mod}&".RESOURCE."={$cp->res}&slimit={$nextlimit}\">следующая</a>";
$curpage = ceil(($slimit == 0)? 1 : $slimit / $limit + 1);
$maxpage = ceil(($count_document[0] < $limit)? 1 : $count_document[0] / $limit);
$countpage = "Страница {$curpage} из {$maxpage}";
} else {
$countpage = "Страница 1 из 1";
$prevmeta = "предыдущая";
$nextmeta = "следующая";
}
$document = $cp->query("select lid, name, title, created, updated from TABLE_DOCUMENT order by '{$order}' {$sort_to} limit {$slimit}, {$limit}");



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Troy Evans
Дата 24.3.2004, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 2.3.2004

Репутация: нет
Всего: нет



Спасибо!!!
В следующий раз с тривиальными вопросами полезу читать FAQ! rolleyes.gif
PM MAIL ICQ   Вверх
IZ@TOP
Дата 24.3.2004, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Ладно, если у кого то вдруг возникнут вопросы - тему я не закрываю.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1427 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.