gpt4 book ai didi

php - 当新数据插入数据库时​​以及用户看到时切换通知图标

转载 作者:行者123 更新时间:2023-11-29 22:20:20 28 4
gpt4 key购买 nike

先谢谢大家了!

所以,我的公司正在运行一个管理数据的内部系统。有时,数据会被修改或我添加新数据,并且我需要在发生这种情况时通知用户。我创建了一个通知系统,当用户单击钟形链接(有点像谷歌的通知钟)时,它会在模式窗口中显示数据库中的新内容。问题是,这是一个静态链接,当我在数据库中插入或修改内容时,我希望它切换颜色或另一个图标,然后在用户看到它时切换回来。当进行更改时可能会变成红色,而当用户看到时又会变回白色。

首先,我必须提到我的数据库中有 3 个表;用户、列表和通知。通知表用于在数据更改或新数据添加到列表中时通知用户,这是通过我创建的表单实现的。

到目前为止,我的代码是这样的:

这是用户的代码:

<?php
session_start();
if (!isset($_SESSION["manager"])){
header("location: admin_login.php");
exit();
}
$managerID = preg_replace('#[^0-9]#i', '', $_SESSION["id"]);
$manager = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["manager"]);
$password = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["password"]);
include "scripts/connect.php";
$sql = mysql_query("SELECT * FROM users WHERE id='$managerID' AND username='$manager' AND password='$password' LIMIT 1");
$existCount = mysql_num_rows($sql);
if ($existCount == 0){
echo "The login info you entered does not exist in the database.";
exit();
}
$header ="";
while ($row = mysql_fetch_array($sql)){
$name = $row["name"];
$accounttype = $row["accounttype"];
if($accounttype == "a"){
include_once "menu_a.php";
}else{
include_once "menu_b.php";
}
}
?>

请注意,索引页面中有两个 header (menu_a.php 和 menu_b.php)包含不同的导航菜单。这是因为有两种类型的用户帐户; “a”只能看到列表和某些内容,“b”(我)有权访问管理任务。

现在,在两个 header (menu_a.php 和 menu_b.php)中,他为所有用户提供链接以查看新内容,如下所示:

<a href="#openModal"><i class="fa fa-bell" style="color:#fff;"></i></a>

然后,通知的显示将显示在名为“navigation_table.php”的文件中。通过调用“include_once (“notificaciones_table.php”);”,它会在网站每个页面的模式窗口中打开。该代码如下所示:

<?php
$listnotif = "";
$sql = mysql_query("SELECT * FROM notificatios ORDER BY date DESC LIMIT 15");
$productCount = mysql_num_rows($sql);
if ($productCount > 0) {
while($row = mysql_fetch_array($sql)){
$type = $row["type"];
$description = $row["description"];
$date = ucwords(strftime("%A %e/%m/%Y - %l:%M", strtotime($row["date"])));
$listnotif .= "<tr><td><small>$date</small></td><td>$type</td><td>$description</td><tr>";
}
} else {
$listnotif = "<tr><td colspan='3'>There are no notifications</td></tr>";
}
?>

<table>
<tr>
<th>Date</th>
<th>Type</th>
<th>Description</th>
</tr>
<?php echo $listnotif; ?>
</table>

然后,在名为“notif_admin.php”的页面中,我显示了我创建的所有通知,以便我可以管理它们,以及一个用于将新数据插入到 notification 表中的表单。代码如下所示:

<?php 
$delete = "";
if (isset($_GET['deleteid'])) {
$delete .= 'You sure you want to delete this entry? <a href="notif_admin.php?yesdelete=' . $_GET['deleteid'] . '">&ensp;<b>Yes</b></a> - <a href="notif_admin.php"><b>No</b></a></div>';
}
if (isset($_GET['yesdelete'])) {
$id_to_delete = $_GET['yesdelete'];
$sql = mysql_query("DELETE FROM notifications WHERE id='$id_to_delete' LIMIT 1") or die (mysql_error());
}
?>
<?php
if (isset($_POST['type'])){
$type = mysql_real_escape_string($_POST['type']);
$description = mysql_real_escape_string($_POST['description']);

$sql = mysql_query("INSERT INTO notifications (type,description,date) VALUES('$type','$description',now())") or die (mysql_error());
}
?>
<?php
$notification = "";
$sql = mysql_query("SELECT * FROM notifications ORDER BY date DESC");
$productCount = mysql_num_rows($sql);
if ($productCount > 0) {
while($row = mysql_fetch_array($sql)){
$id = $row["id"];
$type = $row["type"];
$description = $row["description"];
$date = ucwords(strftime("%A %e/%m/%Y - %l:%M", strtotime($row["date"])));
$notification .= "<tr><td><a href='notif_admin.php?deleteid=$id'><span class='fa fa-trash-o'></span></a></td><td>$date</td><td>$type</td><td>$description</td></tr>";
}
} else {
$notification = "<tr><td>No stuff here</td></tr>";
}
?>

<table>
<tr>
<th>delete</th>
<th width="200">Date</th>
<th>Type</th>
<th>Description</th>
</tr>
<?php echo $notification; ?>
</table>
</div>

<form action="notif_admin.php" enctype="multipart/form-data" name="myForm" id="myForm" method="post">
<table>
<tr>
<td width="150">Type</td>
<td>
<select name="type" id="type">
<option selected="selected">Select</option>
<option value="Addition">Additio</option>
<option value="Removal">Removal</option>
<option value="Modification">Modification</option>
<option value="Correction">Correction</option>
<option value="General">General</option>
</select>
</td>
</tr>
<tr>
<td>Description</td>
<td><input name="description" id="description" type="text"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input name="button" id="button" type="submit" value="Add Notification" class="boton"></td>
</tr>
</table>
</form>

此图片可提供更好的引用: Switch notification icon when new insert into database and when seen by user

最佳答案

如果您想要实时通知,有几个选项。

  1. 您可以使用Server Sent Events .
  2. 您可以在前端使用 AJAX 轮询服务器。

如果您使用的是 JQuery,那么看起来就像这样。

setInterval(function() {
$.get('/notification_url', function(res) {
$('.fa-bell').css({'color': 'red'});
});
}, 1000);

这将每秒轮询您服务器上的某些页面以检查更新。

您有多种选择,但无论哪种方式,您都需要通过 Javascript 进行更新。

关于php - 当新数据插入数据库时​​以及用户看到时切换通知图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30790110/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com