Искать  
 
   
 
sql запрос, дополнительные поля профиля
Отправлено: 04 Февраль 2010 09:56 P.M.   [ Игнорировать ]
Студент
RankRank
Всего сообщений:  74
Зарегистрирован  2008-09-02

Все стандартные поля профиля находятся в exp_members соответственно легко вывести и отсортировать что нужно.
Однако у меня есть дополнительное поле, Рейтинг. (rating) В поле цифры. В базе оно находиться в exp_member_data.

Нужно вывести список пользователей отсортированный по рейтингу, плюс собственно сам рейтинг рядом с username.

Начал с

{exp:query sql="select member_id, m_field_id_1 from exp_member_data order by m_field_id_1 asc" limit="10"}  
{member_id} 
({m_field_id_1})
<
br/>
{/exp:query} 

Тут же первая проблема, у некоторых пользователей поле рейтинг пустое. В списке они выводятся первее тех у кого поле рейтинг заполнено...

Далее имея id пользователя нужно вытянуть его username, как это прописать?


Спасибо.

Профиль
 
 
Отправлено: 05 Февраль 2010 01:06 A.M.   [ Игнорировать ]   [ # 1 ]
Студент
RankRank
Всего сообщений:  74
Зарегистрирован  2008-09-02

Всё, с выводом разобрался, осталась только первая проблема, а именно

у некоторых пользователей поле рейтинг пустое. В списке они выводятся первее тех у кого поле рейтинг заполнено...

Профиль
 
 
Отправлено: 05 Февраль 2010 03:31 P.M.   [ Игнорировать ]   [ # 2 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  891
Зарегистрирован  2008-01-07
Granin - 04 Февраль 2010 09:56 P.M.
{exp:query sql="select member_id, m_field_id_1 from exp_member_data order by m_field_id_1 asc" limit="10"}  
{member_id} 
({m_field_id_1})
<
br/>
{/exp:query} 

Тут же первая проблема, у некоторых пользователей поле рейтинг пустое. В списке они выводятся первее тех у кого поле рейтинг заполнено...

asc - это сортировка от 0 до 9, desc - противоположно от asc

Профиль
 
 
Отправлено: 05 Февраль 2010 05:00 P.M.   [ Игнорировать ]   [ # 3 ]
Студент
RankRank
Всего сообщений:  74
Зарегистрирован  2008-09-02

asc - это сортировка от 0 до 9, desc - противоположно от asc

Да, это я знаю, но если сделать desc то вначале будет самый низкий рейтинг...
При asc вывод такой (в скобках рейтинг)

# DIABLO
# Владимир
# Antuan
# Влад
# OlDol (10)
# манноб (8)
# Андрей (6) 

при desc соответственно такой:

# DIABLO  (6)
# Владимир (8)
# Antuan (10)
# Влад
# OlDol 
# манноб 
# Андрей 

А мне надо как-то не учитывать тех у кого поля рейтинг пустое... Либо всегда автоматом при регистрации задавать его как 0 ? Как это можно сделать?

Профиль
 
 
Отправлено: 05 Февраль 2010 05:37 P.M.   [ Игнорировать ]   [ # 4 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  891
Зарегистрирован  2008-01-07
Granin - 05 Февраль 2010 05:00 P.M.

А мне надо как-то не учитывать тех у кого поля рейтинг пустое...

{if m_field_id_1 != ''}
{member_id} 
({m_field_id_1})
{/if} 

...сортировка наверное будет не совсем точной

Granin - 05 Февраль 2010 05:00 P.M.

Либо всегда автоматом при регистрации задавать его как 0 ? Как это можно сделать?

например в phpMyAdmin изменить в структуре таблици exp_member_data значение поля rating за умолчанием

Профиль
 
 
Отправлено: 05 Февраль 2010 06:02 P.M.   [ Игнорировать ]   [ # 5 ]
Студент
RankRank
Всего сообщений:  74
Зарегистрирован  2008-09-02

Чрез phpmyadmin

UPDATE exp_member_data SET m_field_id_1 0 WHERE m_field_id_1 '' 

Поставил везде 0.

Также структура
m_field_id_1 По умолчанию 0

Однако список тот же только с нулём

(0)
57 (0)
67 (0)
21 (10)
117 (10)
(9)
121 (5)
19 (4)
69 (3
Профиль
 
 
Отправлено: 05 Февраль 2010 06:15 P.M.   [ Игнорировать ]   [ # 6 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  891
Зарегистрирован  2008-01-07

ну и Тип поля на int изменить, там наверное просто text стоит

Профиль
 
 
Отправлено: 05 Февраль 2010 06:20 P.M.   [ Игнорировать ]   [ # 7 ]
Студент
RankRank
Всего сообщений:  74
Зарегистрирован  2008-09-02

футы smile большое спасибо budulay, Вы как всегда меня выручаете.
Я вообще в php и mysql очень слаб. Это можно сказать впервые когда я что-то сам пытаюсь менять в базе.
Ещё раз спасибо.

Профиль