He creado un sistema de encuestas mediante Flash y php. Las características que tiene es que utiliza SharedObject para guardar la votación y así que solamente se pueda votar una vez por persona. Y la otra característica es que la encuesta tiene fecha límite, así que una vez pasada ese día que le asignemos no se podrá votar más.

La encuesta quedaría de esta manera:

This movie requires Flash Player 8

En este post voy a poner cómo puedes usarlo en tu blog.

Las tablas necesarias para la encuesta son:

MySQL:
  1. --
  2. -- Estructura de tabla para la tabla `encuesta_opciones`
  3. --
  4. CREATE TABLE `encuesta_opciones` (
  5. `id` BIGINT(11) NOT NULL AUTO_INCREMENT,
  6. `id_encuesta` BIGINT(11) NOT NULL DEFAULT '0',
  7. `opcion` TEXT NOT NULL,
  8. `votos` BIGINT(11) NOT NULL DEFAULT '0',
  9. PRIMARY KEY  (`id`)
  10. ) TYPE=MyISAM AUTO_INCREMENT=1 ;
  11.  
  12. --
  13. -- Estructura de tabla para la tabla `encuesta_preguntas`
  14. --
  15.  
  16. CREATE TABLE `encuesta_preguntas` (
  17. `id` BIGINT(9) NOT NULL AUTO_INCREMENT,
  18. `titulo` TEXT NOT NULL,
  19. `fecha` BIGINT(8) NOT NULL DEFAULT '0',
  20. PRIMARY KEY  (`id`)
  21. ) TYPE=MyISAM AUTO_INCREMENT=1 ;

La tabla encuesta_preguntas será la que contenga el título de la encuesta y la fecha límite.

La tabla encuesta_opciones contendrá las opciones de cada encuesta (relacionadas por id_encuesta) y los votos de cada opción.

La encuesta en sí necesita los archivos:

  • encuesta.swf
  • encuesta.php
  • accion.php

El archivo encuesta.php es el que llamaremos desde el swf y a partir de la id que le pasemos nos montará un xml con los datos de la encuesta.

La estructura del archivo "encuesta.php" es la siguiente :

PHP:
  1. //Guardar como encuesta.php
  2. //Variables de la base de datos
  3. $host="xxxxxxx";
  4. $user="xxxxxxxxx";
  5. $passwd="xxxxxxxxxxx";
  6. $bdname="xxxxxxxx";
  7.  
  8. $link=mysql_connect($host,$user,$passwd);
  9. $base=mysql_select_db($bdname,$link);
  10.  
  11. $link=mysql_connect($host,$user,$passwd);
  12. $base=mysql_select_db($bdname,$link);
  13.  
  14. $xml="";
  15. $sql=mysql_query("select * from encuesta_preguntas where id='".$_GET['id']."'");
  16. $encuesta= mysql_fetch_array($sql);
  17.  
  18. $xml.="";
  19. $xml.="".$encuesta['titulo']."";
  20. $sql=mysql_query("select * from encuesta_opciones where id_encuesta='".$_GET['id']."'");
  21.  
  22. $xml.="";
  23. while($preguntas= mysql_fetch_array($sql)){
  24. $xml.="<!--[CDATA[".$preguntas['opcion']-->";
  25. }
  26. $xml.="";
  27. $xml.="";
  28. echo $xml;

El archivo accion.php es el que llamaremos desde el swf cuando se hace una votación. La estructura de este archivo es bastante sencilla:

PHP:
  1. //Guardar como accion.php
  2. //Variables de la base de datos
  3. $host="xxxxxxx";
  4. $user="xxxxxxxxx";
  5. $passwd="xxxxxxxxxxx";
  6. $bdname="xxxxxxxx";
  7.  
  8. $link=mysql_connect($host,$user,$passwd);
  9. $base=mysql_select_db($bdname,$link);
  10.  
  11. mysql_query("update `encuesta_opciones` set `votos`=`votos`+1 where `id`=".$_POST['opcion']);
  12. mysql_close($link);

Ahora solamente nos falta hacer la llamada a nuestro swf. Mediante flashvars le tenemos que indicar la id de la encuesta que queremos que salga.

Un ejemplo de cómo sería el archivo html es el siguiente:

HTML:
  1. <script src="AC_RunActiveContent.js" type="text/javascript"></script>
  2.  
  3. <script type="text/javascript"><!--
  4. AC_FL_RunContent( \'codebase\',\'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0\',\'width\',\'300\',\'height\',\'300\',\'src\',\'encuesta\',\'flashvars\',\'id_encuesta=14\',\'quality\',\'high\',\'pluginspage\',\'http://www.macromedia.com/go/getflashplayer\',\'movie\',\'encuesta\'); //end AC code
  5. // --></script>

Para insertar el flash hemos usado el código de Javascript AC_RunActiveContent.

Con todo esto ya podríamos usar la encuesta, sería algo engorroso crearlas directamente en mysql así que por eso he creado un pequeño gestor para poder crearlas y controlarlas desde el escritorio.

El gestor lo he creado mediante Flash y MDM Zinc. Para poder usarlo, tu servidor debe poder aceptar conexiones externas. El propio gestor es muy intuitivo y además lleva todos los archivos necesarios para poder implementar las encuestas. También dispones de unas instrucciones que espero sean bastante claras.

Archivos del ejemplo.

Actualización

Me comentan que el gestor no funciona en windows vista, sientiendolo mucho no voy a instalarme Vista hasta que pueda aguantar sin el, así que no puedo probarlo en ese sistema operativo.

Tags: , , ,