Como criar sistema de votação ou enquete com PHP e MySQLi
Nesta vídeo aula será apresentado como criar a página de votação com PHP e MySQLi.
Será apresentado como criar a página listar os produtos com PHP e MySQLi do banco de dados que deve estar na votação.
Em cada produto será apresentado quantos votos já recebeu e também o link para votar.
Em seguida será criado o arquivo para contabilizar o voto para o produto.
Download do código fonte desenvolvido na aula: DOWNLOAD
Listar os produtos e os votos
Primeiro será criado o arquivo “index.php”. No mesmo será incluído a conexão com o banco de dados “include_once("conexao.php");”, para poder listar os produtos cadastrado no banco de dados. Com a conexão incluída necessário pesquisar no banco de dados com a QUERY "SELECT * FROM produtos", após realizar a pesquisa no banco de dados é utilizado o while para imprimir o resultado do banco de dados.
Será impresso o ID do produto, o nome do produto e a quantidade de voto que o produto recebeu na votação. Em seguida será criado o link para o usuário realizar a votação.
<?php
session_start(); //Inicializar a sessão
//Incluir a conexão com o banco de dados
include_once("conexao.php");
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Votacao</title>
</head>
<body>
<!-- Criar o titulo usando a tag <h1> do HTML -->
<h1>Listar</h1>
<?php
//Imprimir a mensagem de voto recebido co sucesso
if(isset($_SESSION['msg'])){
//Imprimir o valor da sessão
echo $_SESSION['msg'];
//Destruir a sessão com PHP
unset($_SESSION['msg']);
}
//Criar a QUERY para pesquisar os produtos no banco de dados
$result_produto = "SELECT * FROM produtos";
//Executar a QUERY para pesquisar os produtos no banco de dados com o MySQLi
$resultado_produto = mysqli_query($conn, $result_produto);
//Usar o while para percorrer os dados trazidos do banco de dados
while($row_produto = mysqli_fetch_assoc($resultado_produto)){
//Imprimir o ID do produto salvo no banco de dados
echo "Número do produto: " . $row_produto['id'] . "<br>";
//Imprimir o nome do produto salvo no banco de dados
echo "Nome do produto: " . $row_produto['nome'] . "<br>";
//Imprimir a quantidade de votos que o produto tem salvo no banco de dados
echo "Quantidade de voto: " . $row_produto['qnt_voto'] . "<br>";
//Criar o link para o usuário poder votar no produto
echo "<a href='votar.php?id=".$row_produto['id']."'>Votar</a><br><hr>";
}
?>
</body>
</html>
Criar o arquivo para acrescentar o voto no banco de dados
Em seguida será criado o arquivo “votar.php” para receber o voto. Neste arquivo será incluído a conexão com o banco de dados utilizando o include_once("conexao.php");. Em seguida verificar a presença da variável ID na URL usando o GET do PHP.
Existindo a variável ID na URL, será usado mais um IF para verificar se o usuário já votou. Caso tenha votado não será contabilizado o voto.
Caso não tenha votado será criado o COOKIE com o tempo de 5 segundo, sendo o tempo de validade do COOKIE, neste período de 5 segundos o usuário tente votar não será contabilizado o voto.
Em seguida será acrescentado no banco de dados o voto do usuário, usando o UPDATE e informando a qual produto o voto deve ser contabilizado, “UPDATE produtos SET qnt_voto=qnt_voto + 1 WHERE id ='".$_GET['id']."'".
Para confirmar a alteração no banco de dados será utilizado a função mysqli_affected_rows() para validar a inserção do voto no produto.
Para finalizar será criado a variável global em PHP $_SESSION['msg'] e atribuir a mensagem de sucesso, com personalização do CSS INLINE <p style='color: green;'></p>. Em seguida fazer o redirecionamento com PHP utilizando o header("Location: index.php"); e indicando para qual arquivo o usuário será redirecionado.
<?php
session_start();//Inicializar a sessão com PHP
include_once("conexao.php");
//Verificar se está vindo a variável id pela URL
if(isset($_GET['id'])){
//Verificar se existe o COOKIE 'voto_cont',
//caso exista o usuário já votou e o voto não deve ser contabilizao e acessa o IF
//Senão acessa o ELSE para somar o voto
if(isset($_COOKIE['voto_cont'])){
//Criar a variável global com a mensagem de sucesso
$_SESSION['msg'] = "<span style='color: red'>Você já votou!</span>";
//Redirecionar o usuário com PHP para a página index.php
header("Location: index.php");
}else{
//Criar o COOKIE com PHP para proibir novo voto em 5 segundos
setcookie('voto_cont', $_SERVER['REMOTE_ADDR'], time() + 5);
//Criar a QUERY UPDATE para acrescentar o voto no banco de dados
$result_produto = "UPDATE produtos SET qnt_voto=qnt_voto + 1
WHERE id ='".$_GET['id']."'";
//Executar a QUERY UPDATE para acrescentar o voto no banco de dados
$resultado_produto = mysqli_query($conn, $result_produto);
//Validar com mysqli_affected_rows a inserção do voto no banco de dados
if(mysqli_affected_rows($conn)){
//Criar a variável global com a mensagem de sucesso
$_SESSION['msg'] = "<span style='color: green'>Voto recebido com sucesso!</span>";
//Redirecionar o usuário com PHP para a página index.php
header("Location: index.php");
}else{
//Criar a variável global com a mensagem de sucesso
$_SESSION['msg'] = "<span style='color: red'>Erro ao votar!</span>";
//Redirecionar o usuário com PHP para a página index.php
header("Location: index.php");
}
}
}
Criar a conexão com banco de dados usando PHP e MySQLi
Para alterar os dados com PHP e MySQLi necessário criar a base de dados “celke”, em seguida fazer a conexão com o banco de dados utilizando o PHP e MySQLi. Para fazer a conexão será criado o arquivo “conexao.php” e colocado o código abaixo.
<?php
//Nome do servidor que está o banco de dados
$servidor = "localhost";
//Usuário do banco de dados
$usuario = "root";
//Senha do banco de dados
$senha = "";
//Nome da base de dados
$dbname = "celke";
//Criar a conexao com MySQLi
$conn = mysqli_connect($servidor, $usuario, $senha, $dbname);
Criar a tabela “produtos” no banco de dados
Com a base pronta e a conexão, necessário criar a tabela “produtos”, com as colunas “id, nome, qnt_voto”. Para criar pode ser executado o código abaixo no seu gerenciador de banco de dados, no exemplo está sendo utilizado o phpMyAdmin.
CREATE TABLE `produtos` (
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`nome` varchar(220) NOT NULL,
`qnt_voto` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `produtos` (`id`, `nome`, `qnt_voto`) VALUES
(1, 'Produto 1', 9),
(2, 'Produto 2', 4),
(3, 'Produto 3', 4);
Portanto, neste tutorial foi apresentado como criar sistema votação com PHP, e salvar no banco de dados o voto. Também apresentado como usar COOKIES do PHP.
Download do código fonte desenvolvido na aula: DOWNLOAD