加入MySQL中的表来存储已查看的文章ID
题
我有一个joomla网站,我正在开发,当涉及到Mysql时,我是新手。我需要能够跟踪用户已观看的篇文章,然后能够在页面前端显示所需文章的总数(例如,如果用户已查看3篇文章,则它应该只是回显值'3'到前端)。
我还希望能够存储文章ID和别名,并能够在需要时检索该数据。这个想法是,任何特定的用户都能看到他们已查看的文章和可能甚至能够返回和查看这些文章(因为它们在观看后不再显示)。
我没有最新的思想,即将到达桌面来存储此数据的位置,以及如何将其加入当前用户。即使它只是指向良好的教程或资源,也会非常感谢任何帮助。
解决方案
有三种方法,我相信:
在用户表中的新列中存储所有已浏览的文章ID
您可以将列添加到用户表中以存储已查看的文章。您可以将文章ID存储为逗号分隔值。每次查看新文章时,您都可以追加新的文章ID。在前端,您可以使用SELECT语句检索此字符串并将其解析为获取单个ID。
此方法可能不实用,诸如Joomla等CMS作为向系统表添加到系统表的CMS询问麻烦。
新表,每个用户一行
您创建一个新的双列表,一列具有用户标识,另一列具有逗号分隔的已查看文章列表。现有用户表和新表之间会有1-0个关系。
简单连接将允许您检索与关联用户关联的已观看的文章。
新表,每个用户的一行/文章组合
您可以创建一个新的二列历史表,存储用户和一个观看的文章ID。如果用户已查看十种文章,则将有十行。
检索给定用户的已观看的文章需要一些工作,因为您必须为该用户提供所有行并迭代它们。
编辑 - 示例代码:
<?php
$config['db'] = array (
'host' => '',
'username' => '',
'password' => '',
'dbname' => ''
);
$db = new PDO('mysql:host=' . $config['db']['host'] . ';dbname='.$config['db']['dbname'],$config['db']['username'],$config['db']['password']);
$query = $db->query("SELECT user_id, article_id FROM viewed_articles WHERE user_id = 1234");
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
echo '<pre>',print_r($rows,true),'</pre>';
?>
.
您将在$ config array中放入MySQL数据库和凭据。
其他提示
一个好方法是使用模块来显示数据和插件来存储它。
以用于插件开发的Joomla文档来跟踪用户。和寻找内容插件。
此插件应至少存储,至少,表中的用户标识符和文章标识符(调用IT articleviews
),专门为此插件创建。
构建模块检查 Joomla模块开发。在此模块上,您将从articleviews
表中加载包含插件的数据。记得通过用户标识符索引表,否则它将杀死您的Web响应,因为数据增长。
编辑:文章标识符也应该是索引的一部分。