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

Форум PHP

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

 

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

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

тема: Посмтраничная навигация

Сообщения:  [1-5] 

 
 автор: Trianon   (14.02.2010 в 02:22)   письмо автору
 
   для: Гавриленко Дмитрий   (14.02.2010 в 02:01)
 

Любой вариант постраничной навигации основан на следующих базовых моментах.

Есть некая масса элементов, которую нужно показывать, но которая целиком слишком тяжела для этого.
Эту массу разбивают на куски (обычно по равному числу элементов на кусок).
Так чтоб каждый кусок можно было за раз вывести на страницу. Поэтому и постраничная.
Каждую такую страницу обозначают отдельной ссылкой ( как правило, указывая, начиная с какого номера элемента пойдет вывод очередной порции)
В задачи скрипта входит
а) получить ссылку и вычислить этот начальный номер элемента
б) определиться с числом элементов на выбранной странице.
в) получить из источника данных указанный набор элементов и вывести его один за другим
г) сформировать ссылки "предыдущая страница", "следующая страница"
д) сформировать ссылки "самая первая страница","самая последняя страница"
г) сформировать ссылки (если нужно) на промежуточные страницы (до и после текущей)
причем, довольно часто формируют не на все, а с некоторым шагом.
Вывести всё полученное.

  Ответить  
 
 автор: Гавриленко Дмитрий   (14.02.2010 в 02:01)   письмо автору
 
   для: GeorgeIV   (18.12.2008 в 18:29)
 

Поднимаю тему. Вот я уже несколько подобных тем просмотрел, но так и не понял как же все таки создается это чертова навигация. Помогите пожалуйста разобраться. Если можите, то напишите в icq 62996218

  Ответить  
 
 автор: StudentPO   (18.12.2008 в 19:18)   письмо автору
 
   для: GeorgeIV   (18.12.2008 в 18:29)
 

поправил кое что

// Проверяем нужны ли стрелки назад  
if ($page != 1) $pervpage = '<a href= ./rezult.php?rezult=1><<</a>  
                             <a href= ./rezult.php?rezult='. ($page - 1) .'><</a> ';  
// Проверяем нужны ли стрелки вперед  
if ($page != $total) $nextpage = ' <a href= ./rezult.php?rezult='. ($page + 1) .'>></a>  
                                   <a href= ./rezult.php?rezult=' .$total. '>>></a>';  

// Находим две ближайшие страницы с обоих краев, если они есть  
if($page - 2 > 0) $page2left = '<a href= ./rezult.php?rezult='. ($page - 2) .'>'. ($page - 2) .'</a> | ';  
if($page - 1 > 0) $page1left = '<a href= ./rezult.php?rezult='. ($page - 1) .'>'. ($page - 1) .'</a> | ';  
if($page + 2 <= $total) $page2right = ' | <a href= ./rezult.php?rezult='. ($page + 2) .'>'. ($page + 2) .'</a>';  
if($page + 1 <= $total) $page1right = ' | <a href= ./rezult.php?rezult='. ($page + 1) .'>'. ($page + 1) .'</a>'; 

// Вывод меню  
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;  


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

  Ответить  
 
 автор: GeorgeIV   (18.12.2008 в 18:29)   письмо автору
 
   для: studentPO   (18.12.2008 в 18:23)
 

$posts в данном случае, это объект. Сначала надо проверить, а был ли вообще результат, а потом взять первый элемент (вы же используете fetch_row, а он возвращает неассоциативный массив)
$total = intval(($posts[0] - 1) / $num) + 1;

  Ответить  
 
 автор: studentPO   (18.12.2008 в 18:23)   письмо автору
 
 

Необходимо сделать постраничную навигацию. Пробую сделать следующим образом

<?php  
// Устанавливаем соединение с базой данных  
 
$connect=mysql_connect("localhost""root""") or die("Сервер не найден");
 
mysql_select_db("base") or die("Таблица не найдена");
// Переменная хранит число сообщений выводимых на станице  
$num 1;  
// Извлекаем из URL текущую страницу  
$page $_GET['page'];  
// Определяем общее число сообщений в базе данных  
$result mysql_query("SELECT COUNT(*) FROM upload");  
$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 upload LIMIT $start$num");  
// В цикле переносим результаты запроса в массив $postrow  
while ( $postrow[] = mysql_fetch_array($result)) 
  
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>";  

  
// Проверяем нужны ли стрелки назад  
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>'

// Вывод меню  
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;  

?> 


Но браузер выдает ошибку
Fatal error: Unsupported operand types in Z:\home\localhost
в строке
$total = intval(($posts - 1) / $num) + 1; 

  Ответить  

Сообщения:  [1-5] 

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

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