[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: php paginator. Подскажите где ощибка?
datvid
Доброго утра Всем!
Нашел на форуме пагинатор и прикрепил на мой сайт.Вроде бы нормальный,смотриться на сайте красиво но вот только проблема которую я не могу решить уже 5-ый день.
При нажатии на нумированные ссылки переход со страницы на страницу оссуществляется нормально ,но при открытии любой новой странички пагинатор постоянно показывает ,что открыта первая страничка...? Подскажите ,где ошибка?
Привожу код пагинатора:

 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) $return .= ' <a href="'. $i .'.php">'. $i .'</a> ';
else $return .= ' <b>'. $i .'</b> ';
}
if ($page < $total) $return .= ' <a href="'. ($page + 1) .'.php">>></a> . . . <a href="'. $total .'.php">конец</a> ';
return $return;
}

}




Спустя 38 минут (7.07.2011 - 09:52) SoMeOnE написал(а):
Ошибка находится вот здесь
if ($i !== $page) $return .= ' <a href="'. $i .'.php">'. $i .'</a> ';
else $return .= ' <b>'. $i .'</b> ';

Отладкой займись)
И зачем вот такая запись
$i !== $page
Нельзя просто
$i != $page

Спустя 42 минуты, 23 секунды (7.07.2011 - 10:35) datvid написал(а):
Может конкретнее подскажешь!!!

Спустя 10 минут, 34 секунды (7.07.2011 - 10:45) alex12060 написал(а):
SoMeOnE

Не правду говоришь.

datvid

Покажи исх код твоей страницы, где пагинатор.

Спустя 7 минут, 3 секунды (7.07.2011 - 10:52) SoMeOnE написал(а):
alex12060
Я имею ввиду что за выделенее страницы отвечает этот участок
$return .=  ' <b>'. $i .'</b> ';

Просто при выполнении условия этот участок кода срабатывает только в том случае если $i=1. Соответственно надо искать, что в какой момент работает неправильно. Может я неккоректно выразился...)
Разве я не прав...)?

Спустя 1 минута, 24 секунды (7.07.2011 - 10:54) datvid написал(а):
<div class="pagination">
<?php
include ("parts/pagination.php")
?>

<? 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) $return .= ' <a href="'. $i .'.php">'. $i .'</a> ';
else $return .= ' <b>'. $i .'</b> ';
}
if ($page < $total) $return .= ' <a href="'. ($page + 1) .'.php">>></a> . . . <a href="'. $total .'.php">конец</a> ';
return $return;
}

}
?>
</div>

Спустя 8 минут, 18 секунд (7.07.2011 - 11:02) alex12060 написал(а):
datvid

Нет, нет. То,что получается в браузере. Исходный код страницы.

В Opera и FF - правая кнопка мыши, исходный код страниы

Спустя 2 минуты, 51 секунда (7.07.2011 - 11:05) alex12060 написал(а):

elseif ($page > $total) $page = $total;


Замени на


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

Спустя 1 минута, 31 секунда (7.07.2011 - 11:06) datvid написал(а):
<div class="pagination">
<
b>1</b> <a href="2.php">2</a> <a href="3.php">3</a> <a href="4.php">4</a> <a href="2.php">>></a> . . . <a href="17.php">конец</a>
</
div>

Спустя 2 минуты, 5 секунд (7.07.2011 - 11:08) alex12060 написал(а):
datvid

Так в чем ошибка то? оО
Все правильно выводится...


Въехал, ща.

Спустя 50 секунд (7.07.2011 - 11:09) datvid написал(а):
Заменил,тоже самое

Спустя 1 минута, 25 секунд (7.07.2011 - 11:11) datvid написал(а):
Исходный код я написал при открытии второй страницы...
А как видишь показано как будто открыта первая страничка..

Спустя 1 минута, 19 секунд (7.07.2011 - 11:12) alex12060 написал(а):
$page = !empty($_GET['page']) ? (int)$_GET['page'] : 1;


Сможешь мне объяснить, для чего эта строка нужна?

Спустя 2 минуты, 53 секунды (7.07.2011 - 11:15) datvid написал(а):
Не знаю!!! Я этот пагинатор вчистую списал и просто добавил где надо было .php

Спустя 3 минуты, 26 секунд (7.07.2011 - 11:18) alex12060 написал(а):
Чтобы твой пагинатор работал, нужно обработчику иметь представление, о какой странице идет речь.
В твоем случае, обработчику об этом говорит $_GET параметр.

Страницы должны быть сформированы вот так - page.php?page=1 \ page.php?page=2 \ page.php?page=3 \ page.php?page=N

А у тебя голяк.
Вот скрипт и думает, что ты все время на 1 странице, так как параметра нет.

Если тебе нужно делать так, именно с такими страницами - 1.php, 2.php, 3.php...N.php
то пробуй поиграться с сессиями.

Иначе, делай как я сказал.

Спустя 6 минут, 40 секунд (7.07.2011 - 11:25) datvid написал(а):
Спасибо конечно за помощь!! Но я наверное не смогу сам переделать...
Придеться наверное оставить paginator 3000...

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

30р на WebMoney - сделаю как тебе надо х)

Спустя 2 минуты, 23 секунды (7.07.2011 - 11:29) datvid написал(а):
Спасибо за помощь!!!! Придеться мне оставить на сайте paginator 3000

Спустя 4 минуты, 42 секунды (7.07.2011 - 11:34) tatti написал(а):
мля я в шоке )

Спустя 1 минута, 43 секунды (7.07.2011 - 11:36) datvid написал(а):
Отчег же в шоке!!!

Спустя 19 минут, 19 секунд (7.07.2011 - 11:55) tatti написал(а):
$1 за починку скрипта rolleyes.gif
с рекламы гугла заработать можно больше пока вы тут вопрос решите )
Быстрый ответ:

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