[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: не правильно нумируються страницы
datvid
Помогите пожалуйста с пагинатором...
Поставил пагинатор на сайт но при открытии любой страницы в листинге "горит "цифра единица как будто открыта постоянно 1-ая страница.Помогите как это исправить...
Привожу код пагинаторпа



<? class pagination {
public $elements;
public $num = 10;
public $height = 5;

public function createLink() {
$page = !empty($_GET['page']) ? (int)$_GET['page'] : 1;
// Выясняем количество страниц
$total = ceil($this->elements / $this->num);
// Теперь проверяем чтобы переменная page не была меньше 1 и не больше последней страницы
if ($page < 1) $page = 1;
elseif ($page > $total) $page = $total;
// Для лимита в нашем запросе, подсчитываем первый оператор, который
// показывает с какой записи мы начинаем делать выборку

$start = ($page - 1) * $this->num;
$left = $page - $this->height;
if ($left < 1) $left = 1;
$right = $page + $this->height;
if ($right > $total) $right = $total;
// Выводим листинг
$return = '';
if ($page > 1) $return .= ' <a href="1.php">начало</a> . . . <a href="'. ($page - 1) .'.php"><<</a> ';
for ($i = $left; $i <= $right; ++$i)
{
if ($i != $page)
echo ' <a href="?page='. $i .'.php">'.$i.'</a> ';
else
echo ' <b>'. $i .'</b> ';
}
if ($page < $total) $return .= ' <a href="'. ($page + 1) .'.php">>></a> . . . <a href="'. $total .'.php">конец</a> ';
return $return;
}
}
?>




Спустя 1 час, 20 минут, 33 секунды (7.07.2011 - 00:20) DySprozin написал(а):
о да... человек, который писал данный класс, явно знает толк в извращениях (; просто функцией обойтись было нельзяяя, ну никак (; ну это так, лирическое отступление...

Тестируем...
<? class pagination {
public $elements;
public $num = 10;
public $height = 5;

public function createLink() {
$page = !empty($_GET['page']) ? (int)$_GET['page'] : 1;
// Выясняем количество страниц
$total = ceil($this->elements / $this->num);
// Теперь проверяем чтобы переменная page не была меньше 1 и не больше последней страницы
echo '<h1>test_$page:::::'.$page.'</h1>';
echo '<h1>test_$total:::::'.$total.'</h1>';
if ($page < 1) $page = 1;
elseif ($page > $total) $page = $total;
// Для лимита в нашем запросе, подсчитываем первый оператор, который
// показывает с какой записи мы начинаем делать выборку
$start = ($page - 1) * $this->num;
$left = $page - $this->height;
if ($left < 1) $left = 1;
$right = $page + $this->height;
if ($right > $total) $right = $total;
// Выводим листинг
$return = '';
if ($page > 1) $return .= ' <a href="1.php">начало</a> . . . <a href="'. ($page - 1) .'.php"><<</a> ';
for ($i = $left; $i <= $right; ++$i)
{
if ($i != $page)
echo ' <a href="?page='. $i .'.php">'.$i.'</a> ';
else
echo ' <b>'. $i .'</b> ';
}
if ($page < $total) $return .= ' <a href="'. ($page + 1) .'.php">>></a> . . . <a href="'. $total .'.php">конец</a> ';
return $return;
}
}
?>


красные строки себе вставь - что выводит при клацаньи по разным страницам?

Спустя 7 минут, 2 секунды (7.07.2011 - 00:27) datvid написал(а):
??????

Спустя 55 минут, 22 секунды (7.07.2011 - 01:23) tatti написал(а):
datvid
скажи, а зачем $start ?

Спустя 59 минут, 25 секунд (7.07.2011 - 02:22) DySprozin написал(а):
Цитата (datvid @ 7.07.2011 - 01:27)
??????

что именно не понял? вставь себе 2 строки, что я тебе указал:
echo '<h1>test_$page:::::'.$page.'</h1>';
echo '<h1>test_$total:::::'.$total.'</h1>';

и скажи, что выводит

Спустя 4 часа, 27 минут, 11 секунд (7.07.2011 - 06:49) datvid написал(а):
Стало наабарот,номера меняються а страницы нет...

Спустя 6 часов, 19 минут, 53 секунды (7.07.2011 - 13:09) DySprozin написал(а):
datvid
да ты мне скажешь что выводится или нет? laugh.gif

Спустя 8 минут, 25 секунд (7.07.2011 - 13:17) datvid написал(а):
echo '<h1>test_$page:::::'.$page.'</h1>';
echo '<h1>test_$total:::::'.$total.'</h1>';

Спустя 8 минут, 53 секунды (7.07.2011 - 13:26) DySprozin написал(а):
*напевает что-то между "я убью тебя лодочник" и "сколько я зарезал, сколько перерезал, сколько душ я загубил"*

я тебя спрашиваю: что выводят строки:
echo '<h1>test_$page:::::'.$page.'</h1>';
echo '<h1>test_$total:::::'.$total.'</h1>';

если их вставить туда, куда я тебе сказал... ты мне выдаешь те же строки... все, пойду повешусь );

Спустя 37 секунд (7.07.2011 - 13:27) datvid написал(а):
test_$page:::::1
test_$total:::::17



Спустя 53 секунды datvid написал(а):
Не надо вешаться,я уже написал что выдает... wink.gif

Спустя 1 минута, 34 секунды (7.07.2011 - 13:29) DySprozin написал(а):
воот, видишь как просто (с)

"test_$page:::::1" выдает на _любой_ странице?

Спустя 1 минута, 38 секунд (7.07.2011 - 13:30) datvid написал(а):
и что это значит?

Спустя 1 минута, 51 секунда (7.07.2011 - 13:32) DySprozin написал(а):
datvid
вот ты нажал на страничку "2", "горит" цифра единица, правильно?
а на экране все также:
test_$page:::::1
test_$total:::::17

или уже что-то другое? (;

Спустя 3 минуты, 4 секунды (7.07.2011 - 13:35) datvid написал(а):
тоже самое...Я и так знал что при нажатии любой цифровой ссылки при открытии соответствующей странички циферка 1 всегда показывает что будто открыта страница 1

Спустя 2 минуты, 11 секунд (7.07.2011 - 13:37) datvid написал(а):
И где ощибка?

Спустя 1 минута, 57 секунд (7.07.2011 - 13:39) DySprozin написал(а):
datvid
теперь сразу после public function createLink() { вставь строку:

if (empty($_GET['page'])) echo '<h1 style="color:red">Ошибка</h1>';

он тебе выдаст надпись "Ошибка". Также, как и в предыдущем случае, проверь: на любой странице выдает "ошибка"?

Спустя 3 минуты, 22 секунды (7.07.2011 - 13:43) datvid написал(а):
Пустая страница с надписью

Parse error: syntax error, unexpected ']' in /home/lamage/public_html/test.php on line 127

Спустя 1 минута, 45 секунд (7.07.2011 - 13:44) DySprozin написал(а):
datvid
покажи свою 126, 127 и 128 строки

Спустя 1 минута, 58 секунд (7.07.2011 - 13:46) datvid написал(а):
Это было на странице 1-ой а на второй страница открылась нормально.Опять единица и надпись


Ошибка

Спустя 2 минуты, 46 секунд (7.07.2011 - 13:49) datvid написал(а):
public function createLink() {]
if (empty($_GET['page'])) echo '<h1 style="color:red">Ошибка</h1>';



126 пустая

Спустя 1 минута, 24 секунды (7.07.2011 - 13:50) DySprozin написал(а):
а что в адресной строке? примера 2-3 приведи для разных страниц (;

public function createLink() {] - зачем??

Спустя 1 минута, 43 секунды (7.07.2011 - 13:52) datvid написал(а):
В первом случае тоже пишет ощибка..(механически ошибся и исправил)

Спустя 55 секунд (7.07.2011 - 13:53) DySprozin написал(а):
тааак, какие позы мы еще не попробовали?
user posted image

---

я тебе говорю:

Цитата
а что в адресной строке? примера 2-3 приведи для разных страниц (;

Спустя 24 секунды (7.07.2011 - 13:54) datvid написал(а):
Все исправил...Короче во всех случаях одно и тоже пишет красными крупными буквами


Ощибка

Спустя 36 секунд (7.07.2011 - 13:54) DySprozin написал(а):
в третий раз:

Цитата
а что в адресной строке? примера 2-3 приведи для разных страниц (;

Спустя 1 минута, 26 секунд (7.07.2011 - 13:56) DySprozin написал(а):
в адресной строке все время в конце test.php или test.php?page=НОМЕР
??

Спустя 54 секунды (7.07.2011 - 13:56) datvid написал(а):
Везде нормально 1-ая страница- www.lama.ge/1.php
2-ая страница www.lama.ge/2.php

Спустя 4 минуты, 42 секунды (7.07.2011 - 14:01) DySprozin написал(а):
datvid
я убью тебя лодочник... этот скрипт для таких вещей не годится... он годится для страниц вида:
www.lama.ge/index.php?page=1
www.lama.ge/index.php?page=2
www.lama.ge/index.php?page=3
www.lama.ge/index.php?page=4

в принципе, канеш, можно попробовать доработать...

Спустя 2 минуты, 42 секунды (7.07.2011 - 14:04) datvid написал(а):
Мне уже советовали скриптик доработать за долар!!!
А не за бабки слабо?

Спустя 2 минуты, 7 секунд (7.07.2011 - 14:06) datvid написал(а):
Там же немного совсем исправить надо?Наверное здесь?

if ($page < 1) $page = 1;
elseif ($page > $total) $page = $total;

Спустя 1 минута, 35 секунд (7.07.2011 - 14:08) DySprozin написал(а):
Цитата
А не за бабки слабо?

солнце мое, на "слабо" я перестал вестись классе где-то в пятом... в другое время я послал бы тя (; но раз уж начал помогать, надо закончить...

попробуй заменить
$page = !empty($_GET['page']) ? (int)$_GET['page'] : 1;

на

$page = substr(strrchr($_SERVER['SCRIPT_NAME'], "/"), 1);
(int)$page == 0 ? $page = 1 : $page = (int)$page;

Спустя 8 минут, 18 секунд (7.07.2011 - 14:16) datvid написал(а):
Спасибо огромное помогло!!!
Просто на счет "послать " не хорошо звучит,всетаки я наверное ровесник твоих родителей...
Скоро 50 стукнет!
Спасибо еще раз!!!




Спустя 1 минута, 36 секунд (7.07.2011 - 14:17) DySprozin написал(а):
;;Просто на счет "послать " не хорошо звучит
ну извини, грубость на грубость (; "слабо" - тож звучит оскорбительно. для меня (;

;;Спасибо огромное помогло!!!
пожалуйста (;

Спустя 2 минуты, 58 секунд (7.07.2011 - 14:20) datvid написал(а):
Извини за слабо!!! Просто я как видишь из грузии и не знал что это слово оскорбительно!!!

Спустя 5 минут, 18 секунд (7.07.2011 - 14:26) DySprozin написал(а):
datvid
да не в оскорбительности дело... просто после твоего "слабо?" передо мной дилемма: либо помочь - получится, что я повелся на твою провокацию, либо не помогать. Или же помочь, но при этом передать свое настроение. Учитывая, что на "слабо" я не ведусь, остается последние два варианта. Я выбрал не самый худший, согласен?
все, прекращаем флуд :-\

Спустя 9 минут, 33 секунды (7.07.2011 - 14:35) tatti написал(а):
DySprozin
не ведись ) он потом за твой счёт в Батуми поедит отдыхать я его знаю )))

Спустя 22 минуты, 4 секунды (7.07.2011 - 14:57) DySprozin написал(а):
tatti
laugh.gif

да не, просто в след раз отправлю товарища курить мануалы - и пусть радуется :-\
Быстрый ответ:

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