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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: (Статья) Разделение конекта на станицы

Сообщения:  [1-10]   [11-19] 

 
 автор: Artem S.   (14.12.2004 в 01:54)   письмо автору
 
   для: Кузнецов М.В.   (14.12.2004 в 00:19)
 

Рад что внес свой скромный вклад в SoftTime INFO

   
 
 автор: Кузнецов М.В.   (14.12.2004 в 00:19)   письмо автору
 
   для: Artem S.   (12.12.2004 в 22:40)
 

-

http://www.softtime.ru/info/articlephp.php

   
 
 автор: Кузнецов М.В.   (13.12.2004 в 22:05)   письмо автору
 
   для: cheops   (13.12.2004 в 18:52)
 

ок

   
 
 автор: cheops   (13.12.2004 в 18:54)   письмо автору
 
   для: Artem S.   (13.12.2004 в 16:06)
 

Я не тороплю, сами мы долго пишем :))) - просто хотел узнать планы....

   
 
 автор: cheops   (13.12.2004 в 18:52)   письмо автору
 
   для: Кузнецов М.В.   (13.12.2004 в 18:32)
 

Дай ссылку на http://www.softtime.ru/info/articlephp.php?id_article=24 - там содержимое config.php описан.

   
 
 автор: Кузнецов М.В.   (13.12.2004 в 18:32)   письмо автору
 
   для: Artem S.   (13.12.2004 в 16:33)
 

Небольшое замечание. Отдельным примечанием, или описанием к коду надо пояснить, что такое include "config.php" и как так в одной строчке происходит соединение с БД. Ну что-нибудь вроде "Файл config.php содержит код... и т.д.". Можно этот код отдельно привести.

   
 
 автор: Кузнецов М.В.   (13.12.2004 в 17:50)   письмо автору
 
   для: Artem S.   (13.12.2004 в 17:47)
 

ок

   
 
 автор: Artem S.   (13.12.2004 в 17:47)   письмо автору
 
   для: Кузнецов М.В.   (13.12.2004 в 17:39)
 

ФИО - С.А.Н. ; )

Семенов А.Н.
Думаю достаточно

   
 
 автор: Кузнецов М.В.   (13.12.2004 в 17:39)   письмо автору
 
   для: Artem S.   (13.12.2004 в 16:33)
 

В печать :) Если еще чего добавить не пожелаете, я статью забираю и добавляю. Скиньте мне Ваши подлинные ФИО, чтобы я знал как автора правильно написать :)

   
 
 автор: 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>'; 
?> 

   

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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