Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿como lo deveria hacer?

Estas en el tema de ¿como lo deveria hacer? en el foro de Mysql en Foros del Web. Quiero crear un Ranks de webs,e pensado en crear 2 tablas, asi Tabla webs: +-----------------------+ |ID|Imagen|Enlace|descripcion| +-----------------------+ Tabla votos +---------+ |ID|IP|id_web| +---------+ Luego con php ...
  #1 (permalink)  
Antiguo 26/11/2009, 01:25
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
¿como lo deveria hacer?

Quiero crear un Ranks de webs,e pensado en crear 2 tablas, asi

Tabla webs:
+-----------------------+
|ID|Imagen|Enlace|descripcion|
+-----------------------+

Tabla votos
+---------+
|ID|IP|id_web|
+---------+

Luego con php voy contando en la tabla votos la cantidad de id_webs que hay, vamos creo que eso es simple.. lo sabre hacer.
El problema, es que yo quiero que se pueda votar cada 12 horas.. no se como hacerlo.
  #2 (permalink)  
Antiguo 26/11/2009, 03:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ¿como lo deveria hacer?

Tabla votos
+-------------------+
|ID|IP|id_web|FechaYHora|
+-------------------+

Guardando la fecha y la hora del voto podras controlar que una misma IP no pueda votar hasta transcurrido el tiempo que decidas.

Si IP+id_web es clave principal logras que una misma IP no pueda votar mas de una vez por el mismo web.

Pero recuerdas/sabes que hay IP dinámicas, no?... es decir si reinicio mi maquina seguramente tendre una IP distinta y luego los controles anteriores ya no sirven...

Quim
  #3 (permalink)  
Antiguo 26/11/2009, 11:30
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: ¿como lo deveria hacer?

pero que deveria hacer es que no se nada y si, si se que hay IP dinamica de echo aveces e cambiao mi ip para votar en algun sitio, tambien e pensado en crear cookies que se caduquen cada 12 horas pero no se hacerlo xD.
Descriptiva mente ¿como se hace eso? osea, Tienes que darle a X campo X valor y tal.. es que enserio no se nada de SQL cuando uso solo creo campos varchar e int y yasta ya no lo e usado para mas cosas..
  #4 (permalink)  
Antiguo 26/11/2009, 14:03
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: ¿como lo deveria hacer?

que alguien lo borre plis

Última edición por angel1993; 26/11/2009 a las 14:39
  #5 (permalink)  
Antiguo 27/11/2009, 02:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ¿como lo deveria hacer?

Debes crear un campo DATETIME que te guardara el día y la hora en que se vota con el formato YYYY-MM-DD HH:MM:SS.

Antes de permitir que se vote debes buscar la última vez que voto esa ip y si han pasado las 12 horas muestras el formulario de votació y si no un mensaje de aviso.

Código sql:
Ver original
  1. SELECT MAX(fechayhora) FROM votos WHERE ip='WWW.XXX.YYY.ZZZ'

o incluso directamente

Código sql:
Ver original
  1. SELECT TIMESTAMPDIFF(HOUR_MINUTE,NOW(),MAX(fechayhora)) FROM votos WHERE ip='WWW.XXX.YYY.ZZZ'

que ya te dará el tiempo transcurrido desde el último voto.

El script que guarda el voto deberá guardar la fecha y hora leyendo el relog del servidor con la funció NOW().

Código sql:
Ver original
  1. INSERT INTO votos (ip,id_web,fechayhora) VALUES ('WWW.XXX.YYY.ZZZ',999,NOW())

La opción de las cookies no es mala y te ahorras peticiones al servidor.

Quim
  #6 (permalink)  
Antiguo 05/12/2009, 17:15
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: ¿como lo deveria hacer?

en la tabla votos como cuento la cantidad de ID de la web que hay en id_web :S me cuesta..
  #7 (permalink)  
Antiguo 11/12/2009, 07:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ¿como lo deveria hacer?

Código SQL:
Ver original
  1. SELECT id_web, COUNT(*)
  2. FROM votos
  3. GROUP BY id_web;

Quim
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 13:50.