Votos con CodeIgniter
Hacer un sistema de votos para articulos no es tan dificil, y creo que mucho mas sencillo si usamos CodeIgniter:
Cosas que haremos: tener un articulo y en este articulo tener un formulario con radio button para valorar el articulo.
Veamos:
Nota: no vamos a profundizar sobre que cosas es CodeIgniter, este tutorial es para personas que por lo menos lo ha utilizado una vez y todo le ha salido bien.
Controlador de articulos:
class Articulos extends Controller{
function Articulos(){ // constructor
parent::Controller();
}
function index(){
// index de nuestra seccion articulos
// aqui no me toca hacer nada, este tutorial no es para mostrar un listado de articulo en nuestro index
}
function articulo($id=0){
$data['titulo'] = 'Valoracion via votos';
$data['query'] = $this->model_articulos->get($id);
$data['votos'] = $this->model_votos->get($id);
$this->load->vars($data);
$this->load->view('articulo_view.php');
}
function votar(){
$articulo = $this->input->post('articulo_id');
$voto = $this->input->post('voto');
$votar = $this->model_votos->votar($articulo,$voto);
if($votar){
redirect('/articulos/articulo/'.$articulo);
}
}
}
Eso es todo para nuestro controlador
Modelo de Votos:
class Model_votos extends Model{
const TABLA = "votos";
function Model_votos(){ // constructor
parent::Model();
}
function votar($articulo,$voto){
$query = $this->db->get_where(self::TABLA,array('articulo_id'=>$articulo));
if($query->num_rows()>0){
$this->db->where('articulo_id',$articulo);
$this->db->set('votos','votos + 1', FALSE);
$this->db->set('puntos','puntos + '.$voto, FALSE);
$this->db->update(self::TABLA, $this);
}else{
$this->articulo_id = $articulo;
$this->votos = 1;
$this->puntos = $voto;
$this->db->insert(self::TABLA, $this);
}
}
function get($id){
$query = $this->db->get_where(self::TABLA,array('articulo_id'=>$id));
return $query->row();
}
}
Eso es todo para nuestro modelo de votos
Modelo de Articulos:
class Model_articulos extends Model{
const TABLA = "articulos";
function Model_articulos(){ // constructor
parent::Model();
}
function get($id){
$query = $this->db->get_where(self::TABLA,array('id'=>$id));
return $query->row();
}
}
Eso es todo para nuestro modelo de articulos
Vista para mostrar la data:
< ?php echo $titulo;?>
< ?php echo $query->titulo;?>
< ?php echo $query->contenido;?>
Valoración: (< ?php echo @round($votos->puntos/$votos->votos,2);?>), Votos: (< ?php echo $votos->votos;?>)
Eso es todo para nuestra vista (articulo_view.php)
Y nuestra tabla mysql esta compuesta por los siguientes campos
CREATE TABLE `votos` (
`articulo_id` int(11) NOT NULL default '0',
`votos` int(11) NOT NULL default '0',
`puntos` int(11) NOT NULL default '0'
) TYPE=MyISAM;
Espero les ayude, todo esto debe funcionar, recuerde que el formulario se envia inmediatamente se hace click en el radio button via onClick
| Print article | This entry was posted by Asinox on December 11, 2009 at 6:48 pm, and is filed under Ayuda, Code, CodeIgniter, Desarrollo web, Msyql, PHP, frameworks. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |





