我有一个通知下拉列表(如facebook),显示存储在数据库中的通知。
我想在用户下拉通知“菜单”时将通知标记为已读。这可能吗?如果是的话有人能帮我吗?
数据库将信息存储在“notification_read”字段中,该字段设置为0或1(0表示未读)。
谢谢,对不起,我是NB
我的下拉菜单代码示例

<ul class="dropdown-menu notifications arrow">
                    <li class="dd-header">
                        <span>You have 3 new notification(s)</span>
                        <span><a href="#">Mark all Seen</a></span>
                    </li>
                    <div class="scrollthis">
                        <li>
                            <a href="#" class="notification-user active">
                                <span class="time">4 mins</span>
                                <i class="fa fa-user"></i>
                                <span class="msg">New user Registered. </span>
                            </a>
                        </li>

最佳答案

如果不详细讨论(因为这非常广泛,而且我不知道代码的结构),您实际上需要两件事:
更新数据库的服务器端脚本。这可以接受更新内容的参数,也可以只是一个全局操作,将当前用户的所有项标记为已读。(我假设是后者。)
通过AJAX调用服务器端脚本的客户端代码。
对于服务器端脚本,为了简单起见,它将是一个单独的独立“页面”。如果我们假设没有参数,并且它可以从会话中推断出当前用户,那么这个脚本需要做的就是执行任何SQL代码来执行更新。然后它可以返回(嗯,“打印到页面”)一些简单的内容,比如truefalse,以指示更新是否成功。(如果不成功,请确保将错误记录在某个位置,以便诊断问题。)
假设这叫做markAsRead.php
现在对于客户端脚本来说,这可能很简单(假设jQuery,因为它更容易释放):

$.get('markAsRead.php');

或者如果客户端代码需要以某种方式响应,例如从菜单更改样式:
$.get('markAsRead.php', function (data) {
    // examine data for the response, which from the above
    // description could just be a "true" or "false", and
    // perform client-side logic based on that response
});

这个客户端代码只会在您使用的任何处理程序中调用。例如,如果有一个名为div#messages正在被用户单击,它可能如下所示:
$('#messages').click(function () {
    $.get('markAsRead.php', function (data) {
        // examine data for the response, which from the above
        // description could just be a "true" or "false", and
        // perform client-side logic based on that response
    });
});

总的来说,重点是客户端代码响应UI事件(click),向服务器端资源发送请求,服务器端资源依次执行服务器端逻辑,然后从该资源读取响应以执行任何其他客户端逻辑。

关于php - 打开下拉菜单时更新MySQL数据库(NB),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28435099/

10-14 13:23
查看更多