Proyectos PHP: crear una aplicación de encuesta de opinión
En este proyecto PHP, Vamos a crear una aplicación de encuesta de opinión.
La encuesta de opinión constará de tres componentes principales;
Controlador frontal – esta es la página de índice que determinará el código HTML que se cargará. Esto asegurará que nuestra aplicación tenga un único punto de entrada. Esto nos dará más control sobre la aplicación.
Lógica de negocios – esto contendrá el código PHP para interactuar con la base de datos. Esto nos permitirá separar la lógica de negocio de la presentación haciendo que nuestra aplicación sea fácil de mantener.
Vistas – esto contendrá el código HTML. Tendremos dos páginas a saber;
- opinion.html.php – contendrá el código HTML con la pregunta y las opciones
- results.html.php: contendrá el código HTML que muestra los resultados de la encuesta de opinión.
Suposiciones hechas
La encuesta de opinión planteará la pregunta:
Cual es tu favorito JavaGuión ¿Biblioteca?
Las respuestas serían
- JQuery
- MooTools
- Biblioteca YUI
- Brillo
Estos son los pasos para crear la aplicación:
Paso 1) Conectividad de la base de datos
Esta sección asume el conocimiento de MySQL y cómo administrarlo, si no estás familiarizado con estos MySQL, mira nuestro tutoriales de SQL .
Nuestra aplicación tendrá una sola tabla con 3 campos, a saber;
- id: número de generación automática como clave principal
- elección: el número que representa a un candidato presidencial
- ts: la marca de tiempo de la votación
El siguiente script crea nuestra tabla js_libraries.
<?php CREATE TABLE `js_libraries` ( `id` int(11) NOT NULL AUTO_INCREMENT, `choice` tinyint(4) NOT NULL DEFAULT '0', `ts` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ); ?>
Paso 2) Codificar nuestra aplicación
Ahora creemos nuestra capa de lógica empresarial que manejará la conectividad de la base de datos. 'opinion_poll_model.php'
<?php class Opinion_poll_model { private $db_handle; private $host = 'localhost'; private $db = 'opinion_poll';private $uid = 'root'; private $pwd = 'melody'; public function __construct() { $this->db_handle = mysqli_connect($this->host, $this->uid, $this->pwd); //connect to MySQL server if (!$this->db_handle) die("Unable to connect to MySQL: " . mysqli_error()); if (!mysqli_select_db($this->db_handle,$this->db)) die("Unable to select database: " . mysqli_error()); } private function execute_query($sql_stmt) { $result = mysqli_query($db_handle,$sql_stmt); //execute SQL statement return !$result ? FALSE : TRUE; } public function select($sql_stmt) { $result = mysqli_query($db_handle,$sql_stmt); if (!$result) die("Database access failed: " . mysqli_error()); $rows = mysqli_num_rows($result); $data = array(); if ($rows) { while ($row = mysqli_fetch_array($result)) { $data = $row; } } return $data; } public function insert($sql_stmt) { return $this->execute_query($sql_stmt); } public function __destruct(){ mysqli_close($this->db_handle); } } ?>
AQUÍ,
- “función pública __construct()” es el método constructor de clase que se utiliza para establecer la conexión de la base de datos
- “función pública ejecutar_query(…)” es el método para ejecutar consultas como insertar, actualizar y eliminar
- La “selección de función pública” es el método para recuperar datos del base de datos de CRISPR Medicine News y devolver una matriz numérica.
- “inserción de función pública (…)” es el método de inserción que llama al método ejecutar_query.
- “función pública __destruct()” es el destructor de clase que cierra la conexión de la base de datos.
Ahora creemos el controlador frontal. index.php
<?php require 'opinion_poll_model.php'; $model = new Opinion_poll_model(); if (count($_POST) == 1) { echo "<script>alert('You did not vote!');</script>"; } if (count($_POST) > 1) { $ts = date("Y-m-d H:i:s"); $option = $_POST['vote'][0]; $sql_stmt = "INSERT INTO js_libraries (`choice`,`ts`) VALUES ($option,'$ts')"; $model->insert($sql_stmt); $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries;"; $choices_count = $model->select($sql_stmt); $libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow"); $table_rows = ''; for ($i = 1; $i < 5; $i++) { $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; $result = $model->select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; } require 'results.html.php'; exit; } require 'opinion.html.php'; ?>
AQUÍ,
- "requerir 'opinion_poll_model.php';" carga la clase de lógica de negocios
- “$modelo = nuevo Opinion_poll_model();” crea una instancia de la clase de lógica de negocios
- “if (count($_POST) == 1)…” realiza la validación de datos y utiliza JavaScript para mostrar un cuadro de mensaje si no se ha votado a ningún candidato.
- “if (count($_POST) > 1)…” comprueba si se ha seleccionado un voto contando el número de elementos en la matriz $_POST. Si no se ha seleccionado ningún elemento, $_POST solo contendrá el elemento enviado. Si se ha elegido un candidato, la matriz $_POST tendrá dos elementos, el elemento de envío y el de votación. Este código también se utiliza para insertar un nuevo registro de votación y luego mostrar la página de resultados.
- “exit;” se utiliza para finalizar la ejecución del script después de que se hayan mostrado los resultados, de modo que no se muestre el formulario de encuesta de opinión.
- "requerir 'opinión.html.php';" muestra el formulario de encuesta de opinión si no se ha seleccionado nada.
Ahora creemos las vistas. opinión.html.php
<html> <head> <title>JavaScript Libraries - Opinion Poll</title> </head> <body> <h2>JavaScript Libraries - Opinion Poll</h2> <p><b>What is your favorite JavaScript?</b></p> <form method="POST" action="index.php"> <p> <input type="radio" name="vote" value="1" />JQuery <br /><input type="radio" name="vote" value="2" />MooToolsl <br /><input type="radio" name="vote" value="3" />YUI Library <br /><input type="radio" name="vote" value="4" />Glow </p> <p><input type="submit" name="submitbutton" value="OK" /></p> </form> </body> </html>
resultados.html.php
<html> <head> <title>JavaScript Libraries Poll Results</title> </head> <body> <h2>Opinion Poll Results</h2> <p><b>What is your favorite JavaScript Library?</b></p> <p><b><?php echo $choices_count[0]; ?></b> people have thus far taken part in this poll:</p> <p> <table> <?php echo($table_rows); ?> </table> </body> </html>
Paso 3) Probar nuestra aplicación
Suponiendo que haya guardado los archivos en la carpeta de opinión, busque la URL http://localhost/opinionpoll/
Si hace clic en el botón Aceptar sin seleccionar una biblioteca JS, aparecerá el siguiente cuadro de mensaje.
Seleccione una biblioteca JS y luego haga clic en el botón Aceptar. Obtendrá la página de resultados similar a la que se muestra a continuación.
Resumen
- Dividir su aplicación en lógica empresarial y capas de vista del controlador frontal es una buena práctica de diseño de aplicaciones.
- JavaEl script es útil para realizar la validación del lado del cliente.
- Es una buena práctica de programación utilizar file.html.php para archivos que contienen HTML y Códigos PHP
- La aplicación de encuesta de opinión demuestra cómo el conocimiento aprendido en las lecciones anteriores se puede combinar para desarrollar una aplicación funcional con una base de datos.