所以我设置了一个通知系统,除非我清除通知,否则一切都很完美。当div打开时它会清除,但如果我刷新页面而没有打开div,它也会清除,我不想在用户打开通知div之前清除通知。我该怎么做呢?
任何帮助或能指出我正确方向的人都将不胜感激
谢谢
我一直在使用这行代码来清除通知
<?php user_core::clear_notifications($user1_id); ?>
此代码为OnClick toggle()
<div class="alert_header_item_container">
<a onclick="toggle('alert_dropdown');">
<div class="alert_header_item" id="alerts"></div>
<?
$sql = "SELECT * FROM notifications WHERE notification_targetuser=".$user1_id." AND notification_status = '1'" ;
$chant= mysqli_query($mysqli,$sql);
$num = mysqli_num_rows($chant);
if($num==1) {
echo '<div class="alert_header_item_new" id="alerts"></div>';
} else {
echo "";
}
?>
</a>
答案 0 :(得分:0)
您遇到的问题是this
:
PHP不加载或执行Javascript。这是一个顺序 执行:
- 用户从您的Web服务器请求数据。
- 您的网络服务器执行您的PHP脚本,该脚本会输出一些HTML / Javascript。
- Web服务器将HTML / Javascript发送到用户的浏览器。
- 用户的浏览器呈现HTML并执行Javascript。所以,是的,PHP会 在执行Javascript之前完成执行。
醇>
基本上,在您切换PHP
事件之前,onclick
已完成。
你真正想要做的是这样的事情:
构建您的HTML
之类的内容。
<div class="alert_header_item_container">
<a id="read-notifications">
<div class="alert_header_item" id="alerts"></div>
</a>
</div>
现在我们运行ajax请求(当文档加载时)以获取通知
$(document).ready(function(){
$.ajax({
type: 'post',
url: 'notifications.php',
data: {id: user_id},
}).success(function(data){
$('alerts').html(data);
});
});
您可以拨打notifications.php
来php/sql
运行<?php
$user1_id = $_POST['id']; // then sanitize as needed
$sql = "SELECT * FROM notifications WHERE notification_targetuser=" . $user1_id . " AND notification_status = '1'";
$chant = mysqli_query($mysqli, $sql);
$num = mysqli_num_rows($chant);
if ($num == 1) {
while($row = mysqli_fetch_assoc()){
// make notifications markup
}
echo MARKUP_FROM_ABOVE
}
?>
来获取通知:
onclick
对于0
事件,您可以执行以下操作(单独的php文件将更新通知以将其设置为读取(可能是< strong> $(document).on('click', 'a#read-notifications', function(e) {
$.ajax({
type: 'post',
url: 'readnotifications.php',
data: {id: user_id},
}).success(function(data) {
// do what you need to do as notifications were read.
});
});
?)):
readnotifications.php
在sql query
上,您运行的$_POST['id']
会将0
(用户ID )的通知更新为 { {1}} (阅读)。