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