我想建立(或找到)一个php报告库,我可以用它来允许我的用户报告任何类型的内容都是坏的。实际上,如果他们能够将内容报告为好(我认为这意味着评级系统)会更好。所以,如果有人知道这样的图书馆,我很乐意听到它。
无论如何,这就是我想象数据库工作的方式,我想知道这听起来是否正确。
通过包含[TYPE]列,我可以在我网站上的所有内容类型中使用此投票系统,而不仅仅是一个(如论坛帖子)。通过存储user_id,我可以确保每个用户每个项目只能投一个投票/报告。
答案 0 :(得分: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);
}
}