Discussion:
[OT- PHP/MySQL ] Como hacer un cuestionario...
(demasiado antiguo para responder)
Daniel Naranjo
2006-08-14 16:26:13 UTC
Permalink
Hola a todos, estoy "tratando" de hacer un cuestionario de hasta 100 preguntas, siempre las respuestas serian las mismas (Excelente = 5, Regular = 3, Malo=1)...

He pensado usar MySQL, ya pase por el XML, TXT, etc., pero no tengo una idea de como manejar la cantidad de peguntas de forma indivivual, ya que cada pregunta debe generar estadisticas, por ejemplo:

1. ¿Como es el ambiente de trabajo de tu empresa? 5 | 4 | 3 | 2 | 1

2. ¿Como es el trato que recibes de tus superiores? 5 | 4 | 3 | 2 | 1
3. ¿.................? 5 | 4 | 3 | 2 | 1
4. ¿.................? 5 | 4 | 3 | 2 | 1

No necesito una solución, sino una clara idea de como hacerlo, tengo un bloqueo mental inmenso... y el tiempo corre, el cliente espera jejejeje

Salu2

Daniel Naranjo
Lo Último Group, C.A.
(58+) 416 2917532
(58+) 414 7962406
(58+) 295 2630298 (Fax)
www.loultimoenlaweb.com
www.loultimoenhosting.com
Julio B.
2006-08-14 17:05:05 UTC
Permalink
Es muy sencillo y se puede hacer de varias maneras. En primer lugar tienes que tener una tabla con las preguntas. Cada pregunta debe tener un identificador único. Hasta aquí bien, ésta va a ser la tabla común que van a tener cualquier solución que implementes.

Necesitarás una tabla con los usuarios que han realizado el cuestionario. Si no la necesitas no la creas y punto. Estos datos también pueden estar en la tabla con las soluciones.

Llegamos a la tabla más problemática, la de los resultados. Aquí es donde más opciones vas a tener y deberás elegir la que más se adapte a tus necesidades y a los requerimientos de tu cliente.

Puedes crear una tabla con tantos campos como preguntas tiene el cuestionario. El problema lo puedes tener a la hora de crear la tabla, ya que es bastante laborioso para 100 preguntas; menos mal que siempre queda el copy/paste en la sentencia SQL a la hora de crearla.

Con esto ya podrías empezar la parte de programación, que es bastante sencilla. El formulario con las cuestiones es fácil crearlo "al vuelo" con PHP extrayendo los datos de las preguntas desde MySQL. Si usas DW puedes usar la opción de tabla dinámica para crearte el cuestionario. Como son muchas preguntas es conveniente que pagines éstas en grupos de 25 cuestiones.

Los resultados que se vayan enviando durante la realización del cuestionadio (si es que paginas) los vas guardando en un array, este lo pasas a una variable de sesión para poder recuperarlos posteriormente. Cuando ya tengas todos los datos solo tienes que recuperrar las respuestas del array e insertarlas en la base de datos.

Saludos,

Julio Barroso
"Daniel Naranjo" <***@NOSPAMloultimoenlaweb.com> escribió en el mensaje news:ebq89i$3d$***@forums.macromedia.com...
Hola a todos, estoy "tratando" de hacer un cuestionario de hasta 100 preguntas, siempre las respuestas serian las mismas (Excelente = 5, Regular = 3, Malo=1)...

He pensado usar MySQL, ya pase por el XML, TXT, etc., pero no tengo una idea de como manejar la cantidad de peguntas de forma indivivual, ya que cada pregunta debe generar estadisticas, por ejemplo:

1. ¿Como es el ambiente de trabajo de tu empresa? 5 | 4 | 3 | 2 | 1

2. ¿Como es el trato que recibes de tus superiores? 5 | 4 | 3 | 2 | 1
3. ¿.................? 5 | 4 | 3 | 2 | 1
4. ¿.................? 5 | 4 | 3 | 2 | 1

No necesito una solución, sino una clara idea de como hacerlo, tengo un bloqueo mental inmenso... y el tiempo corre, el cliente espera jejejeje

Salu2

Daniel Naranjo
Lo Último Group, C.A.
(58+) 416 2917532
(58+) 414 7962406
(58+) 295 2630298 (Fax)
www.loultimoenlaweb.com
www.loultimoenhosting.com
Daniel Naranjo
2006-08-14 17:23:38 UTC
Permalink
Gracias por la idea, Julio...

Exactamente el problema lo tengo es en las respuestas... voy a intentarlo con las variables de session, el resto de lo que me comentas... ya lo tengo desarrollado... me "tranque" en la parte final del asunto..

Gracias, estare abierto a otras sugerencias...
Daniel Naranjo
Lo Último Group, C.A.
(58+) 416 2917532
(58+) 414 7962406
(58+) 295 2630298 (Fax)
www.loultimoenlaweb.com
www.loultimoenhosting.com

"Julio B." <***@hotmail.com> escribió en el mensaje news:ebqadb$2op$***@forums.macromedia.com...
Es muy sencillo y se puede hacer de varias maneras. En primer lugar tienes que tener una tabla con las preguntas. Cada pregunta debe tener un identificador único. Hasta aquí bien, ésta va a ser la tabla común que van a tener cualquier solución que implementes.

Necesitarás una tabla con los usuarios que han realizado el cuestionario. Si no la necesitas no la creas y punto. Estos datos también pueden estar en la tabla con las soluciones.

Llegamos a la tabla más problemática, la de los resultados. Aquí es donde más opciones vas a tener y deberás elegir la que más se adapte a tus necesidades y a los requerimientos de tu cliente.

Puedes crear una tabla con tantos campos como preguntas tiene el cuestionario. El problema lo puedes tener a la hora de crear la tabla, ya que es bastante laborioso para 100 preguntas; menos mal que siempre queda el copy/paste en la sentencia SQL a la hora de crearla.

Con esto ya podrías empezar la parte de programación, que es bastante sencilla. El formulario con las cuestiones es fácil crearlo "al vuelo" con PHP extrayendo los datos de las preguntas desde MySQL. Si usas DW puedes usar la opción de tabla dinámica para crearte el cuestionario. Como son muchas preguntas es conveniente que pagines éstas en grupos de 25 cuestiones.

Los resultados que se vayan enviando durante la realización del cuestionadio (si es que paginas) los vas guardando en un array, este lo pasas a una variable de sesión para poder recuperarlos posteriormente. Cuando ya tengas todos los datos solo tienes que recuperrar las respuestas del array e insertarlas en la base de datos.

Saludos,

Julio Barroso
"Daniel Naranjo" <***@NOSPAMloultimoenlaweb.com> escribió en el mensaje news:ebq89i$3d$***@forums.macromedia.com...
Hola a todos, estoy "tratando" de hacer un cuestionario de hasta 100 preguntas, siempre las respuestas serian las mismas (Excelente = 5, Regular = 3, Malo=1)...

He pensado usar MySQL, ya pase por el XML, TXT, etc., pero no tengo una idea de como manejar la cantidad de peguntas de forma indivivual, ya que cada pregunta debe generar estadisticas, por ejemplo:

1. ¿Como es el ambiente de trabajo de tu empresa? 5 | 4 | 3 | 2 | 1

2. ¿Como es el trato que recibes de tus superiores? 5 | 4 | 3 | 2 | 1
3. ¿.................? 5 | 4 | 3 | 2 | 1
4. ¿.................? 5 | 4 | 3 | 2 | 1

No necesito una solución, sino una clara idea de como hacerlo, tengo un bloqueo mental inmenso... y el tiempo corre, el cliente espera jejejeje

Salu2

Daniel Naranjo
Lo Último Group, C.A.
(58+) 416 2917532
(58+) 414 7962406
(58+) 295 2630298 (Fax)
www.loultimoenlaweb.com
www.loultimoenhosting.com
Carlos Velasco
2006-08-14 19:13:01 UTC
Permalink
Siento discrepar del amigo JB, pero la respuesta que da... NO ES a mi entender VÁLIDA...

A la hora de programar siempre es aconsejable pensar en el futuro... Tener una tabla con tantos campos como respuestas no es operativo, ya que si mañana cambia el número de respuestas... Hay que rehacerlo todo.

Es mucho más sencillo y manejable con tres tablas:

CUESTIONES (ID,PREGUNTA, ... si necesitas cualquier cosa genérica sobre las preguntas).

Ahí podemos mantener tantas preguntas como queramos.

CLIENTES(ID,NOMBRE,... y lo que queramos almacenar sobre dicho cliente).

Tantos clientes como queramos.

CUESTIONARIO(NUM_CUESTIONARIO, ID_CLIENTE, NUM_PREGUNTA,ID_PREGUNTA, VALORACIÓN)

Donde los campos claves son NUM,ID_CLIENTE, NUM_PREGUNTA e ID_PREGUNTA.

De esta forma, para el mismo Cliente, podemos tener N cuestionarios de M preguntas valoradas.

Referenciando con ID_CLIENTE a la tabla de CLIENTES, y con ID_PREGUNTA a la tabla de Cuestiones.

Un saludo.

Carlos.
"Daniel Naranjo" <***@NOSPAMloultimoenlaweb.com> escribió en el mensaje news:ebqbl7$48q$***@forums.macromedia.com...
Gracias por la idea, Julio...

Exactamente el problema lo tengo es en las respuestas... voy a intentarlo con las variables de session, el resto de lo que me comentas... ya lo tengo desarrollado... me "tranque" en la parte final del asunto..

Gracias, estare abierto a otras sugerencias...
Daniel Naranjo
Lo Último Group, C.A.
(58+) 416 2917532
(58+) 414 7962406
(58+) 295 2630298 (Fax)
www.loultimoenlaweb.com
www.loultimoenhosting.com

"Julio B." <***@hotmail.com> escribió en el mensaje news:ebqadb$2op$***@forums.macromedia.com...
Es muy sencillo y se puede hacer de varias maneras. En primer lugar tienes que tener una tabla con las preguntas. Cada pregunta debe tener un identificador único. Hasta aquí bien, ésta va a ser la tabla común que van a tener cualquier solución que implementes.

Necesitarás una tabla con los usuarios que han realizado el cuestionario. Si no la necesitas no la creas y punto. Estos datos también pueden estar en la tabla con las soluciones.

Llegamos a la tabla más problemática, la de los resultados. Aquí es donde más opciones vas a tener y deberás elegir la que más se adapte a tus necesidades y a los requerimientos de tu cliente.

Puedes crear una tabla con tantos campos como preguntas tiene el cuestionario. El problema lo puedes tener a la hora de crear la tabla, ya que es bastante laborioso para 100 preguntas; menos mal que siempre queda el copy/paste en la sentencia SQL a la hora de crearla.

Con esto ya podrías empezar la parte de programación, que es bastante sencilla. El formulario con las cuestiones es fácil crearlo "al vuelo" con PHP extrayendo los datos de las preguntas desde MySQL. Si usas DW puedes usar la opción de tabla dinámica para crearte el cuestionario. Como son muchas preguntas es conveniente que pagines éstas en grupos de 25 cuestiones.

Los resultados que se vayan enviando durante la realización del cuestionadio (si es que paginas) los vas guardando en un array, este lo pasas a una variable de sesión para poder recuperarlos posteriormente. Cuando ya tengas todos los datos solo tienes que recuperrar las respuestas del array e insertarlas en la base de datos.

Saludos,

Julio Barroso
"Daniel Naranjo" <***@NOSPAMloultimoenlaweb.com> escribió en el mensaje news:ebq89i$3d$***@forums.macromedia.com...
Hola a todos, estoy "tratando" de hacer un cuestionario de hasta 100 preguntas, siempre las respuestas serian las mismas (Excelente = 5, Regular = 3, Malo=1)...

He pensado usar MySQL, ya pase por el XML, TXT, etc., pero no tengo una idea de como manejar la cantidad de peguntas de forma indivivual, ya que cada pregunta debe generar estadisticas, por ejemplo:

1. ¿Como es el ambiente de trabajo de tu empresa? 5 | 4 | 3 | 2 | 1

2. ¿Como es el trato que recibes de tus superiores? 5 | 4 | 3 | 2 | 1
3. ¿.................? 5 | 4 | 3 | 2 | 1
4. ¿.................? 5 | 4 | 3 | 2 | 1

No necesito una solución, sino una clara idea de como hacerlo, tengo un bloqueo mental inmenso... y el tiempo corre, el cliente espera jejejeje

Salu2

Daniel Naranjo
Lo Último Group, C.A.
(58+) 416 2917532
(58+) 414 7962406
(58+) 295 2630298 (Fax)
www.loultimoenlaweb.com
www.loultimoenhosting.com
Daniel Naranjo
2006-08-14 19:32:19 UTC
Permalink
Gracias Carlos, comence haciendolo asi... pero me ahogue en un vaso de agua y cambie por completo el codigo y la tabla... pero tienes mucha razón... y me distes mejor perspectiva... vamos a ver... ya tengo al cliente casi encima jejejeje
Salu2

Daniel Naranjo
Lo Último Group, C.A.
(58+) 416 2917532
(58+) 414 7962406
(58+) 295 2630298 (Fax)
www.loultimoenlaweb.com
www.loultimoenhosting.com

"Carlos Velasco" <***@servicioscvs.com> escribió en el mensaje news:ebqi08$bur$***@forums.macromedia.com...
Julio B.
2006-08-14 20:53:32 UTC
Permalink
Yo no he dicho en ningún momento que fuera una solución optina, ni siquiera válida. Sin saber qué es lo que el cliente quiere hacer exactamente con el cuestionario es complicado acertar a dar una opción válida.

Puestos a afinar habría que saber si el cliente necesita guardar algun dato de quién ha realizado la encuesta. Con esto nos estaríamos ahorrando (o no) la tabla de los clientes.

Tampoco se sabe si las preguntas del cuestionario van a variar con el tiempo o no. Es posible que el cuestonario no se vaya a volver a usar una vez realizado y extraidos los resultados. O si van a haber más de un cuestionario funcionando a la vez.

Como es un formulario de opinión suponemos que solo interesa el resultado global (la media en este caso) de las respuestas y que como mínimo se necesitan guardar los datos del usuario que va a realizar el cuestionario, y que el cuestionario es único (si el cliente quiere hacer un nuevo cuestionario el año que viene, que pida presupuesto y pase por caja). Con esto solo se necesitan dos tablas:

CLIENTES (ID, NOMBRE, RESPUESTAS, ...)

donde en el campo RESPUESTAS se almacenan todas las respuestas que ha dado el usuario serializando el array que las contiene. Más adelante, si fuera necesario recuperar las respuestas, no sería muy complicado acceder a ellas.

Luego nos quedaría la tabla con las preguntas del cuestionario:

CUESTIONES (ID, PREGUNTA, MEDIA)

donde el campo MEDIA sería actualizado, una vez se han insertado los datos del cliente y las respuestas de éste en la tabla CLIENTES, haciendo uso tanto del valor que ya contiene el campo MEDIA, como del valor que le ha signado el usuario y el número de ID del cliente que se acaba de insertar y que nos lo da (si no recuerdo mal) mysql_insert_id().

Con esto conseguimos optimizar el acceso a la base de datos a la hora de recuperar la valoración media de cada cuestión. Si el cuestionario lo responden 1000 personar x 100 preguntas = 100.000 filas en la tabla, y no es lo mismo acceder a un campo en concreto de entre 100 filas de una tabla que tener que esperar a que MySQL recorra las 100.000 filas para darnos el valor medio de cada cuestión.

Si se necesitara tener más cuestionarios pues habría que añadir un nuevo campo a la tabla CUESTIONARIO que estubiera referenciado al ID de una nueva tabla con los datos básicos de éste:

CUESTIONARIO (ID, NOMBRECUESTIONARIO, ...)

También habría que modificar la tabla CLIENTES para añadir un campo que nos almacenara a qué cuestionario pertenecen las respuestas. O incluso se podría separar esta tabla en dos, una con los datos básicos del cliente y otra referenciada a ésta con las respuestas y el número del cuestionario.

Las opciones a la hora del diseño de la base de datos son múltiples dependiendo de qué requerimientos haga el cliente. Y con lo que ha escrito Daniel, o lo que yo he podido entender, no es necesario enfrascarse en la programación de un sistema completo de cuestionarios, con infinidad de campos referenciados entre tablas si lo que realmente necesita el cliente en un único cuestionario de hasta 100 preguntas. Incluso si no necesita guardar los datos de los usuarios ni las respuestas que dan, solo con añadir a la tabla CUESTIONES un nuevo campo para almacenar en número de veces que se ha respondido a la pregunta (para poder hacer la media) sería más que suficiente; con esa única tabla nos bastaría para extraer el resultado del cuestionadio (que al final es lo que cuenta).

Saludos,

Julio Barroso
Daniel Naranjo
2006-08-14 21:54:38 UTC
Permalink
Amigos gracias a ambos por sus ideas... luego de varios dias dandole golpes de pecho, he logrado que funcione...

Carlos, era la mejor forma.... Gracias hermano!

Julio B., gracias por la idea... pero es un sistema completo, en que el cliente va a poder hacer sus propios cuestionarios sin necesidad de llamarme...además, pueda crear varios cuestionarios por cliente y modificarlos..
Salu2 y nuevamente agradecido... por las ideas y por ayudarme a desbloquearme..

Daniel Naranjo
Lo Último Group, C.A.
(58+) 416 2917532
(58+) 414 7962406
(58+) 295 2630298 (Fax)
www.loultimoenlaweb.com
www.loultimoenhosting.com

"Daniel Naranjo" <***@NOSPAMloultimoenlaweb.com> escribió en el mensaje news:ebq89i$3d$***@forums.macromedia.com...
Hola a todos, estoy "tratando" de hacer un cuestionario de hasta 100 preguntas, siempre las respuestas serian las mismas (Excelente = 5, Regular = 3, Malo=1)...

He pensado usar MySQL, ya pase por el XML, TXT, etc., pero no tengo una idea de como manejar la cantidad de peguntas de forma indivivual, ya que cada pregunta debe generar estadisticas, por ejemplo:

1. ¿Como es el ambiente de trabajo de tu empresa? 5 | 4 | 3 | 2 | 1

2. ¿Como es el trato que recibes de tus superiores? 5 | 4 | 3 | 2 | 1
3. ¿.................? 5 | 4 | 3 | 2 | 1
4. ¿.................? 5 | 4 | 3 | 2 | 1

No necesito una solución, sino una clara idea de como hacerlo, tengo un bloqueo mental inmenso... y el tiempo corre, el cliente espera jejejeje

Salu2

Daniel Naranjo
Lo Último Group, C.A.
(58+) 416 2917532
(58+) 414 7962406
(58+) 295 2630298 (Fax)
www.loultimoenlaweb.com
www.loultimoenhosting.com
Julio B.
2006-08-14 23:39:33 UTC
Permalink
Para hacer un sistema completo de cuestionarios ya tienes varios gratuitos que funcionan bastante bien y tienen multitud de opciones que los hacen especialmente útiles: control del tiempo (hora a la que se inicia, termina, fechas en las que estará activo el cuestionario, etc.), generación de cuestionarios al azar especificando las preguntas y el número de éstas que se usarán, diferentes tipos de respuestas( verdadero/falso, 1/2/3/.../10, varias respuestas por pregunta, etc.), sistema integrado de autentificación de usuarios, sistema de estadísticas de los cuestionarios, generación de informes en pdf, ... Con muy poco trabajo hubieras podido adaptar un sistema completo a tus necesidades ya que un par de los que hace tiempo probé eran totalmente personalizables con CSS y se podía integran en cualquier web sin muchos problemas.

Saludos,

Julio Barroso
"Daniel Naranjo" <***@NOSPAMloultimoenlaweb.com> escribió en el mensaje news:ebqrhb$n2l$***@forums.macromedia.com...
Amigos gracias a ambos por sus ideas... luego de varios dias dandole golpes de pecho, he logrado que funcione...

Carlos, era la mejor forma.... Gracias hermano!

Julio B., gracias por la idea... pero es un sistema completo, en que el cliente va a poder hacer sus propios cuestionarios sin necesidad de llamarme...además, pueda crear varios cuestionarios por cliente y modificarlos..
Salu2 y nuevamente agradecido... por las ideas y por ayudarme a desbloquearme..

Daniel Naranjo
Lo Último Group, C.A.
(58+) 416 2917532
(58+) 414 7962406
(58+) 295 2630298 (Fax)
www.loultimoenlaweb.com
www.loultimoenhosting.com

"Daniel Naranjo" <***@NOSPAMloultimoenlaweb.com> escribió en el mensaje news:ebq89i$3d$***@forums.macromedia.com...
Hola a todos, estoy "tratando" de hacer un cuestionario de hasta 100 preguntas, siempre las respuestas serian las mismas (Excelente = 5, Regular = 3, Malo=1)...

He pensado usar MySQL, ya pase por el XML, TXT, etc., pero no tengo una idea de como manejar la cantidad de peguntas de forma indivivual, ya que cada pregunta debe generar estadisticas, por ejemplo:

1. ¿Como es el ambiente de trabajo de tu empresa? 5 | 4 | 3 | 2 | 1

2. ¿Como es el trato que recibes de tus superiores? 5 | 4 | 3 | 2 | 1
3. ¿.................? 5 | 4 | 3 | 2 | 1
4. ¿.................? 5 | 4 | 3 | 2 | 1

No necesito una solución, sino una clara idea de como hacerlo, tengo un bloqueo mental inmenso... y el tiempo corre, el cliente espera jejejeje

Salu2

Daniel Naranjo
Lo Último Group, C.A.
(58+) 416 2917532
(58+) 414 7962406
(58+) 295 2630298 (Fax)
www.loultimoenlaweb.com
www.loultimoenhosting.com

Loading...