【问题标题】:User reporting Library用户报告库
【发布时间】:2009-09-02 20:46:21
【问题描述】:

我想构建(或查找)一个 php 报告库,我可以使用它来允许我的用户将任何类型的内容报告为不良内容。实际上,如果他们可以将内容报告为好(我猜这意味着评级系统),那就更好了。所以如果有人知道这样的图书馆,我很想听听。

无论如何,这就是我想象的数据库工作方式,我想知道这听起来是否正确。

  1. ID - 行的 ID
  2. USER_ID - 用户投票/报告的 ID
  3. ITEM_ID - 所报告项目的唯一表行 ID(帖子、其他用户、链接等...)
  4. TYPE - 与此相关的表的名称(帖子、用户、链接等...)
  5. DATE - 报告的日期时间
  6. 值 - 我猜这可能是赞成票或反对票

通过包含 [TYPE] 列,我可以在我网站上的所有内容类型中使用此投票系统,而不仅仅是一种(如论坛帖子)。通过存储 user_id,我可以确保每个用户的每个项目只有一个投票/报告。

【问题讨论】:

  • 这是一件足够简单、足够特定于应用程序的事情,它可能更容易自己构建。除非您使用流行的框架或平台,在这种情况下,模块可能存在,但您需要指定您正在使用的框架/平台

标签: php reporting


【解决方案1】:

好吧,我照我说的做了。弗兰克是对的,这并不难。以下是其他人想要在支持 AR 样式 DB 调用(如 CodeIgniter 或 MicroMVC)的 MVC 上使用它的代码:

/*
 * Multi-table user voting model
 */
class votes extends model {

    public static $table = 'votes';


    function cast( $user_id = NULL, $item_id = NULL, $type = NULL, $vote = TRUE) {

        $where = array(
            'user_id'   => $user_id,
            'item_id'   => $item_id,
            'type'      => $type
        );

        //Try to fetch this row
        $row = $this->db->get_where(self::$table, $where );

        //Look for an existing vote row
        if( $row && ! empty($row[0]) ) {

            //Fetch row
            $row = $row[0];

            //If they already voted this way... then we're done!
            if( $row->vote == $vote) {
                return;
            }

            //Else update the row to the new vote
            $row->vote = $vote;
            $row->date = convert_time(time());

            $this->db->update( self::$table, $row, array('id' => $row->id) );

            return;
        }

        //Else create a new vote for this item
        $row = array(
            'user_id'   => $user_id,
            'item_id'   => $item_id,
            'type'      => $type,
            'date'      => convert_time(time()),
            'vote'      => $vote,
        );

        $this->db->insert( self::$table, $row);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多