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 :: сложная сортировка

 PHP.SU

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


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

> Без описания
Antonim
Отправлено: 06 Апреля, 2009 - 12:02:53
Post Id


Гость


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


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

[+]


Доброго дня. Есть ассоциативный массив, создаваемый таким примерно образом:

$ALBUMS[$i]['type'] = 4;
$ALBUMS[$i]['Songs_name'] = $t[0];
$ALBUMS[$i]['Songs_id'] = $t[1];
$ALBUMS[$i]['Albums_name'] = $t[2];
$ALBUMS[$i]['Albums_id'] = $t[3];
$ALBUMS[$i]['Albums_author'] = $t[4];

нужно отсортировать по ['Songs_name'] к примеру ... вопрос вроди оч простой, но везде в sort мануале не нашел аналогичных примеров
 
 Top
EuGen Администратор
Отправлено: 06 Апреля, 2009 - 12:09:14
Post Id


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


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


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




Если Вы создаете этот массив сами, то почему бы сначала не отсортировать массив-источник по этому признаку, а потом организовывать заполнение конечного массива?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Antonim
Отправлено: 06 Апреля, 2009 - 12:11:40
Post Id


Гость


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


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

[+]


EuGen пишет:
Если Вы создаете этот массив сами, то почему бы сначала не отсортировать массив-источник по этому признаку, а потом организовывать заполнение конечного массива?


потому, что этот массив создается несколькими запросами и вытягиваются данные из разных таблиц
 
 Top
Гость
Отправлено: 06 Апреля, 2009 - 12:12:05
Post Id


УДАЛЁН










Это случайноне точ то вам надо - http://php.su/functions/?usort
А еси выполучаете данные из БД то действитлнь проще там отсортировать
 
 Top
valenok Модератор
Отправлено: 06 Апреля, 2009 - 12:26:52
Post Id



Здесь могла бы быть ваша реклама


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


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




комментарии к multisort смотрите. там есть.


-----
Truly yours, Sasha.
 
My status
 Top
Antonim
Отправлено: 06 Апреля, 2009 - 12:27:31
Post Id


Гость


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


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

[+]


JustUserR пишет:
А еси выполучаете данные из БД то действитлнь проще там отсортировать


из базы я достаю из одной таблицы "названия треков" из другой "названия альбомов" из третей "названия исполнителей" и нужно теперь вывести одной простыней отсортировав по имени ... как я это в БД сделаю???? Я делаю разными запросами и пихаю в ассоциативный массив в поле 'sort' теперь мне нужно отсортировать по этому полю.
 
 Top
Вездеход
Отправлено: 06 Апреля, 2009 - 12:29:39
Post Id



Частый посетитель


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


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




Antonim
покажите запросы. посмотрим =)


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Antonim
Отправлено: 06 Апреля, 2009 - 13:42:22
Post Id


Гость


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


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

[+]


PHP:
скопировать код в буфер обмена
  1. $r = mysql_query("      SELECT name,id,album_type
  2.                                         FROM Albums
  3.                                         WHERE `show` = 1 $cond LIMIT 200;");
  4.  
  5.  
  6. $i=0;
  7. while ($t = mysql_fetch_array($r,MYSQL_NUM)) {
  8.  
  9. $ALBUMS[$i]['sort'] = $t[0];
  10.        
  11.         $t[0] = str_ireplace ("$d","<b>$d</b>",$t[0]); 
  12.  
  13.   $ALBUMS[$i]['Album_name'] = $t[0];
  14.   $ALBUMS[$i]['Album_id'] = $t[1];
  15.   $ALBUMS[$i]['type'] = $t[2];
  16.  
  17. $i++;
  18.  }
  19.  
  20. $r = mysql_query("      SELECT Songs.name,Songs.id,Albums.name,Albums.id,Albums.author
  21.                                         FROM Songs JOIN Albums ON Songs.album_id = Albums.id
  22.                                         WHERE `show` = 1 $cond_song ");
  23. while ($t = mysql_fetch_array($r,MYSQL_NUM)) {
  24.        
  25. $ALBUMS[$i]['sort'] = $t[0];
  26.        
  27.         $t[0] = str_ireplace ("$d","<b>$d</b>",$t[0]);
  28.        
  29.   $ALBUMS[$i]['type'] = 4;
  30.   $ALBUMS[$i]['Songs_name'] = $t[0];
  31.   $ALBUMS[$i]['Songs_id'] = $t[1];
  32.   $ALBUMS[$i]['Albums_name'] = $t[2];
  33.   $ALBUMS[$i]['Albums_id'] = $t[3];
  34.   $ALBUMS[$i]['Albums_author'] = $t[4];
  35. $i++;  
  36.  }
  37.  
  38. $r = mysql_query("      SELECT DISTINCT(author)
  39.                                         FROM Albums
  40.                                         WHERE `show` = 1 $cond_author LIMIT 200;");
  41. while ($t = mysql_fetch_array($r,MYSQL_NUM)) {
  42.        
  43.   $ALBUMS[$i]['Author_search'] = $t[0];
  44.   $ALBUMS[$i]['sort'] = $t[0];
  45.        
  46.         $t[0] = str_ireplace ("$d","<b>$d</b>",$t[0]); 
  47.        
  48.   $ALBUMS[$i]['type'] = 5;
  49.   $ALBUMS[$i]['Author_name'] = $t[0];
  50. $i++;  
  51.  }

(Отредактировано автором: 06 Апреля, 2009 - 13:54:47)

 
 Top
Stierus Супермодератор
Отправлено: 06 Апреля, 2009 - 13:57:43
Post Id



Рекордсмен по количеству сообщений за 7 дней


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


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




Уверен на 99%, что все, что вам нужно, вытягивается одним запросом из базы данных. Из-за корявого оформления и имен переменных вроде $i, $t, $r - разобраться в желаниях топикстартера довольно сложно. пришли сюда var_dump получающегося массива, структуру таблиц и нормальное описание, что же тебе изначально нужно.
 
My status
 Top
Вездеход
Отправлено: 06 Апреля, 2009 - 14:23:56
Post Id



Частый посетитель


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


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




что могу сказать
или я перестал понимать что тут творится или у человека, написавшего этот код реально кривые руки...

1. зачем писать так:

вы лишние действия только так делаете. массив сам пронумирует записи по порядку - так что не нужно таким образом задавать ключи

2. я апсолютно не понял как у вас строится массив. вы вапще пробовали прогнать на работоспособность его??? запись в массив происходит в апсолютно непонятном порядке... к примеру по идее то что вы вписываете в массив из 1го запроса - потом дописывается из 2го...

и т.д.
оформление кода тоже не совсем понятное, ну там мелочь.
(Добавление)
еще. что за переменная $cond_song??

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

и всеже объясните КАК вы формируете массив... вот хоть убейте - не понимаю зачем в него пихать данные просто так в непонятной последовательности....


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Гость
Отправлено: 06 Апреля, 2009 - 17:57:46
Post Id


УДАЛЁН










Цитата:
Из базы я достаю из одной таблицы "названия треков" из другой "названия альбомов" из третей "названия исполнителей" и нужно теперь вывести одной простыней отсортировав по имени ... как я это в БД сделаю????
А вы ничео не слышали случайно про JOIN LEFT и JOIN RIGHT ? Это как раз то что вам надо

Общий совет - то что можно сделать средствами самой БД можно и НУЖНО делаь самими средствами этой БД - ведь БД и предназначена для манипуляций с данными Улыбка

(Отредактировано автором: 06 Апреля, 2009 - 17:59:19)

 
 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