Искать  
 
   
 
сортировка полей
Отправлено: 13 Август 2009 06:13 P.M.   [ Игнорировать ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  644
Зарегистрирован  2009-04-11

как сделать сортировку по полю в котором содержится числовое значение?

пробывал так

{exp:weblog:entries weblog="shop" orderby="item_price" sort="desc" limit="15"}
<h2><a href="{title_permalink={my_template_group}/index}">{title}</a> <sup>({item_price}$)</sup></h2>
{/exp:weblog:entries} 

вывело

товар 3 (20000$)
товар 2 (20$)
товар 4 (100000$)
товар 1 (10$)

и при ASC

товар 1 (10$)
товар 4 (100000$)
товар 2 (20$)
товар 3 (20000$)

Похоже что сортировка идёт по первой цифре в поле.

 Подпись 

Няшка, программист, фотограф, подкастер, блоггер и CEO студии FDCore Studio

Профиль
 
 
Отправлено: 13 Август 2009 06:20 P.M.   [ Игнорировать ]   [ # 1 ]
Member
Avatar
RankRankRank
Всего сообщений:  153
Зарегистрирован  2008-08-19

если в поле присутствует значек $, то оно уже не числовое и сортируется как текст.

Профиль
 
 
Отправлено: 13 Август 2009 06:35 P.M.   [ Игнорировать ]   [ # 2 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  644
Зарегистрирован  2009-04-11

в поле тока цифры, знаки дописываются в шаблоне wink

сортировка в ее =)

if ($random === TRUE)
{
    shuffle
($new);
}
elseif ($sort == 'asc'// 1 to 10, A to Z
{
    uksort
($new'strnatcasecmp');
}
else
{
    uksort
($new'strnatcasecmp');
    
$new array_reverse($newTRUE);
 Подпись 

Няшка, программист, фотограф, подкастер, блоггер и CEO студии FDCore Studio

Профиль
 
 
Отправлено: 13 Август 2009 10:04 P.M.   [ Игнорировать ]   [ # 3 ]
Студент
RankRank
Всего сообщений:  73
Зарегистрирован  2008-05-21

Вопрос сортировки полей “price”, в частности - по цене в модуле  Simple Commerce обсуждался
год назад на http://expressionengine.com/forums/viewthread/85511/

Конечно-же без использования {exp:query} здесь не обойтись  mad

Профиль
 
 
Отправлено: 13 Август 2009 10:21 P.M.   [ Игнорировать ]   [ # 4 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  644
Зарегистрирован  2009-04-11

страшный там метод, легче свой модуль напишу =)

 Подпись 

Няшка, программист, фотограф, подкастер, блоггер и CEO студии FDCore Studio

Профиль
 
 
Отправлено: 13 Август 2009 11:08 P.M.   [ Игнорировать ]   [ # 5 ]
Студент
RankRank
Всего сообщений:  73
Зарегистрирован  2008-05-21
FDCore - 13 Август 2009 10:21 P.M.

страшный там метод, легче свой модуль напишу =)

Ну-у-у, вообще всевозможные там модули для ЕЕ пишутся для распостранения с целью их
дальнейшего использования не программистами...

Для решения же задачи в локальном проекте достаточно воспользоваться php-вставкой, где, в данном
случае из необходимых значений формируется массив с последующей сортировкой и выводом...

Профиль
 
 
Отправлено: 14 Август 2009 02:23 A.M.   [ Игнорировать ]   [ # 6 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  644
Зарегистрирован  2009-04-11

сделал в общем так:

{exp:query sql="SELECT entry_id FROM `exp_weblog_data` WHERE weblog_id = '4' ORDER BY CONVERT(field_id_7, SIGNED) DESC"}
    {exp
:weblog:entries entry_id="{entry_id}"}
    
<h2><a href="{title_permalink={my_template_group}/index}">{title}</a> <sup>({item_price}$)</sup></h2>
    
{/exp:weblog:entries}
{
/exp:query} 

страшновато выглядит (

 Подпись 

Няшка, программист, фотограф, подкастер, блоггер и CEO студии FDCore Studio

Профиль
 
 
Отправлено: 14 Август 2009 09:09 A.M.   [ Игнорировать ]   [ # 7 ]
Sr. Member
RankRankRankRank
Всего сообщений:  987
Зарегистрирован  2008-09-27

По мне вполне нормально. Я люблю писать чисто sql звпросами. Так гораздо меньше обращений к базе. Даже в статье по оптимизации писалось, что по возмодности используете sql запросы вместо weblog и прочих конструкций. В твоем случае добавь еще disable в weblog.

Профиль
 
 
Отправлено: 15 Август 2009 02:22 A.M.   [ Игнорировать ]   [ # 8 ]
Новичок
Avatar
Rank
Всего сообщений:  44
Зарегистрирован  2009-01-19

Наверное расцените как хак, но лично я бы просто поменял тип поля в бд с varchar на int…

 Подпись 

Мои статьи про EE

Профиль
 
 
Отправлено: 15 Август 2009 03:30 P.M.   [ Игнорировать ]   [ # 9 ]
Студент
RankRank
Всего сообщений:  73
Зарегистрирован  2008-05-21
voff - 15 Август 2009 02:22 A.M.

Наверное расцените как хак, но лично я бы просто поменял тип поля в бд с varchar на int…

По-моему, основной недостаток любой CMS в том, что если не удается
“запуститься” штатными методами - приходится лезть в мотор...
И EE, к сожалению, здесь не исключение.

Профиль
 
 
Отправлено: 20 Сентябрь 2010 02:06 P.M.   [ Игнорировать ]   [ # 10 ]
Member
Avatar
RankRankRank
Всего сообщений:  325
Зарегистрирован  2008-06-16
voff - 15 Август 2009 02:22 A.M.

Наверное расцените как хак, но лично я бы просто поменял тип поля в бд с varchar на int…

Хак-то оно хак, но работает smile

 Подпись 

Всё что делается - не всё нами принимается...

Профиль