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
Форумы портала PHP.SU :: Версия для печати :: Как реализовать случайный вывод статей n количества?
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Как реализовать случайный вывод статей n количества?

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

1. sanj - 02 Декабря, 2009 - 14:12:31 - перейти к сообщению
Здраствуйте.
У меня тут проблемка:
сайт открываю и хотелось бы сделать вывод случайных статей до энного значения, например выводить на страницу 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 случайных статей?
2. EuGen - 02 Декабря, 2009 - 14:43:21 - перейти к сообщению
SELECT {...} ORDER BY RAND() LIMIT 5
3. Мелкий - 02 Декабря, 2009 - 15:16:08 - перейти к сообщению
sanj, скажите, почему для вывода из базы городят do {..} while(), вместо прямого while?
И зачем тут printf, когда достаточно echo?
4. toropss - 02 Декабря, 2009 - 17:48:55 - перейти к сообщению
Попова все смотрели просто наверное
5. Ch_chov - 02 Декабря, 2009 - 18:57:03 - перейти к сообщению
Тут хорошая статья про выборку случайных записей.
Имхо, если статей не очень много ORDER BY RAND() вполне подойдет.
6. sanj - 02 Декабря, 2009 - 21:20:19 - перейти к сообщению
Ну насчет того кода, что я показал - я не программист и еле сделал, что сделал. Это единственное, что у меня работает.
Если вы можете оптимизировать мой код - буду только благодарен.

А еще - можете в мой код вставить код который описан в статье 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.  


А то у меня вообще все перестало работать
7. sanj - 04 Декабря, 2009 - 11:54:51 - перейти к сообщению
Помогите кто нибудь - уже скоро посетители пойдут, а я никак немогу соединить воедино эти два кода - уже столько вариантов перепробывал - и все впустую - одни ошибки.
Заранее благодарю за помощь.

 

Powered by ExBB FM 1.0 RC1