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

   

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

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

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