Sistema de encuestas. Base de datos a utilizar

  • 29 de agosto de 2003
  • Valoración:
  • 11 Comentarios
La motivación que nos puede hacer crear un sistema de encuestas y descripción de la base de datos a utilizar.
Algunas veces deseamos saber ciertas preferencias de los visitantes de nuestra pagina o qué opiniones tienen sobre algún tema específico. Una solución a esto es tener un sistema de encuestas, el cual contenga opciones, las cuales podamos votar. Antes de empezar debemos tener en cuenta que nuestro sistema de encuesta debe tener los siguientes requerimientos.
  • Permitir al usuario votar ente un numero de opciones predefinidas
  • Permitir al usuario ver el resultado de las encuestas
  • Permitir al usuario conocer el total de la población evaluada al momento de la lectura de las encuestas
  • Los resultados se mostraran en forma gráfica y numeral
Referencias: Este manual supone que el lector tiene conocimientos, aunque sean básicos, sobre las tecnologías PHP y MySQL. En DesarrolloWeb disponemos del material necesario para disponer de dicha base, principlamente en nuestra sección PHP a fondo, y particularmente en nuestro Manual de PHP y el Taller de MySQL.

Para resolver esto utilizaremos una base de datos con dos tablas, una correspondiente a las opciones de la encuesta y la otra para los datos del administrador.

Nota: La tabla de administración no afecta directamente al funcionamiento del sistema de encuestas. Simplemente serviría para guardar nombres de usuario y clave de las personas que podrían administrar la aplicación de encuestas. No la vamos a ver por ahora, aunque os remitimos al manual de Sistema de autentificación PHP, donde enseñamos a construir un sistema protegido por usuario/clave.

Asímismo, queremos indicar que la creación de la base de datos podría variar dependiendo del desarrollador que la realice, pudiendo haber otras opciones también interesantes para modelizar este sistema de encuestas.


Nuestra primera tabla constará de 11 campos de la siguiente manera.
  1. Un campo para la pregunta de la encuesta
  2. Cuatro posibles respuestas, las cuales serán las que nos interesa saber
  3. Cuatro valores acumulativos del número de votos por cada respuesta
  4. Un campo para el valor total de votos
Hasta ahora sólo hemos indicado 10 campos. El campo 11, que en realidad es el primero, es nuestra clave primaria de la tabla. El script SQL para la creación de la tabla se encuentra a continuación.

DROP TABLE IF EXISTS tblenc;
CREATE TABLE tblenc (
encid int(11) NOT NULL auto_increment,
encprg varchar(50) default NULL,
encrpt1 varchar(50) default NULL,
encrpt2 varchar(50) default NULL,
encrpt3 varchar(50) default NULL,
encrpt4 varchar(50) default NULL,
encval1 int(11) NOT NULL default '0',
encval2 int(11) NOT NULL default '0',
encval3 int(11) NOT NULL default '0',
encval4 int(11) NOT NULL default '0',
enctot int(11) NOT NULL default '0',
PRIMARY KEY (encid)
) TYPE=MyISAM;

Autor

Carlos Eduardo Sotelo Pinto

Pregrado de Ingeniería de Sistemas

Comentarios

rodolfo

04/8/2004
e leido mucho sus manuales y me han servido muchisimo; hasta hoy que me tope con el mysql que son las bases de datos , pero no les entiendo nada, tendran algun manual desde cero para las bases de datos mysql, de antemano gracias.

tony

22/10/2004
Este Script no funciona, da un error de encuetsa.php en linea 18 de
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/encuesta.php on line 18

Luis Felipe Pérez

06/5/2005
Este sistema tiene la limitante de obtener 4 respuestas unicamente, y al parecer es de utilidad agregarle IF's al desplegado de la encuesta por si se tiene menos de 4 opciones. Consideraria mejor hacer 2 tablas relacionadas, una para la pregunta de la encuesta y otra para opciones de voto, así se tendrían ilimitado número de opciones para desplegar. Relacion de uno a muchos ^^

FRANCISCO CASTAN GUTIERREZ

03/4/2007
Concuerdo con Luis Felipe, se podría armar una relacion de 1 a N esto queire decir que 1 pregunta puede tener 1 Selecciones y evitamos la limitante, además de crear una tabla más donde se guarde la id de dicha respuesta :) y sería un tanto más simplista :P

uokesita

27/3/2008
tambien me da el mismo error q de sale a tony porq es esto? q debo hacer?

Carlos Manuel Moreno

17/11/2008
Hola! quisiera que en mi sistema de encuestas el voto fuera reducido al acceso de un usuario o por cada x tiempo mediante la IP o alguna cookie

Guetto

05/5/2010
Para evitar abusos
Para asegurar que no haya algún ocioso que vote muchas veces, puedes implementar cookies en php, indicando la duración de la cookie y condicionando el formulario de votación a que no exista la cookie. Para asegurar todavía más, por los que tuvieran deshabilitadas las cookies, podrías crear una tabla en la que se guardaran las IP y la hora en que se votó desde esa IP y, eventualmente, pasado un tiempo, podrían volver a votar desde esa dirección, sin embargo, por el detalle de las ip de cibercafés u oficinas, o incluso la gestión de los proxies dejarías a alguna gente sin votar. Es solo una idea.

olpo18

22/10/2010
Interesante
Interesante para poder empezar a tener una idea basica para una encuesta

nautahxcstreet

17/12/2010
error
tengo el siguiente error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:wampwwwencuestaencuesta.php on line 25

Yo no soy muy bueno en php y me gustaria que me ayudaran por favor

se los agradesco mucho y gracias por los tutoriales

nautahxcstreet

17/12/2010
jajajaja ya lo solucione
era solo un problema de la primera pagina en la que muestar la pregunta :

en la parte del form

value="<? echo $SQLrow[0]?>">

solo le faltaba el php al value y pplum milagro queda asi:

value="<? echo $SQLrow[0]?>">

luego llene los valores de la base de datos con el navicat y solucionado

creo que es un error muy torpe lo posteo por que note que muchas personas han posteando pidiendo la solucion de este error, bueno esta es mi solucion espero les sirva

adios y gracias a las personas que envia los tutoriales por que nos facilitan la vida alos que no somos muy buenos programando.

adios

topito

05/3/2013
duda
por que se utiliza myIsam y no InnoDB

Compartir