|
|
|
|
|
для: Кузнецов М.В.
(14.12.2004 в 00:19)
| | Рад что внес свой скромный вклад в SoftTime INFO | |
|
|
|
|
|
|
|
|
для: cheops
(13.12.2004 в 18:52)
| | ок | |
|
|
|
|
|
|
|
для: Artem S.
(13.12.2004 в 16:06)
| | Я не тороплю, сами мы долго пишем :))) - просто хотел узнать планы.... | |
|
|
|
|
|
|
|
|
для: Artem S.
(13.12.2004 в 16:33)
| | Небольшое замечание. Отдельным примечанием, или описанием к коду надо пояснить, что такое include "config.php" и как так в одной строчке происходит соединение с БД. Ну что-нибудь вроде "Файл config.php содержит код... и т.д.". Можно этот код отдельно привести. | |
|
|
|
|
|
|
|
для: Artem S.
(13.12.2004 в 17:47)
| | ок | |
|
|
|
|
|
|
|
для: Кузнецов М.В.
(13.12.2004 в 17:39)
| | ФИО - С.А.Н. ; )
Семенов А.Н.
Думаю достаточно | |
|
|
|
|
|
|
|
для: Artem S.
(13.12.2004 в 16:33)
| | В печать :) Если еще чего добавить не пожелаете, я статью забираю и добавляю. Скиньте мне Ваши подлинные ФИО, чтобы я знал как автора правильно написать :) | |
|
|
|
|
|
|
|
для: Artem S.
(12.12.2004 в 22:40)
| | Перед начинающими программистами на PHP часто встаёт проблема постраничной навигации. К разбиению объёмного текста на отдельные страницы прибегают во многих Web-приложениях от гостевых книг и форумов до различных каталогов. Давайте попробуем решит эту проблему. Сначала следует определиться с задачей. Что требуется? Возьмем за пример гостевую книгу, содержащую несколько сотен сообщений, в которой требуется выводить на страницу Х сообщений.
Рассмотрим задачу более конкретно. Сообщения пользователей хранятся в базе данных post со следующей структурой:
- id – номер сообщения,
- text – тело сообщения,
- name – имя автора,
- time – время создания,
В итоге надо получить вывод Х сообщений на станицу, а также организовать удобную навигацию, например, такую: << < ..2|3|4|5|6.. > >> где 4 текущая станица.
Для того чтобы отслеживать текущую страницу будем использовать параметр page, передаваемый через URL, например, www.myserver.com/index.php?page=X. Где X - номер станицы (пусть будет 25).
Приступим.
<?php
// Устанавливаем соединение с базой данных
include "config.php";
// Переменная хранит число сообщений выводимых на станице
$num = 25;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result = mysql_query("SELECT COUNT(*) FROM post");
$posts = mysql_fetch_row($result);
// Находим общее число станиц
$total = intval(($posts - 1) / $num) + 1;
// Определяем начало сообщений для текущей станицы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, но переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM post LIMIT $start, $num");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
?>
|
На этом первая часть закончена. Двумерный массив postrow хранит все поля таблицы post, необходимые для отображения станицы. Вот пример как можно организовать вывод сообщений.
<?php
echo "<table>";
for($i = 0; $i < $num; $i++)
{
echo "<tr><td>".$postrow[$i]['name']."</td><td>".$postrow[$i]['time']."</td></tr>
<tr><td colspan=\"2\">".$postrow[$i]['text']."</td></tr>";
}
echo "</table>";
?>
|
Осталось организовать навигацию. Формируем составляющие будущей навигации.
Коды стрелки «в начало» и «назад» поместим в одну переменную, также поступим и со стрелками «в конец» и «вперед»
<?php
// Проверяем нужны ли стрелки назад
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>';
?>
|
| |
|
|
|
|