Foros del Web » Programando para Internet » PHP »

Sistema de Votos por IP

Estas en el tema de Sistema de Votos por IP en el foro de PHP en Foros del Web. Buenas!!! Estoy desarrollando un sistema de votos a post por IP, pero estoy teniendo unos problemas que no se me ocurre como resolver. Paso a ...
  #1 (permalink)  
Antiguo 13/07/2012, 08:34
 
Fecha de Ingreso: junio-2010
Mensajes: 153
Antigüedad: 14 años, 5 meses
Puntos: 4
Sistema de Votos por IP

Buenas!!!

Estoy desarrollando un sistema de votos a post por IP, pero estoy teniendo unos problemas que no se me ocurre como resolver.

Paso a explicar el ambiente que tengo:

En una base de datos tengo una tabla donde guardo los post (id_post, titulo, texto, cantidad_votos) y en otra tabla tengo los votos con la respectiva ip del visitante que voto (id_post_votado, ip_del_visitante).

Lo estoy haciendo en AJAX, PHP y MySQL.

El problema es que nose como mostrar los post votados. Por ejemplo:

Una persona entra a la web y vota un post de la lista de post. En ese momento, el post queda marcado como votado. Pero si la persona actualiza la pagina, el post vuelve a quedar desmarcado.
Yo quiero que esa persona siempre vea los post que voto, como votados.

Se entiende?

Cualquier cosa, consultenme. Gracias de ante mano.
  #2 (permalink)  
Antiguo 13/07/2012, 10:43
 
Fecha de Ingreso: mayo-2012
Mensajes: 10
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Sistema de Votos por IP

Pues haces una consulta sql al cargar la página detectando la IP y luego un if que si ya ha votado pues que ya le salga votado.
  #3 (permalink)  
Antiguo 13/07/2012, 11:39
 
Fecha de Ingreso: junio-2010
Mensajes: 153
Antigüedad: 14 años, 5 meses
Puntos: 4
Respuesta: Sistema de Votos por IP

No es tan simple, porque esa consulta me va a estar devolviendo un array con las ips de los usuarios que votaron X post. Y ya con un foreach estoy mostrando los post (su titulo, texto, etc) y como tendria que hacer para mostrar los post con posibilidad de voto o no, segun el array?
  #4 (permalink)  
Antiguo 13/07/2012, 12:16
 
Fecha de Ingreso: mayo-2012
Mensajes: 76
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Sistema de Votos por IP

si no lo llegas a conseguir o desistes puedes usar esto http://www.quizsnack.com/ tambien son por ip, incluso puede ser un cuestionario o una pregunta simple, echale un ojo
  #5 (permalink)  
Antiguo 13/07/2012, 15:02
 
Fecha de Ingreso: junio-2010
Mensajes: 153
Antigüedad: 14 años, 5 meses
Puntos: 4
Respuesta: Sistema de Votos por IP

Muchas gracias Doch, pero no me sirve para lo que quiero hacer. Lo que quiero hacer se parece a los "Me gusta" de facebook. Gracias igualmente.
  #6 (permalink)  
Antiguo 13/07/2012, 15:27
 
Fecha de Ingreso: enero-2011
Ubicación: Argentina
Mensajes: 80
Antigüedad: 13 años, 9 meses
Puntos: 12
Respuesta: Sistema de Votos por IP

Mmmh, no me convence tu sistema de votos por IP's ya que hay servicios ISP que utilizan una sola IP para todos sus abonados. Y entonces quedarían fuera de participación muchos posibles usuarios votantes.

Agrego: Yo soy uno de esos usuarios.

Última edición por MaxDgy; 13/07/2012 a las 15:30 Razón: Agregar data
  #7 (permalink)  
Antiguo 13/07/2012, 16:00
Avatar de Nopal_Studio  
Fecha de Ingreso: julio-2012
Ubicación: DF
Mensajes: 42
Antigüedad: 12 años, 4 meses
Puntos: 10
Información Respuesta: Sistema de Votos por IP

Hola, bueno haber debes tomar en cuenta algo, si lo haces por ip, 2 usuarios que comparten la misma computadora no podrian votar, ya que la IP seria la misma yo te recomiendo que lo hagas por la BD de usuarios, es decir algo asi como esto:

BD Post
-id_post
-id_usuario
-titulo
-descripcion
-estatus (puede estar "true","false" osea activo, no activo)
-fecha_creacion
-fecha_actualizacion

BD Votos
-id_votos
-id_post
-id_usuario
-voto (supongamos que es: "0 -Me gusta", " 1 -No me gusta")

BD usuarios
id_usuario
nombre
apellido
estatus (puede estar "true", "false" oseaseee activo, no activo)

Para sacar los post
Código PHP:
Ver original
  1. sqlPost = "SELECT a.*, CONCAT(b.nombre, " ",b.apellido) AS creado
  2. FROM post a, usuarios b
  3. WHERE estatus = true AND a.id_usuario = b.id_usuario";
Te mostará (ejemplo):

id_post: 1
titulo: Test de titulo
descripcion: bla, bla, bla, bla, bla
creado: Juanito Perez

Pero para mostrar los votos deberas hacer:

Código PHP:
Ver original
  1. sqlVotos = "SELECT * FROM votos WHERE id_post = $id_post";
cuando metas en el while para sacar la información del sql, deberas condicionar los votos por "Me gusta" "No me gusta), es decir

Código PHP:
Ver original
  1. $megusta = 0; //votos me gusta
  2. $nogusta = 0; //votos no me gusta
  3. $votosraros = 0;
  4. $resultadoVotos = mysql_query($sqlVotos) or die(mysql_error());
  5. while($votos = mysql_fetch_assoc($resultadoVotos))
  6. {
  7.   if($votos['voto'] == 0)
  8.    {
  9.      $megusta ++;
  10.    }
  11.   else if ($votos['votos'] == 1)
  12.   {
  13.     $nogusta ++;
  14.    }
  15.   else
  16.   {
  17.    $votosraros ++; // Ojos si tienes por lo menos 1 voto raro algun funciona mal en el sistema
  18.   }
  19. echo "Me gusta: "$megusta;
  20. echo "No me gusta: "$nogusta;
  21. if($votos['id_usuario] == $id_usuario)
  22. {
  23.  echo "Ya votaste muchas gracias";
  24. }
  25. else
  26. {
  27. echo 'Te gustaria votar: <a href="vota.php?idusuario='.$id_usuario.'&idpost='.$id_post.'>vota aqui</a>';
  28. }
  29. }

Se pueden agregar muchas otras cosas, pero en fin...

Saludos, espero y te sirva. Bye bye

Última edición por Nopal_Studio; 13/07/2012 a las 16:31 Razón: error de dedo en mi codigo

Etiquetas: ip, mysql, sistema, tabla, votos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:21.