Пытаюсь постраничную навигацию сделать, а параметр посредством $_GET не могу подцепить и все тут. Весь день просидел. Весь инет проглядел. Все попробовал. Не работает. Подскажите, что в этом коде не так. Основная непонятка именно почему параметр $page всегда равен 1. Сама навигация начинается с кода "if ( isset($_GET['page']) )"
<?
include $DOCUMENT_ROOT."/core/config.php";
dbc();
$bsel_an=mysql_query("SELECT count(*) FROM messages where ob_cat=$caid");
while($an=mysql_fetch_array($bsel_an)) { $bit=$an["count(*)"]; }
$maxThread = 500;
$totaltexts="$bit";
$totalPages = ceil( $totaltexts / $maxThread );
$catsql="SELECT * FROM categories where id='$caid'";
$sel_catsql=mysql_query("$catsql");
while($an=mysql_fetch_array($sel_catsql)) {
$categoryname=$an["catname"];
}
$ptitle="$categoryname";
include $DOCUMENT_ROOT."/templates/top.php";
echo "<table width=100%><tr><td valign=top width=240>";
require_once('google_ads_left_top.php');
include "leftmenu.php";
echo "</td><td width=10></td><td valign=top>";
$sql65z="SELECT * FROM categories where id='$caid'";
$sel_an65z=mysql_query("$sql65z");
while($an=mysql_fetch_array($sel_an65z)) {
$acatname=$an["catname"];
$acatdesc=$an["catdesc"];
//$acatdesc = str_replace ("[CITY]", $afcity_name, $acatdesc);
echo "<div class=info><h1>$acatname</h1><br><br>";
echo "<h4>$acatdesc</h4></div><p>";
}
if ( isset($_GET['page']) )
{
$page = (int)$_GET['page'];
if ( $page < 1 ) $page = 1;
}
else
{
$page = 1;
}
echo "<h4>$page</h4>";
$nums = 200;
$query = "SELECT COUNT(*) AS 'counter'
FROM messages where ob_cat=$caid";
$sql = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($sql);
$elements = $row['counter'];
$pages = ceil($elements/$nums);
if ($page < 1) {
$page = 1;
}
elseif ($page > $pages) {
$page = $pages;
}
$start = ($page-1)*$nums;
if ($start < 0) $start = 0;
$query = "SELECT *
FROM messages
where ob_cat=$caid
order by ob_id DESC LIMIT {$start}, {$nums}";
$sql = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_array($sql)) {
$ob_id=$row["ob_id"];
$ob_author=$row["ob_author"];
$ob_phone=$row["ob_phone"];
$ob_email=$row["ob_email"];
$ob_topic=$row["ob_topic"];
$ob_datetime=$row["ob_datetime"];
$ob_cat=$row["ob_cat"];
$ob_desc=$row["ob_desc"];
echo "<table width=100% cellspacing=0 cellpadding=0><tr><td valign=top width=110>";
$fname="$homepath/images/$ob_id/pre1.jpg";
if (file_exists($fname)) {
echo "<a href=/images/$ob_id/1.jpg rel=\"lightbox\"><img src=/images/$ob_id/pre1.jpg alt=\"$ob_author\" title=\"$ob_author\" border=0></a><br><br>";
} else {
echo "<a href=/$ob_id.html><img src=/images/flat.png alt=\"$ob_topic\" title=\"$ob_topic\" border=0 width=100 height=100></a><br><br>";
}
$sql121c="SELECT * FROM categories where id=$ob_cat";
$sel_an121c=mysql_query("$sql121c");
while($an=mysql_fetch_array($sel_an121c)) {
$catnamec=$an["catname"];
}
echo "</td><td valign=top>
<a href=/$ob_id.html title='$ob_author' class=ob_topic>$ob_topic</a><br>
Категория: <strong><a href=/category/$ob_cat class=citylink>$catnamec</a></strong><br>
<ul>
$ob_desc
</ul>
</td></tr></table>
<hr size=1>";
}
$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> ';
}
if ($page == 1)
{
print ' Начало ... Назад ';
}
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>';
}
if ($page == $pages)
{
print ' Вперед ... Конец ';
}
?>
</td></tr></table>
<?
include $DOCUMENT_ROOT."/templates/bottom.php";
?>
Спустя 9 минут, 7 секунд (6.10.2010 - 13:58) inpost написал(а):
paulpozd
Обычная проверка поможет. В самом начале введи: echo $_GET['page']; А в браузере глянуть, как пишется ссылка сама, правильно ли? Она должна в виде быть: lalala.php?page=2
Обычная проверка поможет. В самом начале введи: echo $_GET['page']; А в браузере глянуть, как пишется ссылка сама, правильно ли? Она должна в виде быть: lalala.php?page=2
Спустя 3 минуты, 47 секунд (6.10.2010 - 14:02) arvitaly написал(а):
А чему равно $row['counter'] ?
Спустя 7 минут, 10 секунд (6.10.2010 - 14:09) paulpozd написал(а):
Цитата (inpost @ 6.10.2010 - 10:58) |
paulpozd Обычная проверка поможет. В самом начале введи: echo $_GET['page']; А в браузере глянуть, как пишется ссылка сама, правильно ли? Она должна в виде быть: lalala.php?page=2 |
именно так и пишется. Просто у меня уже навигационные кнопки есть и когда на них навожу ссылка так и формируется lalala.php?page=2 lalala.php?page=3 и т.д..
Спустя 2 минуты, 4 секунды (6.10.2010 - 14:11) inpost написал(а):
paulpozd
Если обе вещи прошли нормально, в коде накосячил, где-то обнуление стоит. Тут лучше всего где-то по середине написать: exit($page); и идти дальше от этой точки, как бы проверяя весь скрипт до этого места.
Если обе вещи прошли нормально, в коде накосячил, где-то обнуление стоит. Тут лучше всего где-то по середине написать: exit($page); и идти дальше от этой точки, как бы проверяя весь скрипт до этого места.
Спустя 2 минуты, 25 секунд (6.10.2010 - 14:14) arvitaly написал(а):
Цитата |
А чему равно $row['counter'] ? |
Если число записей меньше 200 - ваша $page всегда будет равна 1
Цитата |
Если обе вещи прошли нормально, в коде накосячил, где-то обнуление стоит. Тут лучше всего где-то по середине написать: exit($page); и идти дальше от этой точки, как бы проверяя весь скрипт до этого места. |
Или воспользоваться нормальным дебагером
Спустя 38 секунд (6.10.2010 - 14:15) paulpozd написал(а):
Цитата (arvitaly @ 6.10.2010 - 11:02) |
А чему равно $row['counter'] ? |
Равно 887.
Спустя 3 минуты, 45 секунд (6.10.2010 - 14:18) arvitaly написал(а):
<?php
if ( isset($_GET['page']) )
{
$page = (int)$_GET['page'];
if ( $page < 1 ) $page = 1;
}
else
{
$page = 1;
}
$nums = 200;
$elements=887;
$pages = ceil($elements/$nums);
if ($page < 1) {
$page = 1;
}
elseif ($page > $pages) {
$page = $pages;
}
echo $page;
?>
А этот код что у вас выдает? Только гет не забудьте передать
Спустя 2 минуты, 41 секунда (6.10.2010 - 14:21) inpost написал(а):
if ($page < 1) { $page = 1;} - Может тут не ($page < 1) , а PAGES???
Спустя 6 минут, 49 секунд (6.10.2010 - 14:28) paulpozd написал(а):
Цитата (arvitaly @ 6.10.2010 - 11:18) |
А этот код что у вас выдает? Только гет не забудьте передать |
Если передаю параметры до 5 включительно(1,2,3,4,5), то выдает именно то, что передал. Все что больше 5 превращается в 5.
Спустя 3 минуты, 21 секунда (6.10.2010 - 14:31) arvitaly написал(а):
Цитата |
Если передаю параметры до 5 включительно(1,2,3,4,5), то выдает именно то, что передал. Все что больше 5 превращается в 5. |
Ну так и должно быть разве нет? 200 элементов на странице, 887 элементов всего. 5 страниц
Спустя 1 минута, 2 секунды (6.10.2010 - 14:32) paulpozd написал(а):
Цитата (arvitaly @ 6.10.2010 - 11:31) | ||
Ну так и должно быть разве нет? 200 элементов на странице, 887 элементов всего. 5 страниц |
Да. Так и должно быть. А Вы что то поменяли в коде? Смотрю и не могу понять ...
Спустя 2 минуты, 59 секунд (6.10.2010 - 14:35) inpost написал(а):
Что-то мои коментарии вечно пропускают...
if ( isset($_GET['page']) ){ $page = (int)$_GET['page'];
if ( $page < 1 ) $page = 1;}
else{ $page = 1;}
$nums = 200;$elements=887;$pages = ceil($elements/$nums);
if ($page < 1) { $page = 1;}
Чисто логически, во втором варианте должно быть pages, а не page. Хотя не вникал в суть скрипта полностью
if ( isset($_GET['page']) ){ $page = (int)$_GET['page'];
if ( $page < 1 ) $page = 1;}
else{ $page = 1;}
$nums = 200;$elements=887;$pages = ceil($elements/$nums);
if ($page < 1) { $page = 1;}
Чисто логически, во втором варианте должно быть pages, а не page. Хотя не вникал в суть скрипта полностью
Спустя 1 минута, 25 секунд (6.10.2010 - 14:37) paulpozd написал(а):
Цитата (inpost @ 6.10.2010 - 11:35) |
Что-то мои коментарии вечно пропускают... |
Прошу прощения. Еще не успел попробовать. Там у меня хостинг не самый быстрый. Сейчас как раз пытаюсь... Спасибо большое за участие...
Спустя 17 секунд (6.10.2010 - 14:37) arvitaly написал(а):
Цитата |
if ($page < 1) { $page = 1;} - Может тут не ($page < 1) , а PAGES??? |
Да нет тут все нормально (ну логика ТС прослеживается)
Спустя 1 минута, 55 секунд (6.10.2010 - 14:39) inpost написал(а):
arvitaly
Прочитай предыдущих комментарий, я там выделил красным логику.
Прочитай предыдущих комментарий, я там выделил красным логику.
Спустя 10 минут, 5 секунд (6.10.2010 - 14:49) arvitaly написал(а):
Цитата |
Да. Так и должно быть. А Вы что то поменяли в коде? Смотрю и не могу понять ... |
Нет, ничего не менял
Спустя 1 минута, 14 секунд (6.10.2010 - 14:50) paulpozd написал(а):
Цитата (inpost @ 6.10.2010 - 11:35) |
Что-то мои коментарии вечно пропускают... if ( isset($_GET['page']) ){ $page = (int)$_GET['page']; if ( $page < 1 ) $page = 1;} else{ $page = 1;} $nums = 200;$elements=887;$pages = ceil($elements/$nums); if ($page < 1) { $page = 1;} Чисто логически, во втором варианте должно быть pages, а не page. Хотя не вникал в суть скрипта полностью |
Попробовал, но не помогло.
Этот момент просто не позволит юзеру передать не существующие номера страниц. Тут именно проверка на это.
Спустя 1 минута, 18 секунд (6.10.2010 - 14:51) inpost написал(а):
Дважды? Первый раз она проверяет, меньше ли page; Второй же раз - опять проверяет ТОЖЕ САМОЕ!!!
$pages = ceil($elements/$nums); - тут ты получаешь значение, допустим 0,6, который может быть округлён до 0, потом переводишь в 1 этим скриптом:
if ($page < 1) { $page = 1;} - хотя эта переменная называлась как pages, а не page!
$pages = ceil($elements/$nums); - тут ты получаешь значение, допустим 0,6, который может быть округлён до 0, потом переводишь в 1 этим скриптом:
if ($page < 1) { $page = 1;} - хотя эта переменная называлась как pages, а не page!
Спустя 1 минута, 57 секунд (6.10.2010 - 14:53) paulpozd написал(а):
Цитата (inpost @ 6.10.2010 - 11:51) |
Дважды? Первый раз она проверяет, меньше ли page; Второй же раз - опять проверяет ТОЖЕ САМОЕ!!! $pages = ceil($elements/$nums); - тут ты получаешь значение, допустим 0,6, который может быть округлён до 0, потом переводишь в 1 этим скриптом: if ($page < 1) { $page = 1;} - хотя эта переменная называлась как pages, а не page! |
Действительо!!.... Не пойму зачем я ее второй раз впендюрил...
Спустя 47 секунд (6.10.2010 - 14:54) inpost написал(а):
paulpozd
Я подправил коментарий предыдущий, перечитай.
Я подправил коментарий предыдущий, перечитай.
Спустя 1 минута, 48 секунд (6.10.2010 - 14:56) paulpozd написал(а):
Оставлю именно вариант с pages, а не page. Видимо ошибся. Но в данном случае pages больше 0.
Спустя 49 секунд (6.10.2010 - 14:57) paulpozd написал(а):
Цитата (inpost @ 6.10.2010 - 11:54) |
paulpozd Я подправил коментарий предыдущий, перечитай. |
момент
Спустя 2 минуты, 31 секунда (6.10.2010 - 14:59) arvitaly написал(а):
Цитата |
тут ты получаешь значение, допустим 0,6, который может быть округлён до 0 |
До 1
Спустя 6 минут, 32 секунды (6.10.2010 - 15:06) paulpozd написал(а):
Вторую проверку сделал так
[/php]if ($pages < 1) {
$pages = 1;
}
elseif ($page > $pages) {
$page = $pages;
}[php]
но ничего не изменилось. Хотя наверное и не должно было для данной ситуации.
Главное в адресной строке http:///......ru/category/1.html?page=3 красуется, а echo "<h4>$page</h4>"; дает 1. Ох беда, беда.
[/php]if ($pages < 1) {
$pages = 1;
}
elseif ($page > $pages) {
$page = $pages;
}[php]
но ничего не изменилось. Хотя наверное и не должно было для данной ситуации.
Главное в адресной строке http:///......ru/category/1.html?page=3 красуется, а echo "<h4>$page</h4>"; дает 1. Ох беда, беда.
Спустя 5 минут, 21 секунда (6.10.2010 - 15:11) arvitaly написал(а):
Так, сделайте вот так, вот это
замените на
if ( isset($_GET['page']) )
{
$page = (int)$_GET['page'];
if ( $page < 1 ) $page = 1;
}
else
{
$page = 1;
}
echo "<h4>$page</h4>";
замените на
echo '<p>Гетпэйдж=' . $_GET['page'] . '</p>';
if ( isset($_GET['page']) )
{
$page = (int)$_GET['page'];
echo '<p>Тут пэйдж=' . $page . '</p>';
if ( $page < 1 ) $page = 1;
echo '<p>Тут пэйдж=' . $page . '</p>';
}
else
{
$page = 1;
}
echo "<h4>$page</h4>";
exit;
Спустя 4 минуты, 17 секунд (6.10.2010 - 15:15) paulpozd написал(а):
момент
Спустя 5 минут, 38 секунд (6.10.2010 - 15:21) paulpozd написал(а):
Вставил Ваш код и какое бы число я не передавал результат один:
Гетпэйдж=
1
и сооветственно выходит.
То есть почему то NULL на входе получается.
Гетпэйдж=
1
и сооветственно выходит.
То есть почему то NULL на входе получается.
Спустя 2 часа, 42 секунды (6.10.2010 - 17:22) arvitaly написал(а):
Ну вот значит гет не передается, может там русские буквы или еще чего не знаю даже, можно скрин и сам файл скрипта?
Спустя 20 минут, 53 секунды (6.10.2010 - 17:43) paulpozd написал(а):
Цитата (arvitaly @ 6.10.2010 - 14:22) |
Ну вот значит гет не передается, может там русские буквы или еще чего не знаю даже, можно скрин и сам файл скрипта? |
Не знаю почему, но этот форум у меня был не доступен до настоящего момента. Это только у меня?
arvitaly, подскажите, скрин чего необходим? Результата отаботки скрипта? Я просто могу URL дать. Так наверное проще? Лучше в личку? Спасибо большое за Ваше время!!
Спустя 1 час, 33 минуты, 31 секунда (6.10.2010 - 19:16) paulpozd написал(а):
arvitaly, отписал Вам в личку. Спасибо!
Спустя 20 часов, 28 минут, 44 секунды (7.10.2010 - 15:45) paulpozd написал(а):
О великий PHP-программист Arvitaly!!! Заработало!!!! Вы все правильно сказали!! Как Вас отблагодарить - даже не знаю... Огромное спасибо!! Неужели из-за этой мелочи такие проблемы??? Что же это за [L,QSA] в .htaccess?
Наконец то!!
Спасибо большое еще раз!!!
Наконец то!!
Спасибо большое еще раз!!!