像在电子邮件中一样实现读/未读

时间:2009-11-17 13:57:17

标签: php jquery mysql

我正在尝试实现类似于电子邮件中的已读/未读的内容。如何使用jquery,php和mysql这样做。 我想要分步做什么:

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

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

问候。

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

如果它是一个制作网站,你可能会想要提供一个没有javascript的解决方案,所以如果你在点击上更改页面,那么你根本不需要涉及到javascript。在数据库中创建一个默认为0的“读取”布尔字段。当您单击以查看记录时,请将记录ID保留在URL中,并在单击后通过php在该页面中将“read”更改为1。

如果你想在点击后留在同一个页面,那么你需要得到javascript,正如Franz上面提到的那样,但是以渐进增强的方式做到这一点很好,添加了javascript价值,以及无论如何都可以使用的基本功能。

答案 2 :(得分:0)

也许我可以更好地格式化这个,但这应该适用于您正在寻找的概念。

循环电子邮件结果集。

<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”; else $ css =“email_unread”;

使用jQuery执行Dirty Work。

<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 var,修剪email_id_部分以获取数字,然后在更新查询中使用它。当然,您必须对即将发布的电子邮件进行安全检查。阅读电子邮件地址。