2015-08-25 3 views
-2

У меня есть база данных с таблицей 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.

ответ

0

Я хотел бы сделать систему обмена сообщениями: Создание сообщения таблицы с текстом , заглавие. (для каждого сообщения, которое у вас есть или динамически). Затем создайте таблицу user_has_message, где вы получили 2 Ключа для соединения, и логическое, если чтение.

С помощью простого Select * from user JOIN user_has_message on ... and iduser = ... JOIN message on ... where read = false вы получаете все свои предупреждения/сообщения для указанного пользователя.

EDIT: Теперь вы можете просто добавить запись в user_has_entry, в котором необходимо указать, какие user должны получить какой message.

Теперь у вас есть много возможностей: добавьте дату по умолчанию СЕЙЧАС(), чтобы узнать, когда появилось сообщение, дать пользователю возможность удалить это сообщение (что только удаляет запись на user_has_message), добавьте эту опцию в отметьте сообщение как непрочитанное и т. д. ...

Shure вы также можете использовать эти сообщения для других вещей, таких как приветственное сообщение и т. д. Или добавить cronjob для отправки электронной почты пользователям с открытыми сообщениями старше 5 дней , Или даже реализовать чат-систему ...

+0

Мне трудно понять это (его один из тех дней). Итак, таблица с сообщениями (вы разблокировали этот значок или этот значок выравнивался), а затем пользователь имеет таблицу массажа, в которой он имеет id, user_id, message_id, читает. Запрос mysql - это то, что меня толкает. Разве мне не нужен триггер, чтобы сообщить базе данных, что пользователь разблокировал значок или выровнялся, а затем отобразил правильное сообщение? – Drew

+0

Да. когда вы даете значок/выравниваете, вы добавляете запись в 'user_has_entry', в которой вы указываете, какой пользователь получил какое сообщение. – inetphantom

+0

Но не создавайте триггер в базе данных, отправляйте сообщение на функцию badge_unlocked() -. – inetphantom

Смежные вопросы