如何创建用户历史记录?

时间:2010-05-13 01:24:27

标签: php mysql

我想创建一个用户历史记录功能,允许向用户显示他们所做的事情。 例如:对广告发表评论,发布广告,投放广告等等。

我该怎么做?

  

我在考虑......   在我的网站中,当他们登录时,它会存储他们的user_id($ _SESSION ['user_id'])

     
      
  1. 所以我猜每当用户发布广告时(postad.php),   评论(comment.php),我愿意   存储在数据库表中   “userhistory”他们所做的是基于什么   无论他们的user_id是什么   启用。
  2.   
  3. 当他们发表评论时,我将user_id存储在评论dbc表中,所以   我也会把它存放在   “userhistory”表。
  4.   
  5. 然后我会查询dbc中用户的所有行   显示它
  6.   

我可以做出任何步骤/改进吗? :)

2 个答案:

答案 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)以查看实际发布的评论。