【问题标题】:Implement read/unread like in email在电子邮件中实现已读/未读
【发布时间】:2009-11-17 13:57:16
【问题描述】:

我正在尝试在电子邮件中实现类似已读/未读的内容。我如何通过使用 jquery、php 和 mysql 来做到这一点。 我想分步做的:

1- 当我单击 html 表中的一行时,我会更改数据库中此消息的状态。 2-然后更改此行的背景,但如果我注销并重新登录,该行仍然会更改。 3- 知道我已经在为表格行使用 css 类。

到目前为止,我所做的是通过更新更改了数据库中此特定消息的状态。

问候。

【问题讨论】:

  • 我觉得这太笼统了,也许你可以更具体一点?
  • 你将不得不改写你的问题,详细说明你需要什么,并最好解释你到目前为止所做的尝试。
  • 我不明白这是个问题。我觉得您是在要求我们中的一个人为您编写代码,而这不是本网站的用途。

标签: php jquery mysql


【解决方案1】:

我不能给你所有的代码,因为这有点太多了,但我会这样做:

  1. 使用 jQuery,为表行的 onChange 事件分配一个函数。
  2. 该函数使用 AJAX 通知服务器该事件的状态更改。
  3. 服务器更新该特定行的状态。
  4. 它可以发回该行的 HTML 代码,或者您可以使用 jQuery 更改类。
  5. 由于现在数据库中的状态发生了变化,再次登录后将显示正确的状态,因为在这种情况下页面将从服务器加载(我假设)......

您也必须考虑要为禁用 JavaScript 支持的人做什么。

如果您在编码方面需要更多帮助,请发表评论!

【讨论】:

  • Hey Franz 谢谢你的回答,所以你的意思是我应该在从服务器加载后检查状态,然后根据状态更改行的类
  • 是的,你可以让 AJAX 脚本返回新的状态。
【解决方案2】:

如果它是一个生产站点,您可能无论如何都希望提供一个无 javascript 的解决方案,因此如果您在点击时更改页面,那么您根本不需要涉及 javascript。在数据库中创建一个默认为 0 的“读取”布尔字段。当您点击查看记录时,将记录id保留在url中,并通过php在您点击后进入的页面中将该记录的“读取”更改为1。

如果您希望在点击后停留在同一页面上,那么您需要使用 javascript,正如 Franz 上面提到的那样,但最好以渐进增强的方式进行,并添加 javascript值,以及底层可用的基本功能。

【讨论】:

  • 嘿 Tchalvak 谢谢你的回答,实际上我已经在数据库中创建了一个布尔值,它在点击时发生了变化,但我不认为 url 的想法是最好的,因为我们在这里讨论大约有几条记录。
  • 我同意 Tchalvak。尝试为禁用它的人提供非 JS 方式。
  • 好吧,如果你曾经使用过gmail或者hotmail或者yahoo邮箱,原理是一样的,如果你可以通过点击“查看”一条记录,然后处理“已读/未读” " 在您查看记录的页面上处理。仅使用 javascript 的解决方案的问题是(对于生产、赚钱类型的网站)当有人尝试使用稀有浏览器 ie6、手机上的某些东西、某些较旧的浏览器,或者只是当某些意外破坏了 javascript 时会发生什么。所以渐进式增强是关键。
【解决方案3】:

也许我可以更好地格式化它,但这应该符合您正在寻找的概念。

遍历电子邮件结果集。

<tr class="email_unread"><td><img class="email" id="email_id_'.$email_id.'" /></td><td> '.$email_subject.' </td></tr>

您可以将类设置为 email_read 或 email_unread,具体取决于电子邮件是否已被阅读。 if($email_read = 1) $css = "email_read";否则 $css = "email_unread";

使用 jQuery 来完成这项繁琐的工作。

<script type="text/javascript">
        $(document).ready(function() {
            $("img.email").click(function(){

                    $.get("emailRead.php", { id: $(this).attr("id") } );
                    $(this).parent().parent().removeClass('email_unread').addClass('email_read');

            });

        }); 
    </script>

这将是 emailRead.php

connect_db(); // CONNECT TO DB

$id = $_GET['id'];
$id = str_replace("email_id_","",$id);

$query="UPDATE email SET email_read = 1 WHERE email_id = '$id'";

$getResults=mysql_query($query) or die(mysql_error());

在这里您获取 GET 变量,修剪 email_id_ 部分以获取数字,然后在更新查询中使用它。当然,您必须对 emailRead.php 中的内容进行安全检查

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-12
    • 2016-08-03
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 2015-03-16
    相关资源
    最近更新 更多