Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с постраничной навигацией
 
 автор: ols   (05.08.2008 в 03:39)   письмо автору
 
 

На страницу выводится кол-во сообщений заданных в лимит, но не выводится сам бок на следущие, предыдущие сообщения (см. систему постраничной навигациии делал из статьи приведенной на сайте).
Адрес выводится в таком порядке
 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 0$page2left "<a href=$_SERVER[PHP_SELF]?id=$pid&pages=". ($pages 2) .">". ($pages 2) ."</a> | ";  
if(
$pages 0$page1left "<a href=$_SERVER[PHP_SELF]?id=$pid&pages=". ($pages 1) .">". ($pages 1) ."</a> | ";

if(
$pages <= $totals$page2right " | <a href=$_SERVER[PHP_SELF]?id=$pid&pages=".($pages 2) .">". ($pages 2) ."</a>";  
if(
$pages <= $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 в 07:09)   письмо автору
 
   для: ols   (05.08.2008 в 03:39)
 

проблема была в сортировке по убыванию
$sql="SELECT * FROM userd WHERE cat=$id AND status='yes' ORDER BY out DESC 
LIMIT $begin, $pnumber";

Если сортировать по возрастанию все работает. Но мне нужно сортировать значение по убыванию, но чтобы постраничная навигация работала. Никак не могу осилить как поступить в таком случае?

  Ответить  
 
 автор: Zend72   (05.08.2008 в 11:37)   письмо автору
 
   для: ols   (05.08.2008 в 07:09)
 

У вас в SQL запросе написано


WHERE cat=$id

А до запроса эта переменная нигде не встречается... Есть только переменная $pid

  Ответить  
 
 автор: а-я   (05.08.2008 в 11:47)   письмо автору
 
   для: ols   (05.08.2008 в 03:39)
 

хммм... может Вам лучше переделать этот скрипт

<?
 $pnumber 
10//количесвто ссылок, выводимых на страницу 

 
$_GET['page'] = empty($_GET['page']) || !ctype_digit($_GET['page']) || $_GET['page'] < 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==|| $i==$pages || abs($i-$_GET['page']) < 2) ? ($i==$_GET['page'] ? ' <b>'.$i.'</b> ' ' <a href="'.$_SERVER[PHP_SELF].'?id='.$_GET['id'].'&amp;page='.$i.'">'.$i.'</a> ') : ($pr=='...' || $pr=='' '' '...'));
?>


набросал на память) должно рабоать)

  Ответить  
 
 автор: ols   (05.08.2008 в 15:08)   письмо автору
 
   для: а-я   (05.08.2008 в 11:47)
 

Спасибо, получилось = ))

  Ответить  
 
 автор: Николай2357   (05.08.2008 в 19:18)   письмо автору
 
   для: 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);
?>

работает. Или это что бы не расслаблялись?

  Ответить  
 
 автор: Trianon   (05.08.2008 в 20:13)   письмо автору
 
   для: Николай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);
>
?>

>работает.

А вот это выдаст единицу. Независимо от.



>Или это что бы не расслаблялись?
Вероятно.

  Ответить  
 
 автор: Николай2357   (05.08.2008 в 21:55)   письмо автору
 
   для: Trianon   (05.08.2008 в 20:13)
 

Извиняюсь, и действительно...
Просто я сразу изменил запрос под свои нужды на вот такой:
mysql_query("SELECT name FROM users1 WHERE ind='Добавлен'  AND ....

(он действительно не работает с mysql_fetch_row) и подумал, что и тот работать не будет...
Поспешил - людей насмешил.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования