sistema de votos en PHP

Hola!

Primero que nada, en tu tabla de votos debe existir un identificador para quién haya votado. En el modelo relacional, un voto puede tener un sólo dueño para una determinada categoría (o, en tu caso, noticia), por lo que la taba votos debería tener dos cosas (aparte de la información del voto):

- Un registro de la categoría del voto y
- Un registro del votante.

Un modelo válido podría ser este:

CREATE TABLE usuario (
  id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  nombre VARCHAR(50) NOT NULL,
  apellido VARCHAR(50) NOT NULL,
  password BINARY(128) NOT NULL,
  cuenta_activa BIT(1) NOT NULL DEFAULT '0'
);

CREATE TABLE noticia (
  id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  titulo VARCHAR(100) NOT NULL,
  contenido TEXT NOT NULL,
  creador_id BIGINT NOT NULL,
  CONSTRAINT noticia_usuario_fk FOREIGN KEY (creador_id) REFERENCES usuario (id),
  CONSTRAINT noticia_titulo_un UNIQUE (titulo)
);

CREATE TABLE voto (
  id BIGINT NOT NULL PRIMARY KEY,
  valoracion INT DEFAULT '0',
  noticia_id BIGINT NOT NULL,
  votante_id BIGINT NOT NULL,
  CONSTRAINT voto_noticia_fk FOREIGN KEY (noticia_id) REFERENCES noticia (id),
  CONSTRAINT voto_votante_fk FOREIGN KEY (votante_id) REFERENCES usuario (id)
);

Sin tablas como estas no tendrás cómo saber quién votó por qué cosa (noticia).
No hace falta crear un sistema de logueo para un simple voto, xd. Lo único que tengo que hacer es añadire un
`used_ips` longtext NOT NULL,
Mi tabla es esta:
CREATE TABLE IF NOT EXISTS `votacion` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Votos` int(11) DEFAULT '0',
  `Noticia` text CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;

INSERT INTO `votacion` (`Id`, `Votos`, `Noticia`) VALUES
(1, 49, 'Ridley Scott desciende a los infiernos con un reparto de lujo'),
(2, 17, 'Una familia de Tokio: El cuento de nunca acabar'),
(3, 29, 'El director Colin Trevorrow revela nuevos detalles de Jurassic World'),
(4, 20, 'Bienvenidos al fin del mundo: Juerga hasta el fin'),
(5, 25, 'De tal padre, tal hijo: De palos y astillas');

Lo que necesito es saber como insertar la ip del votador en la tabla y que quede registrada para que no pueda volver a votar.
¿Y que pasa si el usuario sabe cambiar la IP? La IP se puede obtener así:

$ip = $_SERVER['REMOTE_ADDR'];
Yo lo que tengo es un cookie en Ajax que lo que hace es evitar que vuelvan a votar hasta pasado un tiempo, el código es este:

$votado=$db->query("UPDATE posts SET ".$voto."=".$voto."+1 WHERE id='$id'");
		setcookie("votado_".$id, 1, time()+7200);
		echo ($numero+1);

Evidentemente es tan sencillo como borrar el historial de navegación y las cookis y podrás votar de nuevo, pero eso todo el mundo no lo sabe. jejejejej Las personas votan y cuando lo vuelven a intentar les sale el mensajito: ¡ya has votado! y así no hacen trampas. Tengo que decir de mi honradez que este código no le creado yo, ya que yo no se programar ni con Ajax, ni con JavaScript, ni con Jquery. Me lo ha creado un desarrollador y yo solo lo he tenido que adaptarle a mi tabla en la base datos y crear un juego de registros para imprimir el voto en pantalla, aunque para eso ya hay que saber algo jeje. Por cierto si alguien conoce cursos buenos online de Ajax, JavaScript y Jquery por favor dejarme el link. Me da igual que sean de pago, de hecho los de pago suelen ser los mejores, saludos.

Este es el enlace de los votos, solo funciona el último porque es el de prueba

http://xxxnostars.com/votacion/voto.php

Este es basado en estrellas

http://xxxnostars.com/estrellas/star.php