[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: статусы пользователя через бд
plumli
Здравствуйте, я столкнулся с проблемой вывода статусов у пользователей, таблица бд такова:

user posted image

в таблице пользователей есть элемент в котором занесено количество сообщений от пользователя, нам нужно взять это количество и в зависимости от его значения присудить статус из таблиц (рис выше) все это касается только для строк с userlevel = 0 из той же таблицы.

Можете подсказать как это осуществить?




Спустя 28 минут, 35 секунд (17.10.2011 - 22:03) imbalance_hero написал(а):
plumli
"присудить статус", ты либо проще говори, либо научнее smile.gif Потому что я не понял тебя...

Спустя 3 минуты, 42 секунды (17.10.2011 - 22:06) plumli написал(а):
это значит вывести рядом с ником пользователя его статус который соответствует количеству сообщений набранных этим пользователем

Спустя 17 минут, 4 секунды (17.10.2011 - 22:23) imbalance_hero написал(а):
plumli
echo $row['status_name']; и что тут непонятного? smile.gif

Спустя 1 минута, 56 секунд (17.10.2011 - 22:25) dadli написал(а):
plumli что то такое ?

UPDATE mytable SET status_name =
CASE
WHEN

count_mesage <= 49 THEN 'proxoji'
WHEN
count_mesage >= 50 AND count_mesage <= 299 THEN 'novichok'
WHEN
count_mesage >= 300 AND count_mesage <= 599 THEN 'starojil'
WHEN
count_mesage >= 600 THEN 'guru'
END
WHERE userlevel IN (0)

Спустя 5 минут, 47 секунд (17.10.2011 - 22:31) imbalance_hero написал(а):
Дошло, тебе надо сделать отдельно в начале выборку эту таблицу и создать массив.
Потом просто перебрать массив и найти последнее значение, которое удовлетворяет запросу: user_mails < count_message. Такое проделать с статусом каждого юзера, который выводится на экран.

Спустя 7 часов, 8 минут, 38 секунд (18.10.2011 - 05:40) plumli написал(а):
dadli нужно чтобы данные брались из таблицы а не вводить их вручную.

imbalance_hero не подскажете хоть примерно код, а то пробовал через foreach - не получилось, сейчас вообще сделал так хоть и понимаю что работать не будет:
 $query = mysqli_query ($dbc, "SELECT username, avatar, count_messages, userlevel FROM users WHERE user_id = '$creator_id'");
$row = mysqli_fetch_array($query);
$total_message_user = $row['count_messages'];

$query_status_user = mysqli_query ($dbc, "SELECT * FROM status WHERE count_messages <= '$total_message_user'");
$row_status_user = mysqli_fetch_array($query_status_user);

if ($total_message_user >= $row_status_user['count_messages'])
{
$status = $row_status_user['username'];
}

Спустя 5 часов, 21 минута, 43 секунды (18.10.2011 - 11:01) plumli написал(а):
никаких идей?

Спустя 48 минут, 17 секунд (18.10.2011 - 11:50) lightstar написал(а):
Вот так
$query = mysqli_query ($dbc, "SELECT username, avatar, count_messages, userlevel FROM users WHERE user_id = '$creator_id'");
$row = mysqli_fetch_array($query);
$total_message_user = $row['count_messages'];

$query_status_user = mysqli_query($dbc, "SELECT status_name FROM status WHERE count_messages <= '$total_message_user' ORDER BY count_messages DESC");
while($row = mysql_fetch_array( $query_status_user )){
$status_user=$row['status_name'];
}

echo $status_user;


Спустя 8 минут, 8 секунд (18.10.2011 - 11:58) imbalance_hero написал(а):
plumli
Сначала идёт выбор первой таблицы ( не юзеров), создаёшь единый массив.
А дальше - в цикле проходишь юзеров и ячейку "комменты" сверяешь через foreach со значением данного юзера.

Я не вижу у тебя перебора массива цифр и сравнения их с выбранным юзером.

lightstar
Не лучший вариант, а если мы будем выводить несколько юзеров - то плохой вариант! Выбор статусов необходимо сделать отдельно, а не каждый раз дергать эту таблицу, особенно когда работаем с форумом или чем-то ещё, когда выводятся большое число юзеров. В твоём примере = 1 юзер = 1 обращение к таблице status.

Спустя 1 час, 59 минут, 3 секунды (18.10.2011 - 13:57) plumli написал(а):
imbalance_hero попытаюсь перевести инструкцию в код, о результате отпишу :)

Спустя 5 часов, 40 минут, 13 секунд (18.10.2011 - 19:37) plumli написал(а):
у меня получается бред sad.gif

Спустя 19 минут, 53 секунды (18.10.2011 - 19:57) imbalance_hero написал(а):
Ну покажи.

Спустя 7 минут, 44 секунды (18.10.2011 - 20:05) plumli написал(а):
сильно не ругаться

$creator_id = $row_topic['user_id'];
$query = mysqli_query ($dbc, "SELECT username, avatar, count_messages, userlevel FROM users WHERE user_id = '$creator_id'");
$row = mysqli_fetch_array($query);
$creator_name = $row['username'];
$total_message_user = $row['count_messages'];
$userlevel = $row['userlevel'];

$query_status_admin = mysqli_query ($dbc, "SELECT * FROM status WHERE userlevel = '$userlevel'");
$row_status_admin = mysqli_fetch_array($query_status_admin);

$query_status = mysqli_query($dbc, "SELECT * FROM status");
$row_status = mysqli_fetch_array($query_status);

foreach ($row_status['count_messages'] as $status_id=>$value)
{
$query_status2 = mysqli_query($dbc, "SELECT * FROM status WHERE count_messages = '$value'");
$row_status2 = mysqli_fetch_array($query_status2);

if ($row_status2['count_messages'] >= $total_message_user)
{
echo $row_status2['status_name'];
}
}

Спустя 23 минуты, 18 секунд (18.10.2011 - 20:28) dadli написал(а):
plumli
я так понял:

вам есть один таблица: на картинке в первом посте.


и есть втарая таблица где сохраняется ники ползователеи, и вам нужно вивести ник и статус ползователя, соответсвенно его count_messages.
правилно понял я?

Спустя 7 минут, 46 секунд (18.10.2011 - 20:36) plumli написал(а):
правильно

Спустя 26 минут (18.10.2011 - 21:02) imbalance_hero написал(а):
plumli
Я не вижу у тебя while() для прогона таблицы, так же не вижу у тебя создание массива с данными. А ещё почему-то статус у тебя идёт после юзера, хотя я дважды повторял, что перед.

Спустя 3 часа, 29 минут, 44 секунды (19.10.2011 - 00:32) dadli написал(а):
plumli

називаите вашему таблицу, котории покозали в первом посте: forum
таблица ползователеи: users
nick - ето поле в таблице users, где храняется ники ползователеи

и запускаите такои запрос, ето вам нужно?




$nick = "jonathan";


$res = mysql_query(
"SELECT
nick, users.count_mesages,
CASE
WHEN users.count_mesages < (SELECT forum.count_mesages FROM forum WHERE status_name = 'новичок')
THEN 'прохожий'

WHEN users.count_mesages >= (SELECT forum.count_mesages FROM forum WHERE status_name = 'новичок')
AND users.count_mesages < (SELECT forum.count_mesages FROM forum WHERE status_name = 'постоялец')
THEN 'новичок'

WHEN users.count_mesages >= (SELECT forum.count_mesages FROM forum WHERE status_name = 'постоялец')
AND users.count_mesages < (SELECT forum.count_mesages FROM forum WHERE status_name = 'старожил')
THEN 'постоялец'

WHEN users.count_mesages >= (SELECT forum.count_mesages FROM forum WHERE status_name = 'старожил')
AND users.count_mesages < (SELECT forum.count_mesages FROM forum WHERE status_name = 'гуру')
THEN 'старожил'

WHEN users.count_mesages >= (SELECT forum.count_mesages FROM forum WHERE status_name = 'гуру')
THEN 'гуру'

END
FROM users
WHERE nick = '"
.$nick."'
"
,$db) or die(mysql_error());

$row = mysql_fetch_row($res);

do {
echo $row[0]." ".$row[1]." ".$row[2]."<br>";
}
while($row = mysql_fetch_row($res));

Спустя 38 минут, 24 секунды (19.10.2011 - 01:10) imbalance_hero написал(а):
dadli
Это ужасно! smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.