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 :: mysql_fetch_array, перебираем массивы с конца

 PHP.SU

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


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

> Без описания
MrSource
Отправлено: 22 Марта, 2011 - 16:31:28
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Янв. 2010  
Откуда: Украина, Донецк


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




Есть скрипт:

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.  


Нужно, чтобы массив перебирался с конца. Подскажите, пожалуйста, как реализовать.
Спасибо.
 
 Top
Саныч Модератор
Отправлено: 22 Марта, 2011 - 16:36:22
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Уберите из запроса DESC и получите "с конца"


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Champion Супермодератор
Отправлено: 22 Марта, 2011 - 16:39:25
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Отсортировать в другую сторону
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()
 
 Top
MrSource
Отправлено: 22 Марта, 2011 - 16:43:09
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Янв. 2010  
Откуда: Украина, Донецк


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




Саныч пишет:
Уберите из запроса 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, Благодарю, всё получилось Улыбка Очень оперативно)

(Отредактировано автором: 22 Марта, 2011 - 16:45:26)

 
 Top
Мелкий Супермодератор
Отправлено: 22 Марта, 2011 - 16:46:38
Post Id



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


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


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




MrSource пишет:
тоесть мне нужно достать 30 последних сообщений с 5-ой комнаты

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

(Отредактировано автором: 22 Марта, 2011 - 16:46:57)



-----
PostgreSQL DBA
 
 Top
MrSource
Отправлено: 22 Марта, 2011 - 16:49:59
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Янв. 2010  
Откуда: Украина, Донецк


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




Мелкий пишет:
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
 
 Top
Okula
Отправлено: 22 Марта, 2011 - 20:52:30
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


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




MrSource, сортируй по дате тогда.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB