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 :: Версия для печати :: mysql_fetch_array, перебираем массивы с конца
Форумы портала PHP.SU » PHP » Программирование на PHP » mysql_fetch_array, перебираем массивы с конца

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

1. MrSource - 22 Марта, 2011 - 16:31:28 - перейти к сообщению
Есть скрипт:

PHP:
скопировать код в буфер обмена
  1. $query = mysql_query("SELECT * FROM messages WHERE id='5' ORDER BY id DESC LIMIT 30");
  2.  
  3. while($rows = mysql_fetch_array($query)) {
  4.     ...
  5. }
  6.  


Нужно, чтобы массив перебирался с конца. Подскажите, пожалуйста, как реализовать.
Спасибо.
2. Саныч - 22 Марта, 2011 - 16:36:22 - перейти к сообщению
Уберите из запроса DESC и получите "с конца"
3. Champion - 22 Марта, 2011 - 16:39:25 - перейти к сообщению
Отсортировать в другую сторону
SELECT * FROM(SELECT * FROM messages WHERE id='5' ORDER BY id DESC LIMIT 30) t ORDER BY id ASC

Вообще интересно, что id в выборке будут одинаковые: id='5' и вообще не понтно нафига сортировка.

Либо есть такая штука как mysql_num_rows() и mysql_result()
4. MrSource - 22 Марта, 2011 - 16:43:09 - перейти к сообщению
Саныч пишет:
Уберите из запроса DESC и получите "с конца"

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

Champion пишет:
Отсортировать в другую сторону
SELECT * FROM(SELECT * FROM messages WHERE id='5' ORDER BY id DESC LIMIT 30) t ORDER BY id ASC

Вообще интересно, что id в выборке будут одинаковые: id='5' и вообще не понтно нафига сортировка.

Либо есть такая штука как mysql_num_rows() и mysql_result()


id служит, как идентификатор канала чата(или же комнаты, чтобы было понятнее), тоесть мне нужно достать 30 последних сообщений с 5-ой комнаты Улыбка

Champion, Благодарю, всё получилось Улыбка Очень оперативно)
5. Мелкий - 22 Марта, 2011 - 16:46:38 - перейти к сообщению
MrSource пишет:
тоесть мне нужно достать 30 последних сообщений с 5-ой комнаты

Но непосредственно по id сортировать-то бесполезно, т.к. id у всех записей одинаковый и равен 5.
По чему-то другому надо сортировать, например по id сообщения.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM messages WHERE id=5 ORDER BY id_message DESC LIMIT 30
6. MrSource - 22 Марта, 2011 - 16:49:59 - перейти к сообщению
Мелкий пишет:
MrSource пишет:
тоесть мне нужно достать 30 последних сообщений с 5-ой комнаты

Но непосредственно по id сортировать-то бесполезно, т.к. id у всех записей одинаковый и равен 5.
По чему-то другому надо сортировать, например по id сообщения.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM messages WHERE id=5 ORDER BY id_message DESC LIMIT 30


Немного неправильно запрос здесь написал,
PHP:
скопировать код в буфер обмена
  1. $query = mysql_query("SELECT * FROM messages WHERE channel='5' ORDER BY id DESC LIMIT 30");


В базе сообщения имеют такие столбцы: id,username,date,message,channel
7. Okula - 22 Марта, 2011 - 20:52:30 - перейти к сообщению
MrSource, сортируй по дате тогда.

 

Powered by ExBB FM 1.0 RC1