|
|
|
| Здравствуйте уважаемые завсегдатаи!
У меня такой вопрос: сделала постраничную навигацию, но книги выводятся все вподряд по id, а мне нужно чтобы они выводились по дате добавления их в базу. Чтобы сначала, при открытиии первой страницы, выводились последние добавленые книги.
Подскажите, пожалуйста. Буду оченнь благодарна за помощь)
Вот код страницы books.php
<?php
include ("blocks/bd.php");
if (isset($_GET['cat'])) {$cat = $_GET['cat'];}
if (!isset($cat)) {$cat = 1;}
$result = mysql_query ("SELECT * FROM categories WHERE id='$cat'",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел<br><strong>Код ошибки:</strong></p>";
exit (mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
}
else
{
echo "<p>Информация по запросу не может быть извлечена. </p>";
exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="Description" content="<?php echo $myrow['meta_d']; ?>" />
<meta name="Keywords" content="<?php echo $myrow['meta_k']; ?>" />
<title><?php echo $myrow['title']; ?></title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<table width="1150" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">
<? include("blocks/header.php"); ?>
<td ><div align="center">
<table width="1150" border="0" cellpadding="0" cellspacing="0">
<tr>
<? include ("blocks/lefttd.php"); ?>
<td width="742" valign="top"><? include ("blocks/form_poisk.php");?>
<h1 align="center" style="font-family:Tahoma; font-size:18px; font-weight:bold; color:#990000;">Книги</h1>
<?
$result77 = mysql_query ("SELECT str FROM options",$db);
$myrow77 = mysql_fetch_array ($result77);
$num = $myrow77["str"];
@$page = $_GET['page'];
$result00 = mysql_query("SELECT COUNT(*) FROM books WHERE cat='$cat'");
$temp = mysql_fetch_array($result00);
$post = $temp[0];
$total = (($post - 1)/$num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$result = mysql_query("SELECT id,title,description,date,author,mini_img,rating,q_vote,zaka FROM books WHERE cat='$cat' ORDER BY id LIMIT $start, $num",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел<br><strong>Код ошибки:</strong></p>";
exit (mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
do
{
$r = $myrow["rating"]/$myrow["q_vote"];
$r = intval($r);
printf ("<table align='center' class='post'>
<tr>
<td class='lesson_title2'>
<img class='mini_lenta' align='left' src='%s'>
<a class='h4' style='font-family:Tahoma; font-size:12px; font-weight:bold;' href='view_books.php?id=%s'>%s</a>
<p class='br_p'><span class='lesson_add'> Дата добавления: %s </span>
<span class='lesson_add'>Автор: %s</span><span class='lesson_add'>Рейтинг: <img src='img/%s.gif'></span>
<span class='lesson_add'>Закачек: %s</span></p>
%s
</table>", $myrow["mini_img"], $myrow["id"], $myrow["title"], $myrow["date"], $myrow["author"], $r, $myrow["zaka"],$myrow["description"]);
}
while ($myrow = mysql_fetch_array($result));
if ($page != 1) $pervpage = '<a href= books.php?cat='.$cat.'&page=1>Первая</a> |
<a href= books.php?cat='.$cat.'&page='.($page - 1) .'>Предыдущая</a> |';
if ($page != $total) $nextpage = ' |<a href= books.php?cat='.$cat.'&page='.($page + 1) .'>Следующая</a> | <a href= books.php?cat='.$cat.'&page=' .$total. '>Последняя</a>';
if($page - 5 > 0) $page5left = ' <a href= books.php?cat='.$cat.'&page='.($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = '<a href= books.php?cat='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = '<a href= books.php?cat='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = '<a href= books.php?cat='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href= books.php?cat='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 5 <= $total) $page5right = ' | <a href= books.php?cat='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href= books.php?cat='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href= books.php?cat='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href= books.php?cat='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href= books.php?cat='.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';
if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
}
else
{
echo "<p>Информация по запросу не может быть извлечена. B таблице нет записей.</p>";
exit();
}
?>
</td>
<!--Пчасть-->
<div align="center">
<? include("blocks/pravtd.php"); ?>
</div>
</tr>
</table>
</div></td>
</tr>
<!--низ-->
<? include ("blocks/footer.php")?>
</table>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: VikaRI
(26.10.2008 в 20:08)
| | Ну и сортируйте не по id, а по дате в обратном порядке, при выборке:
... ORDER BY date LIMIT $start, $num" | |
|
|
|
|
|
|
|
для: sim5
(26.10.2008 в 20:14)
| | Пробовала делать так, но сортировка идет (хоть и по месяцам правильно сначала октябрь, потом сентябрь и т.д), а по датам - нет (17, 20, 25, 29 октября) | |
|
|
|
|
|
|
|
для: VikaRI
(26.10.2008 в 20:32)
| | Чтобы сперва последние были, следует поменять порядок на обратный:
.... ORDER BY date DESC LIMIT ....
|
Дата должна храниться в корректном формате YYYY-MM-DD , иначе отсортировать по ней список не получится. Выводить на страницу Вы её можете как угодно, но класть в таблицу БД и хранить там извольте правильно.
Кстати, выводить список в порядке, обратном id, тоже можно. ORDER BY id DESC | |
|
|
|
|
|
|
|
для: VikaRI
(26.10.2008 в 20:32)
| | Во-первых, сортировке надо указать DESC, а во-вторых - вы как дату в базе храните? | |
|
|
|
|
|
|
|
для: sim5
(26.10.2008 в 20:49)
| | Дата в корректном состоянии) И, спасибо, уже все получилось | |
|
|
|