Projetos PHP: crie um aplicativo de pesquisa de opinião
Neste projeto PHP, vamos criar um aplicativo de pesquisa de opinião.
A sondagem de opinião consistirá em 3 componentes principais;
Controlador frontal – esta é a página de índice que determinará o código HTML a ser carregado. Isso garantirá que nosso aplicativo tenha um único ponto de entrada. Isso nos dará mais controle sobre o aplicativo.
Logíca de negócios – conterá o código PHP para interagir com o banco de dados. Isso nos permitirá separar a lógica de negócios da apresentação, tornando nosso aplicativo fácil de manter
Visualizações – conterá o código HTML. Teremos duas páginas a saber;
- Opinião.html.php – conterá o código HTML com a pergunta e opções
- results.html.php – conterá o código HTML que exibe os resultados da pesquisa de opinião
Suposições feitas
A pesquisa de opinião fará a pergunta -
Qual é o seu favorito JavaScript Biblioteca?
As respostas seriam
- JQuery
- MooTools
- Biblioteca YUI
- Brilho
Aqui estão as etapas para criar o aplicativo –
Etapa 1) Conectividade do banco de dados
Esta seção pressupõe conhecimento de MySQL e como administrá-lo, se você não estiver familiarizado com estes MySQL, verifique nosso Tutoriais SQL seção.
Nossa aplicação terá uma tabela apenas com 3 campos a saber;
- id – gera automaticamente o número como chave primária
- escolha – o número que representa um candidato presidencial
- ts – o carimbo de data/hora da votação
O script abaixo cria nossa tabela 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`) ); ?>
Etapa 2) Codificando nosso aplicativo
Vamos agora criar nossa camada lógica de negócios que cuidará da conectividade do banco de dados. '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); } } ?>
AQUI,
- “função pública __construct()” é o método construtor de classe usado para estabelecer a conexão com o banco de dados
- “função pública execute_query(…)” é o método para executar consultas como inserir, atualizar e excluir
- “seleção de função pública” é o método para recuperar dados do banco de dados e retornando uma matriz numérica.
- “public function insert(…)” é o método insert que chama o método execute_query.
- “função pública __destruct()” é o destruidor de classe que fecha a conexão com o banco de dados.
Vamos agora criar o front controller 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'; ?>
AQUI,
- “requer 'opinion_poll_model.php';” carrega a classe de lógica de negócios
- “$model = novo Opinion_poll_model();” cria uma instância da classe de lógica de negócios
- “if (count($_POST) == 1)…” realiza a validação dos dados e utiliza JavaScript para exibir uma caixa de mensagem caso nenhum candidato tenha sido votado.
- “if (count($_POST) > 1)…” verifica se um voto foi selecionado contando o número de itens no array $_POST. Se nenhum item foi selecionado, o $_POST conterá apenas o item de envio. Se um candidato tiver sido escolhido, o array $_POST terá dois elementos, o item submit e vote. Este código também é usado para inserir um novo registro de votação e depois exibir a página de resultados
- "saída;" é usado para encerrar a execução do script após a exibição dos resultados, para que o formulário da pesquisa de opinião não seja exibido.
- “exige 'opinion.html.php';” exibe o formulário de pesquisa de opinião se nada tiver sido selecionado.
Vamos agora criar as visualizações. opinião.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>
Etapa 3) Testando nosso aplicativo
Supondo que você salvou os arquivos na pasta de pesquisa de opinião, navegue até a URL http://localhost/opinionpoll/
Se você clicar no botão Ok sem selecionar uma biblioteca JS, receberá a seguinte caixa de mensagem.
Selecione uma biblioteca JS e clique no botão OK. Você obterá uma página de resultados semelhante à mostrada abaixo.
Resumo
- Dividir seu aplicativo em lógica de negócios, camadas de visualização do controlador frontal é uma boa prática de design de aplicativo
- JavaO script é útil para executar a validação do lado do cliente
- É uma boa prática de programação usar file.html.php para arquivos que contêm HTML e Códigos PHP
- A aplicação de pesquisa de opinião demonstra como o conhecimento aprendido nas lições anteriores pode ser reunido para desenvolver uma aplicação funcional com back-end de banco de dados.