标记阅读文章

时间:2011-12-18 16:32:09

标签: php javascript jquery codeigniter

我有一个显示网站外部链接的应用,它们都是文章。这些文章在数据库中。我目前正在研究一种解决方案,通过一个简单的标签,如“新”等,向用户显示下次访问时的新文章 我有一个带有cols ID,user_id,article_id,read的表。
我已经开始研究模型和控制器,但基本上我需要在用户单击该文章时将文章ID和用户ID传递给jquery函数,以便可以将数据插入到显示文章已被读取的数据中。因此,不再为该文章显示“新”标签。

这是最好的方法吗?我需要一些关于如何处理jquery方面的帮助。

谢谢。

4 个答案:

答案 0 :(得分:1)

如果您使用javascript,它将无法用于没有javascript的人。我使用了像?out=*articleId*这样的外部链接。然后你可以保存userX点击了linkX。然后重定向用户宽度header("Location: *realURlFromDB*");

答案 1 :(得分:1)

基于sawny所说的,你不需要另一个控制器。只需在控制器中定义一个函数来处理这个

baseurl.com/controller/function/linkID

在该功能中,您需要确保将Artilce ID和用户ID存储在单独的表中。

表名:article_views 字段:userID,articleID

通过这种方式,您可以加入此表格,以帮助您显示每个用户的新文章。

存储完成后,您可以将用户重定向到实际文章。

答案 2 :(得分:0)

我使用JOIN参数左边完成了它。这也会返回空值。因此,我可以检查空值并显示NEW标记。

答案 3 :(得分:0)

<?php

//query that fetch unread articles
$query = "
    SELECT 
        articles.* 
    FROM 
        articles
    LEFT JOIN
        read_articles
            ON articles.id != read_articles.article_id
    WHERE
        read_articles.user_id = 1
";

/**

Test db data
CREATE TABLE IF NOT EXISTS `articles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

INSERT INTO `articles` (`id`, `title`) VALUES
(1, 'Article 1'),
(2, 'Article 2');

-- --------------------------------------------------------

CREATE TABLE IF NOT EXISTS `read_articles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `article_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

INSERT INTO `read_articles` (`id`, `article_id`, `user_id`) VALUES
(1, 1, 1);