|
|
|
| Такая ситуация, есть база статей, в ней реализована постраничная навигация; она работает нормально, но если я сортирую статьи по группам (чтобы выводились только статьи одной группы), то навигация не работает, вернее первая страница нормально работает, но ссылки на следующие страницы не работают. И он делает выборку по всем страницам сразу (то есть в базе 100 статей, а в группе 30, он показывает в навигации, что статей 100 в разделе). Подскажите кто знает. Много чего перепробовал не получилось.
<?
// Соединяемся с базой данных
require_once("../admin/config.php");
require_once("../admin/utils.pager.php");
// Число ссылок в постраничной навигации
$page_link = 3;
// Число позиций на странице
$pnumber = 10;
// Проверяем переменную $page, равную порядковому номеру первой новости на странице
$page = $_GET['page'];
if(empty($page)) $page = 1;
$begin = ($page - 1)*$pnumber;
if(isset($_GET['id_article']))
{
$query="SELECT * FROM articles WHERE id_article=".$_GET['id_article'];
$res = mysql_query($query);
if ($res && mysql_num_rows($res)>0)
{
$pageold = mysql_fetch_array($res);
if ($pageold['html_title']!="") $title = $pageold['html_title'];
$description = $pageold['html_description'];
$keywords = $pageold['html_keywords'];
echo "<p><a href=http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?id_page=".$pageold['id_page'].">Все статьи из текущего раздела</a>";
include "art.php";
}
}
else
{
// Если не указана группа статей, путем передачи
// номера группы через параметр id_page выводим список групп
if(!isset($_GET['id_page']))
{
// Производим выборку всех групп статей
$query = "SELECT * FROM artpage ORDER BY id_artpage";
$pgs = mysql_query($query);
// Если запрос выполнен успешно и число
// групп больше 0 выводим список групп
if($pgs && mysql_num_rows($pgs) > 0)
{
?>
<h1 class=artnamepage>Законодательная база</h1>
<?
echo "<ol>";
while($pageold = mysql_fetch_array($pgs))
{
echo "<li><a href=http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?id_page=".$pageold['id_artpage'].">".$pageold['name']."</a>";
}
echo "</ol>";
}
}
// Если номер группы передан через параметр id_page, работаем с данной
// группой
else
{
// Если не указана статья, путем передачи
// номера статьи через параметр id_page выводим список статей
// текущей группы
// Выбираем статьи этой группы с порядковым номером id_page
$query = "SELECT * FROM articles
WHERE id_page=".$_GET['id_page']."
AND hide='show'
LIMIT $begin, $pnumber";
$art = mysql_query($query);
if(!$art) puterror("Ошибка при обращении к блоку статей");
// Смотрим сколько статей на странице
// Если одна, просто выводим статью
if(mysql_num_rows($art) == 1)
{
echo "<p><a href='http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."'>Все статьи</a><br><br>";
$articles = mysql_fetch_array($art);
$_GET['id_article'] = $articles['id_article'];
include "art.php";
}
// Если больше одной - выводим список статей
else
{
?>
<h1 class=artnamepage>Законодательная база</h1>
<?
echo "<p><a href='http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."'>Все статьи</a><br><br>";
echo "<ol>";
while($articles = mysql_fetch_array($art))
{
echo "<li><a href=http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?id_article=".$articles['id_article'].">".$articles['name']."</a><br>".
"<p>".$articles['description']."</p>";
}
echo "</ol>";
}
// Постраничная навигация
$query = "SELECT COUNT(*) FROM articles
ORDER BY pos";
/* $query = "SELECT COUNT(*) FROM articles
WHERE hide='show'
ORDER BY pos";*/
$tot = mysql_query($query);
$total = mysql_result($tot,0);
$number = (int)($total/$pnumber);
if((float)($total/$pnumber) - $number != 0) $number++;
$str = "";
// Постраничная навигация
pager($page, $total, $pnumber, $page_link, $str);
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Roman2
(06.06.2007 в 14:37)
| | - | |
|
|
|
|
|
|
|
для: Roman2
(06.06.2007 в 16:51)
| | Кто вообще сталкивался с таким. Подскажите как решить такую задачу (чтобы навигация была не по всем позициям в таблице а выборочно). Какие алгоритмы использовать? | |
|
|
|
|
|
|
|
для: Roman2
(06.06.2007 в 14:37)
| | Впечатление такое, что у Вас постраничная навигация отделена от анализа фильтрующих условий вывода. Так не пойдет. Тут потребуется общая программа.
Кроме того, непонятно, почему параметр номера страницы id_page влияет на выбираемую группу. Если это лишь совпадение - то крайне неудачное. | |
|
|
|
|
|
|
|
для: Roman2
(06.06.2007 в 14:37)
| | В ссылках на следующие страницы пропиши параметры для сортировки! | |
|
|
|