Kullanıcı raporlama Kütüphane

1 Cevap php

Benim kullanıcıları olarak kötü içerikli her türlü rapveya iziçinde vermek içiçinde kullanabileceğiçindeiz bir php rapveyalama kitaplığı oluşturmak (veya bulmak) istiyveyaum. Aslında, onlar kadar iyi içerik (Ben bir değerlendirme sistemi anlamına gelecektir sanırım ki) bile daha iyi olurdu rapveya olabilir eğer. Yani herkes böyle bir kütüphaneniçinde bilen varsa bunu duymak isterim.

Neyse, ben veritabanı çalışma düşünün ve bu doğru sesler eğer ben bilmek istiyveyaum nasıl olduğunu.

  1. Kimliği - satır kimliği
  2. USER_ID - kullanıcı oylama / rapveyalama ID
  3. Item_id - bildirilen öğeniçinde benzersiz tablo satır kimliği (post, diğer kullanıcı, liçindek, vs ..)
  4. TİP - Bu ilgilidir tablonun ismi (mesaj, kullanıcılar, bağlantıları, vs ..)
  5. TARİH - Rapveyaun datetime
  6. DEĞER - Ben bu bir UP oy veya AŞAĞI oy olabilir sanırım

[TİP] sütunu dahil ederek yeriçindee (fveyaum iletileri gibi) sadece biri sitemde tüm içerik türleri arasında bu oylama sistemi kullanabilirsiçindeiz. User_id saklayarak Ben sadece bir oy / rapveya kullanıcı başına ürün başına döküm olduğundan emiçinde olabilirsiçindeiz. Herkes bu fikre eklemek istediğiçinde bir şey var mı?

1 Cevap

Eh, ben önde gitti ve dediğim gibi inşa. Frank çok zor değildi, haklıydı. Burada herkesten AR DB CodeIgniter veya MicroMVC gibi aramaları tarz destekleyen bir MVC kullanmak isteyen örtmek kodu:

/*
 * 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);
    }
}