Encuesta con PHP y MySQL

24 Enero, 2008 por Mr. FotoPex deja una respuesta »

 

 

Sencilla encuesta utilizando MySQL para almacenar las votaciones de los usuarios con la opción de votar una o varias veces.

Primero debemos de crear la tabla donde almacenaremos las encuestas y sus respuestas.

MySQL:
  1. CREATE TABLE `encuestas` (
  2.   `id_encuesta` varchar(5) NOT NULL DEFAULT">default '',
  3.   `pregunta` varchar(150) DEFAULT">default NULL,
  4.   `opciones` varchar(254) DEFAULT">default NULL,
  5.   `id_opcion` varchar(5) NOT NULL DEFAULT">default '',
  6.   `ip` varchar(15) NOT NULL DEFAULT">default '',
  7.   `fecha` DATE">date DEFAULT">default NULL
  8. ) ;

Ahora debemos de crear un archivo de texto e ingresar el siguiente código.

PHP:
  1. <?php
  2. /*
  3. Funcion para elaborar Encuestas
  4. www.empresario.com.mx
  5. */
  6. function show_encuesta($id_ENCUESTA,$proteccion_IP,$pregunta,$opciones){
  7.     // Colocamos las preguntas y opciones
  8.     $opciones_para_grabar='';
  9.     foreach($opciones as $key => $value){
  10.         $opciones_para_grabar.=" ".$key ."=". $value .", "
  11.     }
  12.  
  13.     $encuesta[$id_ENCUESTA]={FNAMEL}">array($pregunta,$opciones);
  14.     //
  15.     if (!{FNAMEL}">array_key_exists($id_ENCUESTA,$encuesta)) return ('El id de la encuesta no se encuentra disponible');
  16.     else
  17.         $pregunta_de_la_encuesta = {FNAMEL}">array_shift($encuesta[$id_ENCUESTA]);
  18.         $opciones_de_la_encuesta = {FNAMEL}">array_pop ($encuesta[$id_ENCUESTA]);
  19.     if({FNAMEL}">isset($_POST[opcion]))
  20.     {
  21.         $ip=$_SERVER['REMOTE_ADDR'];
  22.         $fecha_votacion = {FNAMEL}">date('Y-m-d'); //2006-05-31
  23.        
  24.         /*
  25.         Validamos el voto por ip y fecha de hoy.
  26.         Aqu&iacute; se puede hacer la modificaci&oacute;n en caso
  27.         de que el participante no pueda votar mas de una vez por dia.
  28.         */
  29.         $ssqls={FNAMEL}">mysql_query('SELECT * FROM encuestas WHERE ip="'.$ip.'"')or {FNAMEL}">die({FNAMEL}">mysql_error());
  30.  
  31.         if($proteccion_IP && {FNAMEL}">mysql_num_rows($ssqls)>=1){
  32.             $html_encuesta='<font color="#FF0000" face="tahoma" size="2">Usted ya hab&iacute;a votado. Gracias</font>';
  33.         }else{
  34.             $ip=$_SERVER['REMOTE_ADDR'];
  35.             $html_encuesta='<font color="#FF0000" face="tahoma" size="2">Gracias por su voto</font>';
  36.             {FNAMEL}">mysql_query('INSERT INTO encuestas VALUES
  37.             ('.$id_ENCUESTA.',"'.$pregunta.'","'.$opciones_para_grabar.'",'.$_POST[opcion].',"'.$ip.'","'.$fecha_votacion.'")')or {FNAMEL}">die({FNAMEL}">mysql_error());
  38.         }      
  39.     }
  40.  
  41. $ssql={FNAMEL}">mysql_query('SELECT * FROM encuestas WHERE id_encuesta="'.$id_ENCUESTA.'"')or {FNAMEL}">die({FNAMEL}">mysql_error());
  42. $total_votos={FNAMEL}">mysql_num_rows($ssql);
  43.  
  44. // mostramos los resultados.
  45. $html_encuesta.='<a name="encuesta" id="encuesta"></a><form action="'.$_SERVER[REQUEST_URI].'#encuesta" method="POST">';
  46. $html_encuesta.= '<b style="color:#055A91">'.$pregunta_de_la_encuesta.'</b>';
  47. ///
  48. $html_encuesta.='<br /><br />';
  49. $votos_total=0;
  50. foreach($opciones_de_la_encuesta as $KEY => $OPCION)
  51. {
  52.     $ssql={FNAMEL}">mysql_query('SELECT * FROM encuestas WHERE id_encuesta="'.$id_ENCUESTA.'" and id_opcion="'.$KEY.'"')or {FNAMEL}">die({FNAMEL}">mysql_error());
  53.     $votos_x_opcion={FNAMEL}">mysql_num_rows($ssql);
  54.     $votos_total+=$votos_x_opcion;
  55.     $estimar_porcentaje= @{FNAMEL}">round($votos_x_opcion*100/$total_votos,1)
  56.     $html_encuesta.= '<input name="opcion" type="radio" value="'.$KEY.'"';
  57.     if($_POST[opcion]==$KEY && {FNAMEL}">isset($_POST[opcion])){$html_encuesta.='checked'; }
  58.         $html_encuesta.= '>'.$OPCION.' '.$estimar_porcentaje.'% <br /><strong>Votos: '.$votos_x_opcion.'</strong>
  59.     <hr align="left" color="#055A91" align="left" size=2 width='. $estimar_porcentaje . '>';
  60. }
  61. $html_encuesta.='<br /><input type="submit" value="Votar">';
  62. $html_encuesta.='</form>';
  63. return '<b>'.$votos_total.'</b>&nbsp;votos hasta hoy<br />'.$html_encuesta;
  64. }
  65. ?>

Ahora necesitas colocar el siguiente codigo donde quieras que se muestre la encuesta y sus resultados

PHP:
  1. <?php
  2. /*
  3. Funcion para elaborar Encuestas
  4. www.empresario.com.mx
  5. */
  6. // Configuramos la conexi&oacute;n
  7. $db={FNAMEL}">mysql_connect('localhost', 'root', 'lamisma');
  8. {FNAMEL}">mysql_select_db("empresario_datos_k", $db);
  9.  
  10. // Configura tu pregunta
  11. $pregunta="¿Ya ingresaste tu comentario ?";
  12.  
  13. //Las opciones de la pregunta
  14. $opciones={FNAMEL}">array(
  15. 0=>"Primer Respuesta",
  16. 1=>"Segunda Respuesta",
  17. 2=>"tercer Respuesta"
  18. );
  19.  
  20. // Cambia a true si quieres que solamente vote una vez
  21. $votar_una_vez=false;
  22. $id_asignado=1; //el id que correspondera a la pregunta en la base de datos para las votaciones
  23.  
  24. include('encuesta.php');
  25. echo show_encuesta($id_asignado,$votar_una_vez,$pregunta,$opciones);
  26. echo $consulta_desde;
  27. ?>

floppy.jpg
Clic para descargar el archivo
Publicidad

1 comentario

  1. Jose dice:

    Bien bien Muchas gracias Exelente aporte 1 Abrazo

Deja un comentario