2011-12-18 277 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);