@sanya164

Как при клике изменить число в базе данных?

Здравствуйте, у меня на сайте имеется кнопка оповещений, поверх нее расположено число непрочитанных оповещений.
Выглядит это так:

961d33ef0da14bcf9909768da9703826.PNG
Разговор сейчас именно про это число. В базе имеется поле alerts, которое выводится на экран, если оно больше 0.
Реализация такая:

dfc1e84d6e3d4c998791b676842beb05.PNG

$name = Admin;
$user = R::findOne('user', 'name = ?', array($name));


  if (($user['alerts'] > '0') ) {

    echo '<div id="alerts">'.$user['alerts'].'</div>';
  }
?>


Как мне можно сделать так, чтобы при нажатии на кнопку оповещений, число в поле alerts стало равно 0 ?

Вот код кнопки оповещений, сейчас при нажатии она показывает уведомления с помощью javascript.

<img src="images/alerts.png" hspace="10" vspace="10" onclick="myAlerts()" class="dropbtn" name="alerts"></a>
  • Вопрос задан
  • 562 просмотра
Решения вопроса 1
iqw
@iqw
Serior Software Engineer
Функция myAlerts() в данной реализации (onclick атрибут) должна послать асинхронный запрос на сервер, который уже сделает запись в базу.

Так как javascript выполняется в браузере уже после выполнения кода на сервере - единственный способ сделать запись в базу - AJAX (еще есть вебсокеты, но это более сложная тема).

https://ru.wikipedia.org/wiki/AJAX

Обработчиком этого запроса может служить выделенный файл php, или роут (если Вы используете фреймворк)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
DarkRaven
@DarkRaven
разработка программного обеспечения
в myAlerts() где-то добавить:
$.post('путь/к/пхп/обработчику').then(function(){
 $('#alerts').html("0");
});


В обработчике :
$name = 'Admin' // Получить имя из сессии или еще откуда
 R::exec( 'UPDATE users SET alerts=0 WHERE name = ?', array($name) ); //Как то так, не уверен что это у вас ReadBeanPHP и не уверен что он в exec так получает парамертры
Ответ написан
@MherArsh
в функции myAlerts() сделай Update с именем пользователя который ты можешь взять из сессии.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы