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