Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Постраничная навигация по категориям.
Форумы портала PHP.SU » » Работа с СУБД » Постраничная навигация по категориям.

Страниц (1): [1]
 

1. PhysX - 10 Мая, 2016 - 08:34:49 - перейти к сообщению
Здравствуйте. Имеется база данных с тремя таблицами:
1. таблица с категориями categories с полями id и cat;
2. таблица с публикациями papers с полями id и content;
3. таблица со связами публикация с категориями papers_cats с полями cat_id и paper_id.

Вывожу публикации по категориям запросом:
CODE (SQL):
скопировать код в буфер обмена
  1. "SELECT * FROM papers INNER JOIN papers_cats ON papers.id = papers_cats.paper_id WHERE papers_cats.cat_id=".(int)$_GET['id']


Задача заключается в том, что нужно вывести публикации постранично в ссылках вида http://домен/articles.php?id=(идентификатор категории)?page=(номер страницы).

PHP:
скопировать код в буфер обмена
  1. $page=$_GET['page'];
  2. $quality=1;
  3. $limit=1;
  4.  
  5. if(!is_numeric($page)) $page=1;
  6. if($page<1) $page=1;
  7.  
  8. $result = mysql_query("SELECT * FROM papers INNER JOIN papers_cats ON papers.id = papers_cats.paper_id WHERE papers_cats.cat_id=".(int)$_GET['id']);
  9. $rows=mysql_num_rows($result);
  10.  
  11. $pages=ceil($rows/$quality);
  12. echo $pages."<br>";
  13. $pages++;
  14.  
  15.  
  16. if($page>$pages) $page=1;
  17.  
  18. if(!isset($list)) $list=0;
  19.  
  20. $list=--$page*$quality;
  21.  
  22. $res=mysql_query("SELECT * FROM papers INNER JOIN papers_cats ON papers.id = papers_cats.papaer_id WHERE papers_cats.cat_id=".(int)$_GET['id']." LIMIT $quality OFFSET $list");
  23.  
  24. $row_offset=mysql_num_rows($res);
  25.  
  26. for($i=0; $i<$row_offset; $i++)
  27. {
  28.     $row=mysql_fetch_array($res);
  29.      echo $row['title'];
  30. }
  31.  
  32. if($page>=1)
  33. {
  34.     echo '<a href="/articles.php?id='.$row['id'].'?page=1?id='.$k.'"><<</a>';
  35.     echo '<a href="/articles.php?id='.$row['id'].'?page='.$page.'">< </a>';
  36. }
  37.  
  38. $start=($page+1)-$limit;
  39. $end=($page+1)+$limit;
  40.  
  41. for($j=1; $j<$pages; $j++)
  42. {
  43.     if($j>=$start && $j<=$end)
  44.     {
  45.         if($j==($page+1))
  46.         {   echo '<a href="/articles.php?id='.$row['id'].'?page='.$j.'"><strong>'.$j.'</strong></a>'; }
  47.         else
  48.         {   echo '<a href="/articles.php?id='.$row['id'].'?page='.$j.'">'.$ .'</a>';}
  49.     }
  50. }
  51.  
  52. if($j>$page && ($page+2)<$j)
  53. {
  54.     echo '<a href="/articles.php?id='.$row['id'].'?page='.($page+2).'"> ></a>';
  55.     echo '<a href="/articles.php?id='.$row['id'].'?page='.($j-1).'">>></a>';
  56. }


При этом скрипт работает только если заранее в запросе указать идентификатор категории вместо (int)$_GET['id'] и убрать структуру ?id= из формирования ссылок. Помогите решить проблему. Не туп в программировании, но в php профан. Заранеее спасибо.
2. PhysX - 11 Мая, 2016 - 13:04:29 - перейти к сообщению
Нашёл ошибку. Перед psge в ссылках вместо вопросительного знака нужен &.

 

Powered by ExBB FM 1.0 RC1