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

Sistema de votaciones.

Estas en el tema de Sistema de votaciones. en el foro de Mysql en Foros del Web. ¡Hola! Mirad, tenía una duda. Hace un tiempo desarrollé un sistema de votaciones para artículos en mi web. Consistía en guardar en un campo de ...
  #1 (permalink)  
Antiguo 18/04/2014, 16:57
 
Fecha de Ingreso: enero-2014
Mensajes: 101
Antigüedad: 10 años, 2 meses
Puntos: 7
Sistema de votaciones.

¡Hola!

Mirad, tenía una duda. Hace un tiempo desarrollé un sistema de votaciones para artículos en mi web. Consistía en guardar en un campo de una tabla de base de datos el id de los usuarios que habían votado una noticia separados por ','. Luego le hacía un split por ',' y así controlaba que los usuarios no fueran capaces de votar dos veces a la misma noticia.

El problema es que ... no creo sea muy 'profesional' esta forma de hacerlo. Me preguntaba si conocéis alguna mejor forma de hacerlo o si hay alguna librería o framework para hacer un sistema de votaciones.

Muchas gracias, compañeros.
  #2 (permalink)  
Antiguo 18/04/2014, 17:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sistema de votaciones.

Cita:
El problema es que ... no creo sea muy 'profesional' esta forma de hacerlo. Me preguntaba si conocéis alguna mejor forma de hacerlo o si hay alguna librería o framework para hacer un sistema de votaciones.
Librerías o frameworks son temas de programación, por consecuencia OFF-TOPIC de este foro.
Sobre esos temas te recomiendo preguntar en el foro del lenguaje queuses.
A nivel de base de datos la "solución" que usaste es un error total ("espanto" sería mas adecuado), porque estás hablando de campos multivaluados, cosa prohibida en los foros.
En base de datos sería simplemente una tabla de votos, con al menos tres campos: el username o nickname, la fecha del voto con su hora, y el ID del tema de la votación. Con eso en general alcanza, aunque si tienes votaciones por más de un concepto (bueno, malo, excelente, regular, por ejemplo) podría requerir alguno campo más.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 19/04/2014, 03:46
 
Fecha de Ingreso: enero-2014
Mensajes: 101
Antigüedad: 10 años, 2 meses
Puntos: 7
Respuesta: Sistema de votaciones.

Vale... no hacía falta lo de 'espanto' xD. Al contrario que muchos programadores de aquí... no he recibido formación 'formal' (valga la redundancia), de ahí que tenga quizás dudas que puedan ser tildadas de básicas, o código chapucero. jejeje

Según puedo entender de tu mensaje, recomiendas que utilice una tabla nueva en vez de incluirlo en la tabla de los post o noticias. A priori parece una solución mucho más 'limpia'.

Te agradezco tu aportación. No doy el tema por solucionado, a ver si alguien tiene algo más que aportar. Lo daré por solucionado en unos días si nadie contesta.

Saludos y gracias una vez más.
  #4 (permalink)  
Antiguo 19/04/2014, 04:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Sistema de votaciones.

mdedcab,
un consejo añadido a los que te ha dado gnzsoloyo:
si no quieres que alguien repita un voto de un usuario sobre una noticia, te bastará con crear un index compuesto de dos campos (id de noticia + id de usuario) de tipo unique. De esa manera, aunque alguien vote varias veces la misma noticia, no se guardará, aunque sí si vota otra, claro. Cosa distinta es que no quieras que vote más que una noticia: entonces el índice único sería sobre el campo id de usuario.

Etiquetas: campo, sistema, tabla, usuarios
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 18:52.