Нашел на форуме пагинатор и прикрепил на мой сайт.Вроде бы нормальный,смотриться на сайте красиво но вот только проблема которую я не могу решить уже 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
Покажи исх код твоей страницы, где пагинатор.
Не правду говоришь.
datvid
Покажи исх код твоей страницы, где пагинатор.
Спустя 7 минут, 3 секунды (7.07.2011 - 10:52) SoMeOnE написал(а):
alex12060
Я имею ввиду что за выделенее страницы отвечает этот участок
Просто при выполнении условия этот участок кода срабатывает только в том случае если $i=1. Соответственно надо искать, что в какой момент работает неправильно. Может я неккоректно выразился...)
Разве я не прав...)?
Я имею ввиду что за выделенее страницы отвечает этот участок
$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 - правая кнопка мыши, исходный код страниы
Нет, нет. То,что получается в браузере. Исходный код страницы.
В 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
то пробуй поиграться с сессиями.
Иначе, делай как я сказал.
В твоем случае, обработчику об этом говорит $_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...
Придеться наверное оставить paginator 3000...
Спустя 2 минуты, 1 секунда (7.07.2011 - 11:27) alex12060 написал(а):
datvid
30р на WebMoney - сделаю как тебе надо х)
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](http://phpforum.ru/html/emoticons/rolleyes.gif)
с рекламы гугла заработать можно больше пока вы тут вопрос решите )