[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ПОСТРАНИЧНАЯ НАВИГАЦИЯ
denkut
здравствуйте, я хотел бы себе на сайт установить скрипт постраничной навигации как на сайте: http://knigaluby.ru/, к сожалению не смог найти sad.gif кто знает или у кого-то есть этот скрипт, поделитесь пожалуйста!!!



Спустя 26 минут (4.06.2009 - 22:43) Joker написал(а):
покажи сайт свой... вообще он делаеться легко с помощью выборки из базы

Спустя 21 минута, 41 секунда (4.06.2009 - 23:04) glock18 написал(а):
с использованием LIMIT в теле запроса

Спустя 3 минуты, 6 секунд (4.06.2009 - 23:07) Joker написал(а):
Ну не только) сначало нужно еще COUNT(*) использовать чтоб узнать из скольки запией делать выборку по лимиту

Спустя 6 часов, 27 минут, 11 секунд (5.06.2009 - 05:35) xXx_StIl_xXx написал(а):
это вставляеш перед циклом:


PHP
$myrow77 = "По сколько пунктов выводить на страницу";
$num = $myrow77;
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM Имя табличи с данными");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total =  intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
  if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start


это в тело запроса:
в конец

SQL
LIMIT $start, $num


Пример:


SQL
"SELECT id,title,description,author,date,q_vote,rating,view FROM lessons ORDER BY id DESC LIMIT $start, $num"



это вставляеш туда где хочеш видеть кнопки переключения страниц
PHP
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=имя твоей страници.php?page=1>Первая</a> | <a href=имя твоей страници.php?page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=имя твоей страници.php?page='. ($page + 1) .'>Следующая</a> | <a href=имя твоей страници.php?page=' .$total. '>Последняя</a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=имя твоей страници.php?page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if(
$page - 4 > 0) $page4left = ' <a href=имя твоей страници.php?page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if(
$page - 3 > 0) $page3left = ' <a href=имя твоей страници.php?page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if(
$page - 2 > 0) $page2left = ' <a href=имя твоей страници.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if(
$page - 1 > 0) $page1left = '<a href=имя твоей страници.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';

if(
$page + 5 <= $total) $page5right = ' | <a href=имя твоей страници.php?page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if(
$page + 4 <= $total) $page4right = ' | <a href=имя твоей страници.php?page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if(
$page + 3 <= $total) $page3right = ' | <a href=имя твоей страници.php?page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if(
$page + 2 <= $total) $page2right = ' | <a href=имя твоей страници.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if(
$page + 1 <= $total) $page1right = ' | <a href=имя твоей страници.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>';

// Вывод меню если страниц больше одной

if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}



незабудь изменить на свои параметры

Спустя 6 минут, 5 секунд (5.06.2009 - 05:41) xXx_StIl_xXx написал(а):
тут статья как сделать эти кнопки красивыми http://www.css-school.ru/lessons/4-urok-cs...tranicami..html

Спустя 4 часа, 10 минут (5.06.2009 - 09:51) gooder отдыхающий написал(а):

Спустя 22 минуты, 28 секунд (5.06.2009 - 10:13) glock18 написал(а):
PHP
// Находим две ближайшие станицы с обоих краев, если они есть
if($page 0$page5left ' <a href=имя твоей страници.php?page='. ($page 5) .'>'. ($page 5) .'</a> | ';
if(
$page 0$page4left ' <a href=имя твоей страници.php?page='. ($page 4) .'>'. ($page 4) .'</a> | ';
if(
$page 0$page3left ' <a href=имя твоей страници.php?page='. ($page 3) .'>'. ($page 3) .'</a> | ';
if(
$page 0$page2left ' <a href=имя твоей страници.php?page='. ($page 2) .'>'. ($page 2) .'</a> | ';
if(
$page 0$page1left '<a href=имя твоей страници.php?page='. ($page 1) .'>'. ($page 1) .'</a> | ';


Не далее как вчера прочитал про "Китайский кодинг". Это кошмар - такое писать.

PHP
$myrow77 "По сколько пунктов выводить на страницу";
$num $myrow77;

Человека не надо сбивать - новичок может не догадаться, что в $myrow77 на самом деле надо положить число.

Спустя 3 минуты, 59 секунд (5.06.2009 - 10:17) glock18 написал(а):
PHP
if ($total 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);


А вот это очень плохо. Моветон. Учитесь писать без подавления notice'ов. Видите, что у вас используются неинициализированные переменные и вместо того, чтобы их проверять просто подавляете ошибку. Подавление ошибок кстати (если это вызвано "жутко большими" затратами на проверку if isset) занимает гораздо больше времени.

Спустя 1 час, 56 минут, 42 секунды (5.06.2009 - 12:14) Joker написал(а):
Цитата (glock18 @ 5.06.2009 - 13:17)
$myrow77 = "По сколько пунктов выводить на страницу";
$num = $myrow77;


А для чего использовать две перменные которые делают одно и тоже?




Спустя 3 минут, 50 секунд Joker написал(а):
Цитата (xXx_StIl_xXx @ 5.06.2009 - 08:41)
@$page = $_GET['page'];


вот так тоже бессмысленно делтать и после еще проверку цеплять вот такую

Цитата (xXx_StIl_xXx @ 5.06.2009 - 08:35)
$page = intval($page);


лучше сразу так написать

$page = (empty($_GET['page']))?0:intval($_GET['page']);



Спустя 46 минут, 26 секунд (5.06.2009 - 13:00) glock18 написал(а):
PHP
$myrow77 "По сколько пунктов выводить на страницу";
$num $myrow77;

Думаю, 1ая строка это имитация некоторой переменной, которая должна быть определена в конфиге, либо выбрана юзером.

То есть это инициализация этой самой переменной вне конфига в связи отсутствием оного в предоставленном коде (ну не будешь же в форум постить весь конфиг из-за константы (буду называть ее так в этом контексте, ибо фактически это не принципиально) - проще ее объявление в пример перенести).

2ая строка - это вроде как "русификация" константы biggrin.gif непонятно, конечно, зачем нужна. Но константа может иметь более широкое значение (использоваться не только для пейджера, например) тогда это может чисто теоретически иметь смысл.

PHP
@$page $_GET['page'];


А вот это я тоже не заметил сразу. Мой комментарий выше про подавление ошибок этого касается в первую очередь.

Спустя 3 часа, 22 минуты, 28 секунд (5.06.2009 - 16:23) Guest написал(а):
спасибо большое! только стили навигации
очень нужны как на сайте http://knigaluby.ru/

Спустя 40 секунд (5.06.2009 - 16:23) denkut написал(а):
спасибо большое! только стили навигации
очень нужны как на сайте http://knigaluby.ru/

Спустя 7 минут, 30 секунд (5.06.2009 - 16:31) glock18 написал(а):
а что такое "стили навигации" ?

Спустя 25 дней, 19 часов, 21 минута, 5 секунд (1.07.2009 - 11:52) Soldier Ghost написал(а):
Цитата (denkut @ 5.06.2009 - 13:23)
спасибо большое! только стили навигации
очень нужны как на сайте http://knigaluby.ru/

Спустя 2 часа, 22 минуты, 12 секунд (1.07.2009 - 14:14) Sylex написал(а):
ИМХО gooder часто рекламирует Пыху wink.gif

Спустя 3 часа, 20 минут, 35 секунд (1.07.2009 - 17:35) gooder отдыхающий написал(а):
Sylex
а что ж ты для phpforum.ru подобный материал не напишешь?
будут и на него ссылаться

Спустя 51 минута, 4 секунды (1.07.2009 - 18:26) waldicom написал(а):
Цитата (Sylex @ 1.07.2009 - 13:14)
ИМХО gooder часто рекламирует Пыху wink.gif

Там хорошие статьи есть, хорошо написано, почему бы не дать ссылку?
Правда на форуме там такие пиплы есть, которым в плане снобизма дадут фору любому.

Спустя 15 минут, 9 секунд (1.07.2009 - 18:41) gooder отдыхающий написал(а):
waldicom
снобизм?

Спустя 2 минуты, 49 секунд (1.07.2009 - 18:44) waldicom написал(а):
Цитата (gooder @ 1.07.2009 - 17:41)
waldicom
снобизм?

Аха... Только я имел ввиду phpclub.ru/talk/, а не форум пыхи.
Я почему-то подумал, что они вместе.

Спустя 1 месяц, 10 дней, 14 часов, 2 минуты, 54 секунды (12.08.2009 - 08:47) JazzMan написал(а):
Господа, подскажите пожалуйста, я пытался сделать постраничную навигацию...и вобщем то я ее сделал, но почему то данные выводятся некорректно. На первой странице не то количество сообщений которое нужно, а на вторую они не выводятся уже.
Вот скрипт:
PHP
@include("nav.php");
$qu=mysql_query("SELECT * FROM sms WHERE 
family='"
.$family."' AND name='".$name."' AND mname='".$mname."' 
ORDER BY date DESC LIMIT {$start},{$nums}"
) or die(mysql_error());
while(
$rr = mysql_fetch_array($qu))
{
    echo "
    <table border='1'>"
    ....
    echo "</table>";
}
echo "<br/>";
@include(
"nav_1.php");

Спустя 3 часа, 38 минут, 11 секунд (12.08.2009 - 12:25) JazzMan написал(а):
Скрипт nav.php
PHP
$nums=20;
if (isset(
$_GET['page']))
{
    
$page intval($_GET['page']);
}
else
{
    
$page 1;
}
$q=mysql_query("SELECT COUNT(*) AS `counter` FROM sms ") or die(mysql_error());
$row mysql_fetch_array($q);
$elements $row['counter'];
$pages ceil($elements/$nums);
if (
$page 1)
{
    
$page 1;
}
elseif (
$page $pages)
{
    
$page $pages;
}
$start = ($page-1)*$nums;

Спустя 4 минуты, 1 секунда (12.08.2009 - 12:29) JazzMan написал(а):
Скрипт nav_1.php
PHP
$neighbours 6;
$left_neighbour $page $neighbours;
if (
$left_neighbour 1)
{
    
$left_neighbour 1;
}
$right_neighbour $page $neighbours;
if (
$right_neighbour $pages)
{
    
$right_neighbour $pages;
}
if (
$page 1)
{
    print 
' <a href="?page=1">начало</a> ... <a href="?page=' . ($page-1) . '"><назад</a> ';
}
for (
$i=$left_neighbour$i<=$right_neighbour$i++)
{
    if (
$i != $page)
    {
        print 
' <a href="?page=' $i '">' $i '</a> ';
    }
    else
    {
        print 
' <b>' $i '</b> ';
    }
}
if (
$page $pages)
{
    print 
' <a href="?page=' . ($page+1) . '">вперед></a><a href="?page=' $pages '">конец</a> ...  ';
}

ЗЫ: скрипт я взял с пыхи
Подскажите пожалуйста что не так

Спустя 6 часов, 4 минуты, 23 секунды (12.08.2009 - 18:33) Krevedko написал(а):
и какое же количество сообщений выводится ? )
вообще странный скрипт конечно..

Спустя 4 дня, 15 часов, 52 минуты, 56 секунд (17.08.2009 - 10:26) JazzMan написал(а):
я хотел чтоб 20 сообщений выводилось но выводится сообщений 10 или 11, потом рисуются ссылки на следующие страницы но они пустые

Спустя 1 месяц, 1 день, 13 часов, 36 минут, 33 секунды (19.09.2009 - 00:03) Pinoplast написал(а):
чЕЛОВЕК НАВЕРНО ХОЧЕТ ЧТОБ ЕМУ ЯВУ СКРИПТ И СSS НАПИСАЛИ ДЛЯ КНОПОК ))))

Спустя 1 день, 11 часов, 56 минут, 42 секунды (20.09.2009 - 11:59) Pinoplast написал(а):
Цитата (xXx_StIl_xXx @ 5.06.2009 - 02:35)
это вставляеш перед циклом:


PHP
$myrow77 = "По сколько пунктов выводить на страницу";
$num = $myrow77;
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM Имя табличи с данными");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total =  intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
  if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start


это в тело запроса:
в конец

SQL
LIMIT $start, $num


Пример:


SQL
"SELECT id,title,description,author,date,q_vote,rating,view FROM lessons ORDER BY id DESC LIMIT $start, $num"



это вставляеш туда где хочеш видеть кнопки переключения страниц
PHP
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=имя твоей страници.php?page=1>Первая</a> | <a href=имя твоей страници.php?page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=имя твоей страници.php?page='. ($page + 1) .'>Следующая</a> | <a href=имя твоей страници.php?page=' .$total. '>Последняя</a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=имя твоей страници.php?page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if(
$page - 4 > 0) $page4left = ' <a href=имя твоей страници.php?page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if(
$page - 3 > 0) $page3left = ' <a href=имя твоей страници.php?page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if(
$page - 2 > 0) $page2left = ' <a href=имя твоей страници.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if(
$page - 1 > 0) $page1left = '<a href=имя твоей страници.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';

if(
$page + 5 <= $total) $page5right = ' | <a href=имя твоей страници.php?page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if(
$page + 4 <= $total) $page4right = ' | <a href=имя твоей страници.php?page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if(
$page + 3 <= $total) $page3right = ' | <a href=имя твоей страници.php?page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if(
$page + 2 <= $total) $page2right = ' | <a href=имя твоей страници.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if(
$page + 1 <= $total) $page1right = ' | <a href=имя твоей страници.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>';

// Вывод меню если страниц больше одной

if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}



незабудь изменить на свои параметры

народ обьясните пожалуста вот эту фразу, чето немогу ее понять, что в результате попадает в переменую, я так понял что 0 или я ошибаюсь???

PHP
// Извлекаем из URL текущую страницу
@$page $_GET['page'];

Спустя 3 часа, 28 минут, 43 секунды (20.09.2009 - 15:28) twin написал(а):
Это значит, что в переменную может вообще ничего не попасть. А php заткнули рот и он этого сказать не может. Его как корейца, собаками накормили.

Спустя 2 дня, 5 часов, 58 минут, 49 секунд (22.09.2009 - 21:27) Pinoplast написал(а):
Народ подскажыте как подсчитать правильно сколько страниц должно выдовдиться а то пишу так и глюк один выходит

PHP
// Находим общее число страниц выводимых                              
$zagal = round($posts/$num);


$posts - обшее количество выводимых страниц


$num - сколько надо вывести страниц


Если страниц например 6 а выводить надо 5 пунктов то выведуться не все статьи ???? как подсчитать чтоб выводились все???


вывожу в цыкле
PHP
for ($i = 1 ; $i <= $zagal; $i++)  
{  
echo 
"<a href='test.php?zer=$i&&dub=$dub'>".$i." "."</a>"; 
}

Спустя 48 минут, 44 секунды (22.09.2009 - 22:16) Nikitian написал(а):
Откройте для себя ceil() и floor()

Спустя 1 месяц, 12 дней, 11 часов, 59 минут, 15 секунд (5.11.2009 - 11:15) romlg написал(а):
Цитата (glock18 @ 5.06.2009 - 07:13)

PHP
// Находим две ближайшие станицы с обоих краев, если они есть
if($page 0$page5left ' <a href=имя твоей страници.[SPAN=darling]php[/SPAN]?page='. ($page 5) .'>'. ($page 5) .'</a> | ';
if(
$page 0$page4left ' <a href=имя твоей страници.[SPAN=darling]php[/SPAN]?page='. ($page 4) .'>'. ($page 4) .'</a> | ';
if(
$page 0$page3left ' <a href=имя твоей страници.[SPAN=darling]php[/SPAN]?page='. ($page 3) .'>'. ($page 3) .'</a> | ';
if(
$page 0$page2left ' <a href=имя твоей страници.[SPAN=darling]php[/SPAN]?page='. ($page 2) .'>'. ($page 2) .'</a> | ';
if(
$page 0$page1left '<a href=имя твоей страници.[SPAN=darling]php[/SPAN]?page='. ($page 1) .'>'. ($page 1) .'</a> | ';


Не далее как вчера прочитал про "Китайский кодинг". Это кошмар - такое писать.



Вот эта часть мне очень пригодилась для написания навигации при очень большом количестве страниц.. порядка 800-900, т.к. считаю отимальней выполнить 5 if чем 900 for или while.

Спустя 5 минут, 48 секунд (5.11.2009 - 11:21) glock18 написал(а):
romlg
омг, насмешил laugh.gif laugh.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.