Este artículo es antiguo. Deberías de echar un vistazo a la versión nueva (reescrita por completo).

De acuerdo, podría decir que la base está terminada. Ahora por fin puedo hacer una pequeña ronda sobre cómo crear unas encuestas personalizadas en un servidor con PHP y MySQL. Este tutorial fue a petición de Andrés Ardila, y tengo que reconocer que ha costado lo suyo ponerlo a funcionar.

Por ahora la base está, y ahora os explicaré la teoría y os dejaré un pequeño ejemplo funcionando. Como siempre podéis esperar a que acabe para descargarlo todo.

Lo que falta

  • Panel de administración: Por ahora no se pueden editar las encuestas (así que hay que ser cuidadoso al crearlas), y hay que andar subiendo y bajando el archivo para crearlas (ya que no hay contraseñas). Tengo que escoger un encriptado (md5, sha1, etc), y crear una tabla para usuarios, o símplemente editando vuestro archivo PHP.
  • Listado de encuestas (por ahora sólo se pueden mostrar de una en una).
  • AJAX: La interfaz por ahora es muy básica (sólo HTML + PHP), pero tengo pensado introducir algo de AJAX para facilitar el voto, la vista de los resultados, etc.
  • CSS: Por ahora solo he usado una pizca de CSS (la de las barras de los resultados, y algo de estilos generales). Queda mucho que mejorar en ese aspecto.

No es poco lo que hay que mejorar ;).

Organización de las tablas

Tendremos tres tablas en nuestra base de datos, que crearemos automáticamente.

Siento poner los nombres en inglés, pero es la costumbre (las funciones de todos los lenguajes están en inglés, y se te pega).

  • polls (la tabla principal): Tendremos poll_id (la id), poll_question (la pregunta), various_answers (si soporta varias respuestas simultáneas), y finalmente total_votes (la cuenta de los votos totales).
  • polls_answers (donde tendremos las respuestas), con: answer_id (por ahora inútil, ya que accederemos a ellas gracias a otro campo, anuque nunca viene mal crear una referencia global), answer_text (el texto de la respuesta), answer_votes (los votos a esa respuesta), poll_id (la id de la encuesta a la que pertenece), y poll_answer_id (una id de la respuesta relativa a la pregunta)
  • polls_ip (aquí almacenaremos la IP de los votantes y la id de la encuesta votada). Sólo dos campos: ip y poll_id

Ejemplo

Aquí tenéis el ejemplo de encuesta. (Sí, la pregunta no es nada original, y las dos respuestas de “fatal” las hice yo de prueba antes de consuguir evitar el doble voto ;))

9 pensamientos en “Creando un sistema de encuestas con PHP y MySQL[1]: El proyecto

  1. Bitacoras.com
  2. Creando un sistema de encuestas desde cero con PHP[2]: La conexión | Emilio Cobos-CMC
  3. Las encuestas con PHP, reescritas por completo | Emilio Cobos-CMC
  4. Imagen de Jorge lujanJorge lujan el dijo:

    Un cordial saludo.
    Me parece muy interesante tu sistema de encuestas, pero no lo he podido intalar me sale este error, espero me puedas ayudar!!!!

    Strict Standards: Non-static method DB::config() should not be called statically in C:\xampp\htdocs\polls-master\polls-master\app\config.php on line 16

    Strict Standards: Non-static method DB::config() should not be called statically in C:\xampp\htdocs\polls-master\polls-master\app\config.php on line 17

    Strict Standards: Non-static method DB::config() should not be called statically in C:\xampp\htdocs\polls-master\polls-master\app\config.php on line 18

    Strict Standards: Non-static method DB::config() should not be called statically in C:\xampp\htdocs\polls-master\polls-master\app\config.php on line 19

    Strict Standards: Non-static method DB::connect() should not be called statically in C:\xampp\htdocs\polls-master\polls-master\app\config.php on line 20

    Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method Home_Controller::action_index() should not be called statically in C:\xampp\htdocs\polls-master\polls-master\app\main.php on line 97

    Strict Standards: Non-static method DBObject::all() should not be called statically in C:\xampp\htdocs\polls-master\polls-master\controllers\home.php on line 4

    Strict Standards: Non-static method DB::select() should not be called statically in C:\xampp\htdocs\polls-master\polls-master\app\DBObject.php on line 89

    Strict Standards: Non-static method View::make() should not be called statically in C:\xampp\htdocs\polls-master\polls-master\controllers\home.php on line 5

    Strict Standards: Non-static method Url::current() should not be called statically in C:\xampp\htdocs\polls-master\polls-master\views\header.php on line 3

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Puedes usar las siguientes etiquetas y atributos HTML:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre data-language=""> <ul> <ol> <li>
Para poner código usa <pre data-language="[lenguaje]"><code>[código]</code></pre>, y no olvides escapar el HTMl.