2011-12-18 428 views
0

我有一个应用程序显示外部链接到一个网站,他们都是文章。这些文章在数据库中。我目前正在寻找一种解决方案,通过像“NEW”等简单标签向用户展示下一次访问的新文章。
我制作了一个带有上传ID,user_id,article_id,read的表格。
我对模型和控制器开始工作,但基本上我需要当用户点击该文章,这样的数据可以被插入到显示该文章已被数据到文章的ID和用户ID传递给jQuery函数读。因此该文章不再显示“NEW”标签。标记阅读文章

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

谢谢。

+0

我已经完成了它使用参数左JOIN。这也会返回空值。因此,我可以检查一个空值并显示NEW标签。 – viperfx 2011-12-18 18:26:10

回答

1

基于sawny说过的话,你不需要另一个控制器。只需在您的控制器来处理这个

baseurl.com/controller/function/linkID

在功能定义功能你要确保你存储Artilce ID和用户ID在一个单独的表。

表名:article_views 字段:用户ID和articleID

这样,您就可以加入这个表可以帮助您显示哪些文章INFACT新为每个用户。

一旦存储完毕,您可以将用户重定向到实际文章。

+0

谢谢,那是我目前面临的问题。我不知道如何显示或检查文章是“新”还是阅读,因为如果表是空的,连接将不会显示任何内容。因此我不知道如何对每篇文章进行检查。 – viperfx 2011-12-18 17:29:42

+0

将读取的文章作为数组传递给视图。然后在打印出来的时候,在if语句中使用PHP函数in_array($ article,$ articles_array)。如果它不在该数组中,则将其显示为“新”。如果它显示为“读”。 – 2011-12-18 22:00:12

1

如果您使用JavaScript,它将不适用于没有JavaScript的人。我使用了一个链接,如?out=*articleId*。然后你可以节省下来,userX点击了linkX。然后你重定向用户宽度header("Location: *realURlFromDB*");

+0

啊哇我没有想到,这种方式我实际上可以记录许多其他的东西,如点击。谢谢。为了这个工作,我需要另一个控制器来处理这个,然后重定向? – viperfx 2011-12-18 16:41:48

+0

@viperfx我是MVC的新手,所以我不确定。但是我在我的控制器'logger'中完成了'out'功能。这样我就可以在同一个文件中获得所有的日志功能。 – Sawny 2011-12-18 16:47:33

0

我已经完成了使用带有参数的JOIN。这也会返回空值。因此,我可以检查一个空值并显示NEW标签。

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);