NOTÍCIA

Sistema de votação online em PHP e MySQL

Este artigo vai te ensinar a fazer uma
votação em PHP↳PHP44 conteúdosPadronizando seu código com PHP CS FixerDev (Back & Front) · mai 2019Docker de imagem. Para rodar projetos PHP em menos de 30 segundosDev (Back & Front) · jan 2026PHP 7.3: conheça as novidades desta versãoDev (Back & Front) · abr 2019Ver tudo em Dev (Back & Front) →, usando MySQL↳MySQL8 conteúdosMySQL + Adminer + Docker Compose: montando rapidamente um ambiente para usoData · abr 2019Banco de dados MYSQL no PHPStormDev (Back & Front) · jul 2019Criando um ambiente de desenvolvimento PHP mínimo com Docker – Parte 3Dev (Back & Front) · out 2019Ver tudo em Data →. Esta votação será
de apenas uma escolha.

1. Criando o arquivo para votar:

Crie um ficheiro html e escreva
a pergunta e as respostas como no exemplo seguinte:

<HTML>
<HEAD>
<TITLE>votação</TITLE>
</HEAD>
<BODY>
<FONT SIZE="3">Qual a sua base de dados
preferida?</FONT><BR>
<FORM NAME="votação" ACTION="votacao.php"
METHOD="get">
<INPUT TYPE="radio" NAME="escolha"
VALUE="1">MySQL<BR>
<INPUT TYPE="radio" NAME="escolha"
VALUE="2">msSQL<BR>
<INPUT TYPE="radio" NAME="escolha"
VALUE="3">PostgreSQL<BR>
<INPUT TYPE="radio" NAME="escolha"
VALUE="4">ODBC<BR>
</FORM>
</BODY>
</HTML>

2. Criando a tabela no MySQL:

Na shell do MySQL, após
selecionar uma Base de Dados escreva o seguinte código:

CREATE TABLE votacao
(id INT(2) NOT NULL auto_increment primary key, descricao
CHAR(50), votos CHAR(4));

Muito bem, a tabela foi criada e está
pronta para usar. Para continuar, da mesma forma que
criamos a tabela, vamos agora inserir os seguintes códigos
para adicionar as opções na tabela:

INSERT INTO votacao
(descricao,votos) VALUES ("MySQL","0");
INSERT INTO votacao (descricao,votos) VALUES ("msSQL","0");
INSERT INTO votacao (descricao,votos) VALUES ("PostgreSQL","0");
INSERT INTO votacao (descricao,votos) VALUES ("ODBC","0");

Repare que são adicionadas a
descrição e os votos, mas não o
ID, justamente
porque quando a tabela foi criada, foi designada a função
de AUTO_INCREMENT, o que
fará com que ela automaticamente incremente o
valor.

3. Criar o PHP que fará
todo o trabalho:

Crie um
ficheiro chamado votação.php e dentro dele coloque o
seguinte código que será explicado detalhadamente:

<?

if ($escolha !=
"") { // Verifica se foi inserido um voto
e prossegue em frente no caso de verdade

// Variáveis
a serem alteradas

$mysql_host =
""; // local do servidor MySQL
$mysql_user = "": // utilizador do MySQL
$mysql_pass = ""; // senha do utilizador do
MySQL
$mysql_dtbs = ""; // base de dados onde a
tabela foi criada

$num_resp = "";
// número de opções na tua votação
$pergunta = ""; // pergunta da votação

// Nada mais a ser alterado

$mysql_conx =
mysql_connect($mysql_host,$mysql_user,$mysql_pass);
// ligação ao MySQL

$radio = $num_resp
+ 1;
// para uso posterior

mysql_select_db($mysql_dtbs);
// seleciona a base de dados

// aqui começa
todo o trabalho do PHP para atualizar a base de dados

$query_upd = "SELECT
* FROM votacao WHERE id=$escolha";
$resul_upd = mysql_query($query_upd);
// aqui o PHP selecciona apenas os registos que coincidem
com a escolha, neste
// caso so uma opção

$obj_upd = mysql_fetch_object($resul_upd);
// o comando mysql_fetch_object() separa os resultados
de uma query por colunas
// neste caso, $obj_upd -> descrição
da opção que o utilizador votou

$vot_upd = $obj_upd->votos;
$vot_upd++;
// separa só os votos e adicinona mais um voto

$upd_upd = "UPDATE
votacao SET votos=$vot_upd WHERE id=$escolha";
mysql_query($upd_upd);
// atualizou a base de dados

// Agora o PHP
fará a pesquisa na base de dados e retornará
as opções, seus
// respectivos votos, total de votos e a sua escolha.

echo "<H3>"
. $pergunta . "</H3>";

for($i=1;$i<$radio;$i++)
{

$query[$i] = "SELECT
* FROM votação WHERE id=$i";
$resul[$i] = mysql_query($query[$i]);
$objet[$i] = mysql_fetch_object($resul[$i]);

echo "<FONT FACE="Verdana" SIZE="1"><B>"
. $objet[$i]->opcao . "</B> " . $objet[$i]->descricao
. "<B> " . $objet[$i]->votos . "</B><BR>";

$tot_vt += $objet[$i]->votos;

// tudo isto serve
para requisitar o resultado de cada opção
e exibir no écran

}
echo "<FONT SIZE="1"><B>Total
de votos:</B>" . $tot_vt . "&nbsp;&nbsp;&nbsp;<B>Sua
Escolha</B>:" . $escolha . "</FONT></FONT>";
}
?>

E aqui termina o artigo. Claro que você
poderá alterar o layout da votação,
adaptar para que seja permitido apenas um voto por dia
(usando cookies), etc…

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Mais de Redação iMasters
Ver perfil →