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

Форум MySQL

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

 

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

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

тема: Вывод цикла с другого конца
 
 автор: devil943   (22.11.2007 в 21:25)   письмо автору
 
 

Прлблема состояит в выводе новостей. Новости хранятся в Базе данных, естественно новые записи добавляются с конца.


<?php
include "config.php";
// Цикл вывода новости
  
$result mysql_query("SELECT * FROM news");
  while (
$news_m mysql_fetch_assoc($result))
  {
    
printf("<table cellpadding=\"0\" cellspacing=\"0\" id=\"$news_m[id_news]\" class=\"news_contener\"> <tr><td class=\"news_title\">$news_m[title]<br><br></td></tr>\n <tr><td class=\"news_body\"><img src=\"$news_m[link]\" align=\"left\" alt=\"$news_t_body\" class=\"news_i\" width=\"150px\">$news_m[text]</td></tr>\n <tr><td class=\"news_date\" align=\"right\">Автор: $news_m[user], дата: $news_m[date]</td></tr> </table><br>\n\n");
  }
?>


Как вы видите информация из БД выводится очень простым скриптом, надо которым я ломал голову целую пару по матану :)
Но как сделать, что бы цикл выводлся наоборот? (что бы последняя новость, была в начале, а первая - в конце?

   
 
 автор: Valick   (22.11.2007 в 21:50)   письмо автору
 
   для: devil943   (22.11.2007 в 21:25)
 

А следующая пара у вас по чём? Можт физ-ра поможет.....?))

   
 
 автор: Faraon   (22.11.2007 в 21:52)   письмо автору
 
   для: devil943   (22.11.2007 в 21:25)
 

$result = mysql_query("SELECT * FROM news ORDER BY id DESC");
если у Вас есть id поле и оно уникальное типа auto_increment

   
 
 автор: devil943   (22.11.2007 в 21:59)   письмо автору
 
   для: Faraon   (22.11.2007 в 21:52)
 

>$result = mysql_query("SELECT * FROM news ORDER BY id DESC");
>если у Вас есть id поле и оно уникальное типа auto_increment

Что за id поле? уникальный номер дается каждой записи в отдельном столбце... news_id

   
 
 автор: Faraon   (22.11.2007 в 22:04)   письмо автору
 
   для: devil943   (22.11.2007 в 21:59)
 

Сортируйте по этому столбцу
$result = mysql_query("SELECT * FROM news ORDER BY news_id DESC");

   
 
 автор: devil943   (22.11.2007 в 22:13)   письмо автору
 
   для: Faraon   (22.11.2007 в 22:04)
 

И вам тоже огромное спасибо, пойду пробовать.

   
 
 автор: devil943   (22.11.2007 в 22:21)   письмо автору
 
   для: Faraon   (22.11.2007 в 22:04)
 

Кажется ему не нравится....
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/host4571/www/index.php on line 112

   
 
 автор: Trianon   (22.11.2007 в 22:10)   письмо автору
 
   для: devil943   (22.11.2007 в 21:25)
 

только не наоборот.
То как Вы сейчас выводите строки, вообще не предполагает за ними хоть какого-то устойчивого порядка.
В остальном Вам уже ответили.

2 valick: физ-ру лучше не прогуливать. В отличие от матана.

   
 
 автор: devil943   (22.11.2007 в 22:13)   письмо автору
 
   для: Trianon   (22.11.2007 в 22:10)
 

Спасибо.

>2 valick: физ-ру лучше не прогуливать. В отличие от матана.
Живу по тому же принципу :)

   
 
 автор: CrazyAngel   (22.11.2007 в 22:26)   письмо автору
 
   для: devil943   (22.11.2007 в 21:25)
 

сортировать лучше по дате, а не по id. Например так :

<?php
include "config.php";
// Цикл вывода новости
  
$result mysql_query("SELECT * FROM `news` ORDER BY `date` DESC");
  while (
$news_m mysql_fetch_assoc($result))
  {
    
printf("<table cellpadding=\"0\" cellspacing=\"0\" id=\"$news_m[id_news]\" class=\"news_contener\"> <tr><td class=\"news_title\">$news_m[title]<br><br></td></tr>\n <tr><td class=\"news_body\"><img src=\"$news_m[link]\" align=\"left\" alt=\"$news_t_body\" class=\"news_i\" width=\"150px\">$news_m[text]</td></tr>\n <tr><td class=\"news_date\" align=\"right\">Автор: $news_m[user], дата: $news_m[date]</td></tr> </table><br>\n\n");
  }
?>

   
 
 автор: devil943   (22.11.2007 в 22:28)   письмо автору
 
   для: CrazyAngel   (22.11.2007 в 22:26)
 

У меня и дата и id - tynitext

   
 
 автор: Faraon   (22.11.2007 в 23:07)   письмо автору
 
   для: devil943   (22.11.2007 в 22:28)
 

Если вы хотите сортировать по дате то поле должно быть типа datetime, если по id то поле числового типа int

   
 
 автор: devil943   (22.11.2007 в 22:29)   письмо автору
 
   для: CrazyAngel   (22.11.2007 в 22:26)
 

О, спасибо.... SQL запрос вроде правильный, ошибок не дал. Ща поробую.

   
 
 автор: devil943   (22.11.2007 в 22:37)   письмо автору
 
   для: CrazyAngel   (22.11.2007 в 22:26)
 

Нет... не то, он сортирует толкьо по первым дву числам - числу, а месяц и год ему по барабану.

   
 
 автор: retsoul   (22.11.2007 в 22:45)   письмо автору
 
   для: devil943   (22.11.2007 в 22:37)
 

как вариант - добавьте столбец с автоинкрементом, так чтобы при добавлении новости у неё был свой уникальный номер и делайте по нему обратную сортировку, как предлагалось выше

   
 
 автор: CrazyAngel   (22.11.2007 в 22:51)   письмо автору
 
   для: retsoul   (22.11.2007 в 22:45)
 

не верный вариант, а если новость написалась, но публикация должна состоятся позже

P.S. для этого не забудьте добавить проверку в запрос, например `date` <= UNIX_TIMESTAMP(NOW())

   
 
 автор: retsoul   (22.11.2007 в 23:00)   письмо автору
 
   для: CrazyAngel   (22.11.2007 в 22:51)
 

если новость написалась, а публикация должна состояться позже, то для этого в скрипте выборки стоит это предусмотреть :)
согласен с нижнем комментом про то, что неверный тип для даты
так как по идеи, если там тип дата или время, или дататайм - то сортировка должна проходить правильно :)
тогда как ещё один выход - изменение типа столбца на нужный и правильный! ))

   
 
 автор: CrazyAngel   (22.11.2007 в 22:49)   письмо автору
 
   для: devil943   (22.11.2007 в 22:37)
 

неверный тип для поля даты
(почти уверен что string :))))

   
Rambler's Top100
вверх

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