Cómo crear un sistema de encuestas en línea en Internet utilizando Ms Access como base de datos.
Primero pensemos en cómo funciona un sistema de encuestas en línea. Quien desarrolla la aplicación (en este caso nosotros) pone a disposición un tema con la posibilidad de una respuesta cerrada. Esto significa que el visitante tiene la posibilidad de elegir entre las opciones presentes.

Al elegir las respuestas, hay dos posibilidades. El usuario puede votar por una sola opción entre las presentes (como en la imagen del primer paso de este tutorial) o puede elegir varias opciones entre todas las listadas como posibles respuestas del tema publicado. Esta última solución es menos común.

Luego existe otra modalidad de desarrollo del sistema, usada muy rara vez para ser sincero. Esto consiste en ofrecer al usuario la posibilidad de introducir un comentario personal, además de las respuestas múltiples. A menudo puede ser una opción ausente entre las listadas, otras veces una sugerencia o un comentario adicional a la encuesta.

Cualquiera sea la solución que se elija, es importante decidir desde el principio si un solo usuario puede o no expresar más de un voto. La mayoría de los sistemas de encuestas en la Web, los scripts preparados, permiten solo una opinión por usuario. Hay casos, además, en que un visitante puede expresar varios votos solo si elige opciones diferentes.

En caso de que no se imponga ningún tipo de restricción, es decir, que cada usuario pueda expresar tantos votos como desee, el script resultaría de fácil solución. Cada opinión expresada se guarda en la base de datos sin ninguna precaución adicional. No se verifica si el usuario ya ha votado.

Es más complicado elegir si el usuario puede expresar un solo voto. ¿Cómo se verifica este aspecto? Existen varias soluciones. La más utilizada se basa seguramente en la dirección IP del visitante. Con cada voto, registramos junto a la preferencia también el IP. En el siguiente voto, se cruzan las IPs ya presentes con la actual: en caso de presencia, se niega el voto.

La solución del IP tiene la ventaja de ser simple de realizar, pero tiene el defecto de no funcionar si el usuario tiene una IP dinámica, o una red donde cada computadora, hacia el exterior, se identifica con una dirección diferente. En casos similares, al cambiar la IP, no podríamos interceptar el voto ya expresado.

Otra solución plausible es depositar una cookie en la computadora del usuario que vota la encuesta. Es una posibilidad interesante, porque incluso en presencia de un IP dinámico, si el usuario se desconectara y luego volviera a conectarse a Internet, la cookie permanecería. El problema es que las cookies son fácilmente eliminables y no todos los usuarios las aceptan.

La última entre las posibilidades más utilizadas es la inscripción del usuario a una Comunidad en línea, como hay muchas. Una vez inscrito, tal vez entre los varios servicios ofrecidos, el lector podría expresar también su voto en la encuesta, solo después de haberse logueado. Así, por cada voto, resultaría un solo usuario inscrito.

El sistema de verificación del voto a través de la inscripción a una Comunidad es un sistema muy utilizado dentro de esos Foros que permiten la creación de encuestas, también por parte de los mismos usuarios. Un ejemplo es la aplicación en PHP vBulletin (http://www.vbulletin.com), justamente un Foro cuyos inscritos pueden crear encuestas y votar en ellas.

La encuesta que veremos en nuestro ejemplo (de Matteo Stori), permite un solo voto por usuario, basándose en cookies. Esto porque la solución que para nosotros es mejor (la de inscripción) no tiene sentido aplicarla si no se ofrecen otros servicios útiles para motivar al usuario a registrarse. Nadie, o casi nadie, se registraría en un sitio solo para votar una encuesta.

El sistema que utilizaremos se basa en Access como archivo de los datos recopilados. Como siempre, cuando se trata de elegir el soporte para los datos, es importante ponderar las posibles soluciones y elegir la más adecuada a nuestras necesidades. Una encuesta necesita ser agregada, eliminada y modificada rápidamente y sin obstáculos. Access, en este caso, es muy ágil (puede ser removido con un clic).

La estructura de la aplicación que vamos a presentar, se basa en dos tablas. La primera, llamada “nomencuesta” contiene solo y exclusivamente el nombre de la encuesta (este sistema soporta una encuesta a la vez). La segunda, denominada “etiquetas” muestra las diversas opciones entre las cuales elegir su voto.

Veamos ahora la estructura de los datos. En la primera tabla, el campo “nomencuesta” es de tipo Texto de 50 caracteres (pero puede ser extendido si es necesario). En la segunda tabla, el campo “etiqueta” es Texto (50 caracteres), luego “id_etiqueta”, de tipo Contador con Clave primaria. Finalmente “opciones” de tipo Numérico (Entero largo).

Hemos visto los datos presentes y los tipos de datos que nos interesan para crear un sistema simple de encuestas en línea con Microsoft Access. Hay pocos datos presentes, porque en la base de datos debemos guardar exclusivamente el título de la encuesta y las diversas opciones admitidas, entre las cuales luego el usuario deberá elegir.

Para evitar que con cada modificación de la encuesta corresponda una descarga y subida posterior del archivo .mdb, es necesario tener un panel de control en la Web que nos permita modificar el título de la encuesta o las diversas opciones directamente en línea.

¿Qué podemos hacer exactamente desde este panel de control en línea? Lo primero es modificar el título de la encuesta, es decir, la pregunta a la que deberán responder los usuarios. Esta es la primera posibilidad que ofrece el panel, dentro del primer recuadro arriba.

La segunda posibilidad que ofrece el panel de control es agregar nuevas etiquetas, es decir, nuevas opciones entre las cuales los usuarios podrán elegir. Para hacerlo, se especifica el número de nuevas entradas a añadir y luego se modifica el campo creado (por defecto toma un número) con el valor elegido.

Hemos visto que para añadir una opción, se requiere implícitamente saber modificar la nueva entrada creada. Entonces veamos cómo cambiar una de las opciones: se introduce el nuevo texto junto a la opción a modificar y luego se presiona el botón “Enviar” que está al final de la página.

Obviamente, también es posible eliminar una de las opciones presentes en la encuesta. Se hace cuando se ha cometido un error al agregar una opción, o para crear un nuevo cuestionario, se descubre que las opciones presentes son demasiadas. Para eliminar una o más, se marcan las casillas (técnicamente checkboxes) junto a las opciones y luego se presiona el clásico “Enviar” al final de la página.

Una pregunta que muchos lectores podrían hacerse, es la relacionada con la dirección IP. Es decir, ¿por qué guardar ese valor numérico del visitante que comenta? Primero para avisar al comentarista de no abusar del servicio. En segundo lugar, para pasar este valor (junto con la hora y la fecha) a las autoridades competentes en caso de denuncias.

Antes de votar, también se puede comprobar cómo va la encuesta (esta es una opción pública en este sistema, es decir, disponible para todos los visitantes). Será suficiente hacer clic en el enlace “resultados” al final de la página encuesta.asp para tener los datos extraídos directamente de la base de datos.

Una vez expresado su voto, se devolverán los resultados actualizados con el último voto expresado (como en la imagen del paso anterior). Si el voto ya había sido expresado, entonces no se registrará en la base de datos y aparecerá una nueva página con el texto “Ya has votado”.


Sé el primero en comentar