Como criar enquete com PHP
Criar enquetes no seu site é uma ótima forma de engajar o público e obter feedback. Neste post, vou te ensinar a criar uma enquete simples usando PHP, onde os usuários podem votar e ver os resultados em tempo real. Neste post, aprenda como criar enquete com PHP.
Passo 1: Estrutura HTML da enquete
Primeiro, precisamos de um formulário em HTML onde os usuários possam escolher entre as opções e enviar o voto.
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Enquete</title>
</head>
<body>
<h2>Qual é o seu filme favorito?</h2>
<form action="votar.php" method="POST">
<input type="radio" id="filme1" name="opcao" value="Star Wars" required>
<label for="filme1">Star Wars</label><br>
<input type="radio" id="filme2" name="opcao" value="Matrix" required>
<label for="filme2">Matrix</label><br>
<input type="radio" id="filme3" name="opcao" value="Senhor dos Anéis" required>
<label for="filme3">Senhor dos Anéis</label><br>
<input type="submit" value="Votar">
</form>
<a href="resultados.php">Ver Resultados</a>
</body>
</html>
Passo 2: Armazenando votos com PHP
Agora, precisamos criar um script PHP para registrar os votos. Uma maneira simples de fazer isso é armazenando os votos em um arquivo de texto. Crie um arquivo chamado votar.php:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$opcao = $_POST['opcao'];
// Verifica se a opção foi enviada corretamente
if (!empty($opcao)) {
// Abre o arquivo para adicionar o voto
$arquivo = 'votos.txt';
$dados = file_get_contents($arquivo);
// Decodifica o JSON
$votos = json_decode($dados, true);
// Atualiza o contador de votos para a opção selecionada
if (isset($votos[$opcao])) {
$votos[$opcao]++;
} else {
$votos[$opcao] = 1; // Se a opção ainda não tiver votos
}
// Salva o novo resultado no arquivo
file_put_contents($arquivo, json_encode($votos));
echo "Voto registrado! <a href='resultados.php'>Ver resultados</a>";
} else {
echo "Por favor, selecione uma opção.";
}
}
?>
Passo 3: Exibindo os resultados
Agora, vamos criar um arquivo resultados.php para exibir o total de votos em cada opção:
<?php
// Carrega os dados dos votos
$arquivo = 'votos.txt';
$dados = file_get_contents($arquivo);
$votos = json_decode($dados, true);
// Exibe os resultados
echo "<h2>Resultados da Enquete</h2>";
if ($votos) {
foreach ($votos as $opcao => $contador) {
echo "$opcao: $contador votos<br>";
}
} else {
echo "Ainda não há votos.";
}
?>
Passo 4: Criando o arquivo de votos
Se você ainda não tem o arquivo votos.txt, crie-o manualmente na pasta onde está rodando o seu projeto. Esse arquivo deve conter um array vazio, como mostrado abaixo:
{}
Agora você tem uma enquete funcional no seu site! Os usuários podem votar e ver os resultados em tempo real. Claro, esse é um exemplo básico. Algumas melhorias que você pode fazer incluem:
- Limitar votos por IP para evitar múltiplos votos do mesmo usuário;
- Adicionar mais opções de escolha;
- Usar um banco de dados para armazenar os votos de forma mais segura e robusta.
Se você gostou desse tutorial, compartilhe com seus amigos ou deixe um comentário com dúvidas!
Outro exemplo prático com banco de dados
A enquete deste exemplo é composta de duas tabelas, uma para as perguntas (enquete) e outra para as respostas (respostas).
As estruturas SQL das tabelas são:
Para a tabela “enquete”:
INSERT INTO `enquete` VALUES (1,'Enquete');
Para a tabela “respostas”:
CREATE TABLE `respostas` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`enquetes_id` int(11) unsigned NOT NULL DEFAULT '0',
`resposta` varchar(255) DEFAULT NULL,
`votos` int(11) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`Id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
Código PHP:
//Dados para a conexão com o banco de dados
$servidor = 'localhost';
$usuario = 'root';
$senha = '12345';
$banco = 'nome_banco';
$link = mysql_connect($servidor, $usuario, $senha) or die('Não foi possivel conectar:
' . mysql_error());
$select = mysql_select_db($banco);
$_REQUEST["action"] = "voto";
//Verifica se o arquivo foi chamado a partir de um formulário
if($_REQUEST["action"] == "votar")//se a var. action passada via URL for igual a "votar"
{
/* CÓDIGO DE VOTAR */
//isset: para saber se uma variável existe
(retorna verdadeiro se existir e falso se não existir)
//verifica se o voto válido foi enviado ao servidor
if(isset($_POST["voto"]) && $_POST["voto"] != "")
{
$sql = "UPDATE respostas SET votos = votos + 1 WHERE Id = ".$_POST["voto"];
$result = mysql_query($sql);
}
$sql = "UPDATE respostas SET votos = votos + 1 WHERE Id = ".$_POST["voto"];
header("location: ?action=resultados"); //redireciona para visualizar os resultados
}
else if($_REQUEST["action"] == "resultados")
{
/* CÓDIGO DE VISUALIZAR OS RESULTADOS */
// Seleciona a enquete mais recente
$sql = "SELECT * FROM enquetes ORDER BY Id ASC LIMIT 1";
$result = mysql_query($sql);
if($tbl = mysql_fetch_array($result))
{
echo "".$tbl["enquete"]."";
// Navega pelas respostas, exibindo em ordem de votos
$sql = "SELECT * FROM resp WHERE enquetes_id = ".$tbl["Id"]." ORDER BY votos DESC";
$result = mysql_query($sql);
while($tbl = mysql_fetch_array($result))
{
echo "‹BR>".$tbl["resposta"]." (".$tbl["votos"]." votos)";
}
}
}
else //se variável action = 'voto' ...
{
/* CÓDIGO DE VISUALIZAR A ENQUETE */
// Seleciona a enquete mais recente
$sql = "SELECT * FROM enquetes ORDER BY Id ASC LIMIT 1";
$result = mysql_query($sql);
if($tbl = mysql_fetch_array($result))
{
echo "‹B>".$tbl["enquete"]."‹B>";
// Navega pelas respostas
echo "<FORM action='?action=votar' method='POST'>";
$sql = "SELECT * FROM respostas WHERE enquetes_id = ".$tbl["Id"]." ORDER BY Id ASC";
$result = mysql_query($sql);
while($tbl = mysql_fetch_array($result))
{
echo "<BR›<INPUT type='RADIO' name='voto' value='".$tbl["Id"]."'› ".$tbl["resposta"]."";
}
echo "<center›<BR›<INPUT type='SUBMIT' value='Votar'›</center›";
echo "</FORM›";
}
}
Então conheça o curso online que já ajudou milhares de pessoas a aprender a programar e desenvolver seus próprios projetos do ZERO e usando orientação a objetos de uma forma fácil de entender.
CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS:
Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits
Sobre o Autor
0 Comentários