Sistema de encuesta con PHP POO y MySQL
Sistema de encuesta con PHP POO y MySQL. La programación orientada a objetos (POO), se utiliza para diseñar, desarrollar e implementar muchas aplicaciones y/o plataformas web, así como las más completas. En este artículo explicaremos muy a detalle el funcionamiento de este sistema de calificación de encuestas.
He creado un sistema de encuestas para que el usuario vote por sus cursos favoritos. El usuario elegirá su curso favorito usando las opciones de radio del formulario HTML. Al enviar el curso seleccionado, el código PHP llamará a las funciones de clase de modelo para realizar acciones de sondeo.
Sistema de encuesta con PHP POO y MySQL
¿Cómo funciona el sistema encuestas?
- Al cargar la página principal nos mostrara un formulario HTML con varias opciones extraídas de una base de datos y mostrados en varias etiquetas tipo RADIO.
- Por lo tanto, solo basta que el usuario final seleccione una opción de una lista y presione el botón enviar. para generar la primera votación que será almacenada en la base de datos MySQL.
- Una vez guardada el script automáticamente mostrara los resultados de dicho evento. Mostrando valores numéricos de cada opción.
¿Cómo esta estructurado este sistema?
Utilizamos varios ficheros PHP que a continuación detallaremos.
- dbconect.php
- Encuesta.php
- index.php
- php_pooencuestas.sql
Importar tablas de base de datos
Este sistema necesita de una base de datos para almacenar las encuestas que los usuarios eligen. Por lo tanto, la base de datos será llamado php_pooencuestas
y dos tablas:
- La tabla llamada
tbl_carrera
s , para almacenar la cantidad de registros, que será las opciones que el usuario elige. - Una tabla llamada
tbl_carreras_votos
que será encargada de registrar las votaciones de los usuarios que interactúan con el sistema.
CREATE TABLE `tbl_carreras` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; INSERT INTO `tbl_carreras` (`id`, `name`, `date`) VALUES (1, 'Desarrollo JavaScript', '2018-08-01 04:39:10'), (2, 'Big Data', '2018-08-01 04:38:49'), (3, 'Marketing digital', '2018-08-01 04:38:38'), (4, 'Desarrollo web', '2018-08-01 04:38:29'); CREATE TABLE `tbl_carreras_votos` ( `id` int(11) NOT NULL, `course_id` int(20) NOT NULL, `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; ALTER TABLE `tbl_carreras` ADD PRIMARY KEY (`id`); ALTER TABLE `tbl_carreras_votos` ADD PRIMARY KEY (`id`); ALTER TABLE `tbl_carreras` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; ALTER TABLE `tbl_carreras_votos` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;
Index.php
Envia datos de encuestas a través de opciones de radio
La información será mostrada al usuario mediante un formulario HTML y mostrara una lista de carreras que son extraídas de la base de datos con las opciones de radio.
El usuario puede seleccionar su carrera que más le fascine usando las etiquetas de radio. Al enviar el curso seleccionado, el código almacenara la información en la tabla tbl_carreras_votos
. Después de procesar los datos de las encuestas, muestra resultados generales de la encuesta.
<p> <b>Selecciones su carrera favorita </b> </p> <div class="poll-container"> <?php if (empty($_POST["submit"])) { $result = $pollObject->getCource(); ?> <form method="POST" action=""> <?php foreach ($result as $k => $v) { ?> <div class='option-row'> <input class='radio-input' type='radio' name='vote' value='<?php echo $result[$k]["id"]; ?>' /> <?php echo $result[$k]["name"]; ?> </div> <?php } ?> <input id="btnSubmit" type="submit" name="submit" value="Enviar" /> </form> <div> </div> <?php } else { $subjectId=$_POST["vote"]; $pollObject->addVote($subjectId); $result = $pollObject->getCourcewithVote(); foreach ($result as $k => $v) { ?> <div class='poll'><?php echo $result[$k]["name"]; ?> <b><?php echo $result[$k]["vote_count"]; ?></b> votos </div> <?php } } ?> </div>
Encuesta.php
Esta clase incluye funciones para agregar nueva entrada de voto y para obtener las carreras y su cuenta de votos existente de la base de datos. Al enviar los datos, se creará el objeto de la clase Poll para invocar su función addVote()
. En esta función, la consulta INSERT se crea mediante los datos enviados por el usuario.
class Poll{ public function addVote($subjectOption) { $daoObject = new encuestas(); $sql = "INSERT INTO tbl_carreras_votos (course_id) VALUES ('".$subjectOption."')"; $daoObject->insert($sql); } public function getCource() { $daoObject = new encuestas(); $sql = "SELECT * FROM tbl_carreras order by id"; $result = $daoObject->select($sql); return $result; } public function getCourcewithVote() { $daoObject = new encuestas(); $sql = "SELECT * FROM tbl_carreras order by id"; $result = $daoObject->select($sql); if(!empty($result)) { foreach ($result as $k => $v) { $result[$k]["vote_count"] = 0; $sql_stmt = "SELECT COUNT(course_id) as vote_count FROM tbl_carreras_votos WHERE course_id = ". $result[$k]["id"]; $voteResult = $daoObject->select($sql_stmt); if(!empty($voteResult[0]["vote_count"])) { $result[$k]["vote_count"] = $voteResult[0]["vote_count"]; } } } return $result; } }
dbconect. php
En esta clase, se realizarán las operaciones relacionadas con la base de datos, como ser:
- La operación de crear
- También de leer
Al utilizar estas funciones, los datos de las encuestas se actualizarán en la base de datos con nuevos valores de manera dinámica. Se declara la conexión y se establece en el constructor de clase y se cierra en el destructor.
public function __construct() { $this->db_handle = mysqli_connect($this->host, $this->userid, $this->password, $this->database); if (!$this->db_handle) { die("Connection not established: " . mysqli_error()); } if (!mysqli_select_db($this->db_handle,$this->database)) { die("Unable to select database: " . mysqli_error()); } } public function select($sql) { $result = mysqli_query($this->db_handle,$sql); if (!$result) { die("Unable to access database: " . mysqli_connect_error()); } $rows = mysqli_num_rows($result); $rowdata = array(); if ($rows) { while ($row = mysqli_fetch_assoc($result)) { $rowdata[] = $row; } } return $rowdata; } public function insert($sql) { $result = mysqli_query($this->db_handle,$sql); return $result; } public function __destruct() { mysqli_close($this->db_handle); }
CONCLUSION
- El sistema de encuesta es muy usado para poder tomar decisiones en varios factores de preferencias. También, podemos saber con exactitud la preferencia de los usuarios, alumnos, clientes, etc.
- Este sistema usa POO que es muy recomendado en el desarrollo de sistemas seguros y confiables.
- A continuación, les dejare la descarga completa de este sistema de encuestas.