Ver Mensaje Individual
  #22 (permalink)  
Antiguo 09/04/2010, 14:32
djrony
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Un solo voto por usuario

Una duda me surge vas a permitir votar solo a usuarios registrados por lo que veo no?

Usando la tabla que has creado

CREATE TABLE `votos` (
`id` int(11) NOT NULL auto_increment,
`id_user` int(11) NOT NULL,
`not_ID` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;

Seria "sencillo" hacer la limitacion para un usuario un voto por noticia para ello

agregas a esta tabla modificala:

CREATE TABLE `votos` (
`id` int(11) NOT NULL auto_increment,
`id_user` int(11) NOT NULL,
`not_ID` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE (id_user,not_id);
) ENGINE=MyISAM;


Luego cuando el usuario quiera votar me imagino que harás lo siguiente no?:
INSERT INTO votos VALUES($id_usuario,$id_noticia);

lanza la query con php y si te devuelve error mira el numero del error.

Error: 1062 SQLSTATE: 23000 (ER_DUP_ENTRY)

si el numero del error es 1062 eso implica que la restriccion de UNIQUE no se ha cumplido por lo tanto el usuario ya ha votado antes y con esto ya tendrias limitacion.

Con esta restriccion estas limitando a nivel de base de datos el "un voto por usuario y noticia".

Por cierto este codigo:

Código PHP:
$num_rows mysql_num_rows($result);
if(
$num_rows == 0){
//vota
}
else{
//ya voto

esta mal ya que esa query de contar siempre te va a devolver una fila, si quieres que el código que te proponen funcione no ejecutes:
Código PHP:
SELECT COUNT(*) as Voto FROM votos WHERE id_user $id_del_usuario AND not_ID $id_de_la_noticia 
ejecuta:
Código PHP:
SELECT * as Voto FROM votos WHERE id_user $id_del_usuario AND not_ID $id_de_la_noticia 
Entonces si que te funcionara correctamente la logica esta de //vota o //ya voto.

Espero no haberme extendido demasiado

Saludos.