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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как реализовать случайный вывод статей n количества?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Как реализовать случайный вывод статей n количества?
sanj
Отправлено: 02 Декабря, 2009 - 14:12:31
Post Id



Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Апр. 2007  
Откуда: Россия


Помог: 0 раз(а)

[+]


Здраствуйте.
У меня тут проблемка:
сайт открываю и хотелось бы сделать вывод случайных статей до энного значения, например выводить на страницу 5 случайный статей из базы.

Вот мой код, который выводит все записи из базы:

PHP:
скопировать код в буфер обмена
  1. <?PHP  
  2.  
  3. $result = mysql_query ("SELECT id,title,description FROM lessons",$db);
  4.  
  5. $myrow = mysql_fetch_array ($result);
  6.  
  7. do {
  8.        
  9. printf ("<table align='center' class='lesson'>
  10.        
  11.                  <tr>
  12.         <td class='lesson_title'>
  13.                  <p class='lesson_name'><a href='stat.php?id=%s'>%s</a></p>
  14.  
  15.         </tr>
  16.        
  17.                  <tr>
  18.         <td>%s</td>
  19.         </tr>
  20.        
  21.                  </table><br><br>", $myrow["id"], $myrow["title"],$myrow["description"]);
  22.                                  
  23. }
  24.  
  25. while ($myrow = mysql_fetch_array ($result));  
  26. ?>


Как тут сделать так, что бы выводилось 5 случайных статей?
 
 Top
EuGen Администратор
Отправлено: 02 Декабря, 2009 - 14:43:21
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




SELECT {...} ORDER BY RAND() LIMIT 5


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 02 Декабря, 2009 - 15:16:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




sanj, скажите, почему для вывода из базы городят do {..} while(), вместо прямого while?
И зачем тут printf, когда достаточно echo?


-----
PostgreSQL DBA
 
 Top
toropss
Отправлено: 02 Декабря, 2009 - 17:48:55
Post Id


Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Попова все смотрели просто наверное

(Отредактировано автором: 02 Декабря, 2009 - 17:51:24)

 
 Top
Ch_chov
Отправлено: 02 Декабря, 2009 - 18:57:03
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Тут хорошая статья про выборку случайных записей.
Имхо, если статей не очень много ORDER BY RAND() вполне подойдет.

(Отредактировано автором: 02 Декабря, 2009 - 19:18:45)

 
 Top
sanj
Отправлено: 02 Декабря, 2009 - 21:20:19
Post Id



Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Апр. 2007  
Откуда: Россия


Помог: 0 раз(а)

[+]


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

А еще - можете в мой код вставить код который описан в статье http://habrahabr[dot]ru/blogs/mysql/54176/ , точнее

PHP:
скопировать код в буфер обмена
  1. $row_count = mysql_result(mysql_query('SELECT COUNT(*) FROM tTable;'), 0);
  2. $query = array();
  3. while (count($query) < 10) {
  4.     $query[] = '(SELECT * FROM tTable LIMIT '.rand(, $row_count).', 1)';
  5. }
  6. $query = implode(' UNION ', $query);
  7. $res = mysql_query($query);
  8.  


А то у меня вообще все перестало работать
 
 Top
sanj
Отправлено: 04 Декабря, 2009 - 11:54:51
Post Id



Гость


Покинул форум
Сообщений всего: 66
Дата рег-ции: Апр. 2007  
Откуда: Россия


Помог: 0 раз(а)

[+]


Помогите кто нибудь - уже скоро посетители пойдут, а я никак немогу соединить воедино эти два кода - уже столько вариантов перепробывал - и все впустую - одни ошибки.
Заранее благодарю за помощь.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB