我想创建一个用户历史记录功能,允许向用户显示他们所做的事情。 例如:对广告发表评论,发布广告,投放广告等等。
我该怎么做?
我在考虑...... 在我的网站中,当他们登录时,它会存储他们的user_id($ _SESSION ['user_id'])
- 所以我猜每当用户发布广告时(postad.php), 评论(comment.php),我愿意 存储在数据库表中 “userhistory”他们所做的是基于什么 无论他们的user_id是什么 启用。
- 当他们发表评论时,我将user_id存储在评论dbc表中,所以 我也会把它存放在 “userhistory”表。
- 然后我会查询dbc中用户的所有行 显示它
醇>
我可以做出任何步骤/改进吗? :)
答案 0 :(得分:2)
查看媒体wiki架构的统计信息和日志记录部分。你可以实现类似的东西。
http://upload.wikimedia.org/wikipedia/commons/4/41/Mediawiki-database-schema.png
答案 1 :(得分:0)
同样,你可以做的是拥有基于mySQL的日志记录,即每个页面都会记录在mySQL数据库中,该数据库跟踪所请求的IP,用户ID,日期时间和页面。
然后,对于您查看历史记录的页面,您可以拥有这样的脚本。这只是伪代码,因此请将其视为面值。
<?php
$actions = array('comment.php' => 'posted a comment', "postedad.php" => "posted an ad");
$query = mysql_query("SELECT * FROM logHits JOIN users ON users.id = logHits.userid WHERE loghits.userid = $userid");
while ($row = mysql_fetch_array($query)) {
echo $row['username']." ".$actions[$row['pagename']."<br />";
}
?>
同样,这只是伪代码,你肯定可以通过它改进概念。你可以使用printf(); / sprintf();例如,动作文本中的“评论”超链接到实际评论。
有很多方法可以解决这个问题。这可能不是最好的方法。
每当人们执行您指定的操作时,您也可以只对userHistory这样的表执行插入查询。这可能是最好的方法。您可以使用id,userid,actiontype,actionid
等字段actiontype将是“comment”左右,actionid将是已发布条目的id。然后,您可以轻松地将actiontypes映射到评论页面(传递actionid)以查看实际发布的评论。