Реклама на сайте Advertise with us
Тема: Mysql+php сортировка массива Расширенный поиск по форуму
 
Внимание! В связи с устареванием топика эта страница была взята из кэша.
Автор Сообщение
Информация о пользователе Sterx +


Зарегистрирован: 08.12.02
Сообщения: 2665
Ссылка на сообщениеДобавлено: 14/10/04 в 13:56     

Код:

function build_page_new()
{
$sql = "select * from $linx_table where site_date > ".$new_date." order by site_date, site_category, site_title";
  $rs = mysql_query($sql,$conn);
// work out how many are new and parse
  $current_category = 0;
  while($row=mysql_fetch_array($rs))
   {
   if($current_category!=$row[site_category])
    {
   if($current_category!=0) $new_link_html.="</blockquote>\n";
   $temp_cat = $row[site_category];
   $current_category = $row[site_category];
   }
   $new_link_html.= build_link_html($row[site_title],$row[site_url],$row[site_descrip],$row[site_avs],true,$row[site_popular],$row[site_banner]);
   }
}

насколько я понимаю конструкция
while($row=mysql_fetch_array($rs))
перебирает ассоциативный массив
как отсортировать этот массив по конкретному ключу, например
по site_date
спасибо

K началу

 
Информация о пользователе dimonka


Зарегистрирован: 22.07.04
Сообщения: 79
Ссылка на сообщениеДобавлено: 14/10/04 в 18:27     

Если вкратце - то ты не совсем прав. Цикл будет работать, пока в $row присваивается ненулевое значение. Функция mysql_fetch_array() возвращает ассоциативный массив с одним кортежем результата запроса (эээ... кортеж - это строка в таблице, если вкратце icon_smile.gif), и затем ты можешь использовать значения массива $row. Сортировать этот массив нет смысла, т.к. во-первых он ассоциативный, а во вторых содержит только один ряд таблицы (значения всех атрибутов для одного ряда). Да и к тому же из запроса видно, что в цикле while ты как раз и проходишь по всем результатам запроса, которые уже отсортированы по site_date (а затем по site_category и site_title). Сортировка производится движком SQL.

K началу

 
Информация о пользователе ah2ng


Зарегистрирован: 21.12.03
Сообщения: 91
Ссылка на сообщениеДобавлено: 14/10/04 в 18:31     

прямо в sql запросе сортируй как нужно ...
а если нужно сортировать именно данные, которые возвращает твой запрос, то сначала

Код:

$rw_arr = array();
while($row=mysql_fetch_array($rs))
{
  $rw_arr[] = $row;


а потом уже сортируй свой массив как тебе угодно, например методом пузырька icon_smile.gif

K началу

 
Информация о пользователе Sterx +


Зарегистрирован: 08.12.02
Сообщения: 2665
Ссылка на сообщениеДобавлено: 14/10/04 в 18:33     

thx
как составить запрос с обратной сортировкой?
т е по условию
site_date > ".$new_date."
полученная выборка была бы в обратном порядке?

K началу

 
Информация о пользователе R.Bear


Зарегистрирован: 29.09.00
Сообщения: 156
Ссылка на сообщениеДобавлено: 14/10/04 в 18:40     

Сортировать лучше при выборке из базы сразу как и делается в запросе, но если уже сильно хочется отсортировать и после, например чтобы лишний раз к базе не обращатся, то можно использовать функции сортировки с вызовом своей функции usort() например.

K началу

 
Информация о пользователе R.Bear


Зарегистрирован: 29.09.00
Сообщения: 156
Ссылка на сообщениеДобавлено: 14/10/04 в 18:41     

order by порядок сортировки в запросах sql ...
в твоем случае сортировка идет сначала site_date потом по site_category и потом по site_title
а то что ты написал это параметры выборки выбираются данные больше какой-то даты.

K началу

 
Информация о пользователе Stek


Зарегистрирован: 24.10.02
Сообщения: 1619
Ссылка на сообщениеДобавлено: 14/10/04 в 18:55     

Вобщем в качестве примера:

Код:
ORDER BY site_date ASC, site_category DESC, site_title ASC

Буду отсортированны по порядку:
site_date - A-Z
site_category - Z-A
site_title - A-Z

K началу

 
Информация о пользователе Sterx +


Зарегистрирован: 08.12.02
Сообщения: 2665
Ссылка на сообщениеДобавлено: 14/10/04 в 19:32     

спасибо
ну почему блин ответ на форуме приходит, когда перевернешь кучу мануалов и форумов icon_sad.gif

K началу

 
Информация о пользователе undef


Зарегистрирован: 15.09.03
Сообщения: 357
Ссылка на сообщениеДобавлено: 14/10/04 в 20:49     

где вас програмит учили..
select * кладет базу, указывайте поля сразу!

кортеж... таких слов в русском языке нет! есть слово row,query,record,result, как угодно, но не кортеж ... брррр!

K началу

 
Информация о пользователе dm


Зарегистрирован: 13.08.03
Сообщения: 54
Ссылка на сообщениеДобавлено: 14/10/04 в 22:51     

undef писал:
кортеж... таких слов в русском языке нет! есть слово row,query,record,result, как угодно, но не кортеж ... брррр!

тут ты не прав, кстати icon_smile.gif
мне самому слух это режет не меньше чем ПЭВМ или НЖМД, но вот в солидных, с формулами, книгах по теории реляционных баз (особенно переводных) - именно так и пишут, кортеж, отношение и тд

K началу

 
Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!
Внимание! В связи с устареванием топика эта страница была взята из кэша.

Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »