У меня есть база данных с таблицей userbadges. Все пользователи имеют все значки на уровне 0 «заблокированы» (выделены серым цветом). Они могут разблокировать его на уровне 1, вплоть до уровня 3. Каждый уровень стоит очков.Лучший способ оповестить пользователя
userbadges {user_id,badge_id,level,score,seen}
Что бы лучший способ для меня, чтобы предупредить пользователя о том, что они
- а) разблокирован новый значок
- б) выровняли вверх знак
У меня есть этот код, но это не кажется правильным. Он подсчитывает количество новых значков():
function countNewBadges() {
require "connect.php";
$newbadges = mysqli_query($connection,"SELECT users.studentid, individualbadges.badgename, ub.level, count(ub.seen) as total FROM userbadges ub
INNER JOIN users ON users.id = ub.user_id
INNER JOIN individualbadges ON individualbadges.id = ub.badge_id
WHERE studentid = '".$_SESSION["studentid"]."' && seen=0 && level!=0") or die(mysqli_error($connection));
while ($data = mysqli_fetch_array($newbadges)) {
echo $data['total'];
}
}
У меня также есть код, чтобы установить видел поле таблицы значки 1.
Мне трудно понять это (его один из тех дней). Итак, таблица с сообщениями (вы разблокировали этот значок или этот значок выравнивался), а затем пользователь имеет таблицу массажа, в которой он имеет id, user_id, message_id, читает. Запрос mysql - это то, что меня толкает. Разве мне не нужен триггер, чтобы сообщить базе данных, что пользователь разблокировал значок или выровнялся, а затем отобразил правильное сообщение? – Drew
Да. когда вы даете значок/выравниваете, вы добавляете запись в 'user_has_entry', в которой вы указываете, какой пользователь получил какое сообщение. – inetphantom
Но не создавайте триггер в базе данных, отправляйте сообщение на функцию badge_unlocked() -. – inetphantom