Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, sou estudante e preciso montar um cálculo de apuração de votos em php; o exercício sugere a utilização de "vetor" para resolução, mas eu não estou conseguindo criar um raciocínio para montar o php do exercício. Usando os dados parciais da eleição de 2018 para presidente, montei o seguinte html:
html>
<head>
</head>
<body>
<h1><center>Eleições para Presidente<center></h1>
<br>
<form method="POST" action="">
<table align='center' border=1 width=300 height=100>
<tr>
<td align='center'>ESCOLHA SEU CANDITATO A PRESIDÊNCIA DO PAÍS:</td>
</tr>
<tr>
<td><form>
<input type="radio" name="candidato" value="1"> Bolsonaro - PSC<br><br>
<input type="radio" name="candidato" value="2"> Haddad - PT<br><br>
<input type="radio" name="candidato" value="3"> Boulos - PSOL<br><br>
<input type="radio" name="candidato" value="4"> Daciolo - PATRIOTA<br><br>
<input type="radio" name="candidato" value="5"> Amoêdo - NOVO<br><br>
<input type="radio" name="candidato" value="6"> Geraldo Alckimin - PSDB<br><br>
<input type="radio" name="candidato" value="7"> Marina Silva - REDE<br><br>
<input type="radio" name="candidato" value="8"> Votar BRANCO<br><br>
<input type="radio" name="candidato" value="9"> Votar NULO<br><br>
</td></form>
</tr>
</table><br>
<center>
<input type="submit" value="Votar" name="votar">
<input type="submit" value="Calcular Votos" name="total">
</center>
Alguém consegue me ajudar com o desenvolvimento da apuração de votos para chegar nos seguintes resultados:
- Total de votos;
- Total de votos brancos e nulos;
- O candidato mais votado;
- O candidato menos votado; e
- A porcentagem de voto para cada candidato.
Obs.: Em todas as minhas pesquisas observei que esse tipo de trabalho é realizado com banco de dados, porém, como o exercício é meramente acadêmico, se for possível fazê-lo sem banco de dados, é melhor...Oi Marcos, obrigada pela sua atenção!
Eu acompanhei a execução desse modelo que você me direcionou, mas fiquei um pouco confusa porque ainda sou iniciante e não aprendi muita coisa, mas a ideia é justamente usar "arrays" para treinar o conhecimento... o projeto é de estudante e eu vou colocar banco de dados mais pra frente (porque ainda não aprendi também).
Mas eu não estou conseguindo evoluir a sequência lógica de usar "arrays" e por isso estou pedindo ajuda... Será que você tem uma ideia para me passar?!
até tem como mas vai exigir maior conhecimento seu do que fazer um banco rapido.
Tabelas
Presidentes
presidenteId
presidenteName
Eleitores(Se tiver)
eleitorId
eleitorName
Votos
votosId
eleitorId
presidenteId
Somente isso já resolve sua vida
Olá Ana,
montei um pequeno exemplo usando [$_SESSION](http://php.net/manual/pt_BR/ref.session.php).
Não é a melhor maneira de fazer isto, pois é de forma estruturada. O melhor é fazer com banco e OO, sem dúvida alguma.
Se entender a lógica, conseguirá completar para fazer o que precisa:
Spoiler
<html>
<head>
<title>Eleições para Presidente</title>
</head>
<body>
<h1><center>Eleições para Presidente<center></h1>
<br>
<form method="POST" action="">
<table align='center' border=1 width=300 height=100>
<tr>
<td align='center'>ESCOLHA SEU CANDITATO A PRESIDÊNCIA DO PAÍS:</td>
</tr>
<tr>
<td><form>
<input type="radio" name="candidato" value="1"> Bolsonaro<br><br>
<input type="radio" name="candidato" value="2"> Haddad<br><br>
<input type="radio" name="candidato" value="3"> Marina<br><br>
</td></form>
</tr>
</table><br>
<center>
<input type="submit" value="Votar" name="votar">
<input type="submit" value="Limpar Votos" name="limpar">
</center>
</form>
<?php
if (isset($_POST['votar'])){ // se existir o POST
session_start(); // inicia a sessão
$_SESSION['cont_votos'] += 1; // contador para os votos
$voto = $_POST['candidato']; // recebe o valor do post
switch ($voto) { // verifica pra quem foi o voto
case 1:
$_SESSION['bolsonaro'] += 1; // atribui sempre +1 quando é votado
break;
case 2:
$_SESSION['haddad'] += 1;
break;
case 3:
$_SESSION['marina'] += 1;
break;
}
// imprime os valores, não é a melhor maneira de fazer isto, é apenas para exemplo
echo "<br><br>";
echo "<table align='center' border=1 width=300 height=100>";
echo "<tr><td><h2>Resultado das eleições!</h2></td></tr>";
echo "<tr>";
echo "<td>Total de Votos:" . $_SESSION['cont_votos'] . "<br></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Bolsonaro tem: " . $_SESSION['bolsonaro'] . " votos! <br></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Haddad tem: " . $_SESSION['haddad'] . " votos! <br></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Marina tem: " . $_SESSION['marina'] . " votos! <br></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Candidato mais votado tem: " . max($_SESSION['haddad'], $_SESSION['bolsonaro'], $_SESSION['marina']) . " votos!<br></td>"; // max seleciona o maior valor
echo "</tr>";
echo "<tr>";
echo "<td>Candidato menos votado tem: " . min($_SESSION['haddad'], $_SESSION['bolsonaro'], $_SESSION['marina']) . " votos!<br></td>"; // min seleciona o menor valor
echo "</tr>";
echo "</table>";
}
if (isset($_POST['limpar'])){ // se existir limpar os votos
session_start();
session_destroy(); // mata todas as sessões
}
?>
</body>
</html>
Se tiver alguma dúvida, só perguntar.
Teste e retorne aqui pra nós, até!Poderias usar um TXT para gravar os votos, linha por linha, após isto joga o conteúdo deste em um array, aí é só trabalhar com este.
Total de votos: count(array)
Votos em Bolsonaro ou outro: array_count_values(array) (retorna um array usando os valores do parâmetro como chaves e as qtds de votos como valores)
Usarás min(array) e max(array) para achar o menos votado e o mais votado.
É só uma sugestão.
Pessoal, o exemplo do Marcosmarcolin deu certo.
Marcos, consegui entender sim a dinâmica do seu código, só estou tentando pensar como posso fazer com que nos primeiros votos não apresentem erros na tela. Após todos os candidatos terem recebido votação os erros param de aparecer...
Obrigada!!
>
Em 06/12/2018 at 20:45, Ana Paula dos Santos disse:
Pessoal, o exemplo do Marcosmarcolin deu certo.
Marcos, consegui entender sim a dinâmica do seu código, só estou tentando pensar como posso fazer com que nos primeiros votos não apresentem erros na tela. Após todos os candidatos terem recebido votação os erros param de aparecer...
Obrigada!!
Olá Ana, qual o erro que mostra?
Olá Ana, se pessoas em máquinas diferentes irão votar, é necessário banco de dados para armazenas e calcular as respostas.
Tem até um bom exemplo aqui.
Caso seja apenas para utilizar na sua máquina e para você testar, terá que trabalhar bastante com Arrays. E vejo mais dificuldades fazer sem banco de dados.