|
|
|
| На страницу выводится кол-во сообщений заданных в лимит, но не выводится сам бок на следущие, предыдущие сообщения (см. систему постраничной навигациии делал из статьи приведенной на сайте).
Адрес выводится в таком порядке
http://localhost/cats/categories.php?id=4&pages=1
| где pages это поярдок, и если подставить вместо pages=1, значение pages=2, то выводится следущие ссылки. Но проблема в том что сам блок не показывается, а если показывается, то не определяет есть ли на самом деле ссылка назад , вперед и.т.д. Очеь прошу помощи!
<?
$pnumber = 10; //количесвто ссылок, выводимых на страницу
$page_link = 4;
$pages = $_GET['pages'];
$pid = $_GET['id'];
// Если в строке запроса не передана страница
// выводим первую страницу
if(empty($pages)) $pages = 1;
$begin = ($pages - 1)*$pnumber;
$sql="SELECT * FROM userd WHERE cat=$id AND status='yes' ORDER BY out DESC
LIMIT $begin, $pnumber";
$res = mysql_query($sql);
if(!($res)) { echo mysql_error(); }
else
{
while ($result = mysql_fetch_array($res))
{
//Здесь выводятся ссылки (10 ссылок на страницу)
}
}
// Запрашиваем информацию о количестве всех сайтов в данной категории
$qs = "SELECT COUNT(*) FROM userd
WHERE cat=$id AND status='yes'";
$re = mysql_query($qs);
if(!re) { echo mysql_error(); }
else { $total = mysql_result($re,0);}
//Проверяем нужны ли стрелки назад
if ($pages != 1) { $pervpage = "<a href=$_SERVER[PHP_SELF]?id=$pid&pages=1><<</a>
<a href= $_SERVER[PHP_SELF]?id=$pid&pages=".($pages-1)."> < </a>"; }
// Проверяем нужны ли стрелки вперед
$totals = intval(($total - 1) / $pnumber) + 1;
if ($pages != $totals )
{
$nextpage = " <a href= $_SERVER[PHP_SELF]?id=$pid&pages=".($pages+1).">></a>
<a href=$_SERVER[PHP_SELF]?id=$pid&pages=".($totals).">>></a>";
}
// Находим две ближайшие страницы с обоих краев, если они есть
if($pages - 2 > 0) $page2left = "<a href=$_SERVER[PHP_SELF]?id=$pid&pages=". ($pages - 2) .">". ($pages - 2) ."</a> | ";
if($pages - 1 > 0) $page1left = "<a href=$_SERVER[PHP_SELF]?id=$pid&pages=". ($pages - 1) .">". ($pages - 1) ."</a> | ";
if($pages + 2 <= $totals) $page2right = " | <a href=$_SERVER[PHP_SELF]?id=$pid&pages=".($pages + 2) .">". ($pages + 2) ."</a>";
if($pages + 1 <= $totals) $page1right = " | <a href= $_SERVER[PHP_SELF]?id=$pid&pages=".($pages + 1) .">". ($pages + 1) ."</a>";
echo "<div class = 'body'>Старницы: ";
echo $pervpage.$page2left.$page1left.'<b>'.$pages.'</b>'.$page1right.$page2right.$nextpage;
echo "</div>";
?>
|
| |
|
|
|
|
|
|
|
для: ols
(05.08.2008 в 03:39)
| | проблема была в сортировке по убыванию
$sql="SELECT * FROM userd WHERE cat=$id AND status='yes' ORDER BY out DESC
LIMIT $begin, $pnumber";
|
Если сортировать по возрастанию все работает. Но мне нужно сортировать значение по убыванию, но чтобы постраничная навигация работала. Никак не могу осилить как поступить в таком случае? | |
|
|
|
|
|
|
|
для: ols
(05.08.2008 в 07:09)
| | У вас в SQL запросе написано
А до запроса эта переменная нигде не встречается... Есть только переменная $pid | |
|
|
|
|
|
|
|
для: ols
(05.08.2008 в 03:39)
| | хммм... может Вам лучше переделать этот скрипт
<?
$pnumber = 10; //количесвто ссылок, выводимых на страницу
$_GET['page'] = empty($_GET['page']) || !ctype_digit($_GET['page']) || $_GET['page'] < 0 ? 1 : intval($_GET['page']);
$_GET['id'] = intval($_GET['id']);
// Основной запрос
$sql = 'SELECT SQL_CALC_FOUND_ROWS * FROM `userd`
WHERE `cat`='.$_GET['id'].' AND `status`="yes" ORDER BY `out` DESC
LIMIT '.($_GET['page']-1) * $pnumber.','.$pnumber;
$res = mysql_query($sql) or die(mysql_error());
// Второстепеный запрос, получаем кол-во
$all = mysql_result(mysql_query('SELECT FOUND_ROWS()'),0);
$pages = ceil($all/$pnumber);
while ($result = mysql_fetch_array($res))
{
//Здесь выводятся ссылки (10 ссылок на страницу)
}
echo '<hr />';
// Навигация
for($pr='',$i=1; $i<=$pages; $i++)
echo $pr = (($i==1 || $i==$pages || abs($i-$_GET['page']) < 2) ? ($i==$_GET['page'] ? ' <b>'.$i.'</b> ' : ' <a href="'.$_SERVER[PHP_SELF].'?id='.$_GET['id'].'&page='.$i.'">'.$i.'</a> ') : ($pr=='...' || $pr=='' ? '' : '...'));
?>
|
набросал на память) должно рабоать) | |
|
|
|
|
|
|
|
для: а-я
(05.08.2008 в 11:47)
| | Спасибо, получилось = )) | |
|
|
|
|
|
|
|
для: ols
(05.08.2008 в 15:08)
| | Кстати, в тему. Я тоже постраничный вывод делал, по поиску очень много ссылок на вот этот пример:
http://www.softtime.ru/info/articlephp.php?id_article=33
Хороший скрипт, работает что надо, только там ошибка помоему
<?
$result = mysql_query("SELECT COUNT(*) FROM post");
$posts = mysql_fetch_row($result);
?>
|
не работает, а так:
<?
$posts =mysql_num_rows($result);
?>
|
работает. Или это что бы не расслаблялись? | |
|
|
|
|
|
|
|
для: Николай2357
(05.08.2008 в 19:18)
| | >Кстати, в тему. Я тоже постраничный вывод делал, по поиску очень много ссылок на вот этот пример:
>http://www.softtime.ru/info/articlephp.php?id_article=33
>Хороший скрипт, работает что надо, только там ошибка помоему
>
<?
>$result = mysql_query("SELECT COUNT(*) FROM post");
>$posts = mysql_fetch_row($result);
>?>
|
>не работает,
Работает. Если дописать еще одну строку.
print_r($posts) сделать не пробовали?
>а так:
>
<?
>$posts =mysql_num_rows($result);
>?>
|
>работает.
А вот это выдаст единицу. Независимо от.
>Или это что бы не расслаблялись?
Вероятно. | |
|
|
|
|
|
|
|
для: Trianon
(05.08.2008 в 20:13)
| | Извиняюсь, и действительно...
Просто я сразу изменил запрос под свои нужды на вот такой:
mysql_query("SELECT name FROM users1 WHERE ind='Добавлен' AND ....
|
(он действительно не работает с mysql_fetch_row) и подумал, что и тот работать не будет...
Поспешил - людей насмешил. | |
|
|
|