Proyectos PHP: Cree una aplicación de encuesta de opinión

Tabla de contenido:

Anonim

En este proyecto PHP , vamos a crear una aplicación de encuesta de opinión.

La encuesta de opinión constará de 3 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 empresarial : contendrá el código PHP para interactuar con la base de datos. Esto nos permitirá separar la lógica empresarial de la presentación haciendo que nuestra aplicación sea fácil de mantener.

Vistas : 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.

Supuestos hechos

La encuesta de opinión hará la pregunta:

¿Cuál es su biblioteca de JavaScript favorita?

Las respuestas serían

  • JQuery
  • MooTools
  • Biblioteca YUI
  • Resplandor

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á familiarizado con estos MySQL, consulte nuestra sección de 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.

Paso 2) Codificando nuestra aplicación

Creemos ahora nuestra capa de lógica empresarial que manejará la conectividad de la base de datos. 'opinion_poll_model.php'

db_handle = mysqli_connect($this->host, $this->uid, $this->pwd); //connect to MySQL serverif (!$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 statementreturn !$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 clases que se utiliza para establecer la conexión a la base de datos
  • "Función pública execute_query (…)" es el método para ejecutar consultas como insertar, actualizar y eliminar
  • "Selección de función pública" es el método para recuperar datos de la base de datos 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 execute_query.
  • “Función pública __destruct ()” es el destructor de clases que cierra la conexión a la base de datos.

Creemos ahora el index.php del controlador frontal

alert('You did not vote!');";}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 .= "
" . $ libraries [$i] . " Got:" . $result[0] . " votes

";}require 'results.html.php';exit;}require 'opinion.html.php';?>

AQUÍ,

  • "Requiere 'opinion_poll_model.php';" carga la clase de lógica empresarial
  • "$ Modelo = nuevo Opinion_poll_model ();" crea una instancia de la clase de lógica empresarial
  • “If (count ($ _ POST) == 1)…” realiza la validación de datos y usa JavaScript para mostrar un cuadro de mensaje si no se ha votado por 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 artículo, $ _POST solo contendrá el artículo enviado. Si se ha elegido un candidato, la matriz $ _POST tendrá dos elementos, el elemento enviar y votar. Este código también se usa para insertar un nuevo registro de votos y luego mostrar la página de resultados.
  • "Salida;" 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.
  • "Require 'opinion.html.php';" muestra el formulario de encuesta de opinión si no se ha seleccionado nada.

Creemos ahora las vistas. opinion.html.php

JavaScript Libraries - Opinion Poll

JavaScript Libraries - Opinion Poll

What is your favorite JavaScript?

JQuery
MooToolsl
YUI Library
Glow

results.html.php

JavaScript Libraries Poll Results

Opinion Poll Results

What is your favorite JavaScript Library?

people have thus far taken part in this poll:

Paso 3) Probar nuestra aplicación

Suponiendo que ha guardado los archivos en la carpeta opinionpoll, busque la URL http: // localhost / opinionpoll /

Si hace clic en el botón Aceptar sin seleccionar una biblioteca JS, obtendrá el siguiente cuadro de mensaje.

Seleccione una biblioteca JS y luego haga clic en el botón Aceptar. Obtendrá una página de resultados similar a la que se muestra a continuación.

Resumen

  • Dividir su aplicación en lógica empresarial, las capas de vista del controlador frontal es una buena práctica de diseño de aplicaciones.
  • JavaScript es útil para realizar la validación del lado del cliente
  • Es una buena práctica de programación usar file.html.php para archivos que contienen códigos HTML y PHP
  • La aplicación de encuesta de opinión demuestra cómo los conocimientos adquiridos en las lecciones anteriores se pueden combinar para desarrollar una aplicación de trabajo con un back-end de base de datos.