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

Форум MySQL

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

 

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

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

тема: Постраничная навигация с сортировкой по дате
 
 автор: VikaRI   (26.10.2008 в 20:08)   письмо автору
 
 

Здравствуйте уважаемые завсегдатаи!
У меня такой вопрос: сделала постраничную навигацию, но книги выводятся все вподряд по 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 0$page5left ' <a href= books.php?cat='.$cat.'&page='.($page 5) .'>'. ($page 5) .'</a> | ';  
if(
$page 0$page4left '<a href= books.php?cat='.$cat.'&page='. ($page 4) .'>'. ($page 4) .'</a> | ';  
if(
$page 0$page3left '<a href= books.php?cat='.$cat.'&page='. ($page 3) .'>'. ($page 3) .'</a> | '
if(
$page 0$page2left '<a href= books.php?cat='.$cat.'&page='. ($page 2) .'>'. ($page 2) .'</a> | '
if(
$page 0$page1left '<a href= books.php?cat='.$cat.'&page='. ($page 1) .'>'. ($page 1) .'</a> | '

if(
$page <= $total$page5right ' | <a href= books.php?cat='.$cat.'&page='. ($page 5) .'>'. ($page 5) .'</a>'
 if(
$page <= $total$page4right ' | <a href= books.php?cat='.$cat.'&page='. ($page 4) .'>'. ($page 4) .'</a>'
 if(
$page <= $total$page3right ' | <a href= books.php?cat='.$cat.'&page='. ($page 3) .'>'. ($page 3) .'</a>'
 if(
$page <= $total$page2right ' | <a href= books.php?cat='.$cat.'&page='. ($page 2) .'>'. ($page 2) .'</a>'
 if(
$page <= $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>

  Ответить  
 
 автор: sim5   (26.10.2008 в 20:14)   письмо автору
 
   для: VikaRI   (26.10.2008 в 20:08)
 

Ну и сортируйте не по id, а по дате в обратном порядке, при выборке:
... ORDER BY date LIMIT $start, $num"

  Ответить  
 
 автор: VikaRI   (26.10.2008 в 20:32)   письмо автору
 
   для: sim5   (26.10.2008 в 20:14)
 

Пробовала делать так, но сортировка идет (хоть и по месяцам правильно сначала октябрь, потом сентябрь и т.д), а по датам - нет (17, 20, 25, 29 октября)

  Ответить  
 
 автор: Trianon   (26.10.2008 в 20:47)   письмо автору
 
   для: VikaRI   (26.10.2008 в 20:32)
 

Чтобы сперва последние были, следует поменять порядок на обратный:
.... ORDER BY date DESC LIMIT ....

Дата должна храниться в корректном формате YYYY-MM-DD , иначе отсортировать по ней список не получится. Выводить на страницу Вы её можете как угодно, но класть в таблицу БД и хранить там извольте правильно.

Кстати, выводить список в порядке, обратном id, тоже можно. ORDER BY id DESC

  Ответить  
 
 автор: sim5   (26.10.2008 в 20:49)   письмо автору
 
   для: VikaRI   (26.10.2008 в 20:32)
 

Во-первых, сортировке надо указать DESC, а во-вторых - вы как дату в базе храните?

  Ответить  
 
 автор: VikaRI   (27.10.2008 в 00:35)   письмо автору
 
   для: sim5   (26.10.2008 в 20:49)
 

Дата в корректном состоянии) И, спасибо, уже все получилось

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

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