Jump to content
Ana Paula dos Santos

Cálculo de votos no php

Recommended Posts

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...

Share this post


Link to post
Share on other sites

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.

 

Share this post


Link to post
Share on other sites

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?!

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

Olá Ana,

 

montei um pequeno exemplo usando $_SESSION.

 

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é!

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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!!

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By GSilva1
      Bom Dia.
      Será que alguém me pode ajudar? Na semana anterior estive com um professor a desenvolver um programa de insert, que também servirá para o Select/Delete/Update.
      Mas estou “preso”, pois, ele disse-me que eu poderia adaptar o código para as outras três opções. Passado quase uma semana não consegui fazer nada, será que alguém me consegue ajudar vendo o meu código? 
       
      Obrigado, Gonçalo Silva
      <?php $self = $_SERVER['PHP_SELF']; $host_name = "127.0.0.1"; $database = "visteon"; $username = "root"; $password = ""; $Tabela =""; try { $dbo = new PDO('mysql:host='.$host_name.';dbname='.$database, $username, $password); } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); } // Selecicionar Tabela if(!isset($_POST['submeterTabela']) && !isset($_POST['submeterDados'])) { $form ="<form action=\"$self\" method=\"post\">"; $result = $dbo->query("SHOW TABLES"); $form.= "<select name='Tabela' class='select_box'>"; while ($row = $result->fetch(PDO::FETCH_NUM)) { $form.= "<option value='$row[0]'>$row[0]</option>"; } $form.= "</select>"; $form.="<br><input type=\"submit\" name=\"submeterTabela\" value=\"Submeter\"class='button'>"; echo($form); } // Preencher dados if(isset($_POST['submeterTabela']) && !isset($_POST['submeterDados'])) { $Tabela=$_POST['Tabela']; $form ="<form action=\"$self\" method=\"post\">"; $form.="<input type=\"hidden\" name=\"Tabela\"class='tabela1'value=\"$Tabela\"> <br>"; $form.="Introduz Dados<br>"; $sql ="SHOW columns from ".$Tabela; $result = $dbo->query($sql); while ($row = $result->fetch(PDO::FETCH_NUM)) { $sql1="select Campo from descritivoscampos where Tabela='".$Tabela."' and Campo='".$row[0]."';"; $Resultado = $dbo->query($sql1); $linha = $Resultado->fetch(PDO::FETCH_NUM); $form .= "$linha[0]"; $form.="<input type=\"text\" name=\"$row[0]\" size=\"5\"><br>"; } $form.=" <br><input type=\"submit\" name=\"submeterDados\"class='botao'value=\"Submeter\">"; echo($form); } if(isset($_POST['submeterDados'])) { $Tabela=$_POST['Tabela']; $sql ="SHOW columns from ".$Tabela; $result = $dbo->query($sql); $sql1 = "insert into $Tabela("; $aux=0; while ($row = $result->fetch(PDO::FETCH_NUM)) { if ($aux!=0) $sql1 .=", "; if ($row[0]!='id') { $sql1 .="$row[0]"; $aux=1; } } $sql1 .=") values ("; $result = $dbo->query($sql); $aux=0; while ($row = $result->fetch(PDO::FETCH_NUM)) { if ($aux!=0) $sql1 .= ", "; if ($row[0]!='id') { $aa=$_POST[$row[0]]; $sql1 .="'$aa'"; //$sql1 .="$row[0]"; $aux=1; } } $sql1 .=");"; $conn = mysqli_connect($host_name, $username, $password, $database) or die("Could not connect."); $result = mysqli_query($conn, $sql1) or die("Could not execute SQL query"); if ($result) { echo("Informação introduzida com Sucesso!!"); } } ?> Sinceramente já não sei o que mais fazer necessito mesmo de uma ajuda. Obrigado.
    • By Bruno Brandão da Silva
      Boa noite, estou aprendendo laravel no php e estou seguindo um pdf. Porém deu um erro (Non-static method Illuminate\Routing\Route::middleware() should not be called statically) na hora que eu vou compilar (php artisan serve) no cmd e não aparece na URL o LARAVEL. O erro consta na minha api na linha 6, no caso Route::middleware('auth::api')->get('/user', function (Request $request) { return $request->user(); }); se alguém puder me ajudar
    • By Pedro_adm
      Olá pessoal ! Gostaria que alguém me ajudasse, estou precisando ler 2 linhas de um arquivo de texto por cada iteração do loop, quebrar as strings  e montar um array que será codificado em json e isso servirá como um arquivo de retorno com informação sobre clientes,  porém dessas 2 linhas cada uma possui um padrão de quebra de string diferente. A primeira linha estou chamando de segmento_T e a segunda de segmento_U por que o 14° caractere dessas linhas possuem as letras T e U ,  cada duas linhas trazem informações de um só cliente . Quero que cada segmento_t tenha o seu segmento_u. Todo o arquivo de texto está sendo alternado em segmento_t e segmento_u. Exemplo do txt:
      03300000 00000000000134373970130041625 000604895 AAAAA AAAAAAAAAA EIRELI ME AAAAA AAAAAAAAA (BRASIL) S/A 204012019 000039040 03358651T01 040 2010000053000134000604895 373970130041625 AAAAA AAAAAAAAAA EIRELI ME 0000003904012019 0335860000001T 09300000130041625 000000051504320000000000515040301201900000000000735003337397 001000002750640423PATESCO GONDIM SILVA GUIMARAES 01300416250000000000000000000000000 0335865300002U 0900000001111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000401201904012019000000000000000000000000000 000 A primeira linha do txt vai ficar dentro de um array chamado "Header", a segunda linha dentro de um array chamado "Lote" e o restante das linhas vão ser as informações sobre cliente.
       
      Esse é  o código que tenho até agora:
      <?php $file = file("COBST_BGM1_03_210119P_MOV.txt"); $total_linhas = count($file); $Dados = array(); for($x=0; $x<$total_linhas; $x++) { if ($x==0){ $lista = $file[$x]; $Cabecalho['Header'][] = array( 'codigo_banco' => substr($lista, 0, 3), 'lote:' => substr($lista, 3, 4), 'tipo_registro:' => substr($lista, 7, 1), 'reservado:' => substr($lista, 8, 8) ); } elseif ($x==1){ $lista = $file[$x]; $lote['Lote'][] = array( 'codigo_banco' => substr($lista, 0, 3), 'lote:'=> substr($lista, 3, 4), 'tipo_registro:'=> substr($lista, 7, 1), 'tipo_operacao:'=> substr($lista, 8, 1), 'tipo_servico:'=> substr($lista, 9, 2) ); } elseif ($x % 2){ $lista = $file[$x]; $segmento_u['Segmento_U'][] = array( 'codigo_banco' => substr($lista, 0, 3), 'lote:'=> substr($lista, 3, 4), 'tipo_registro:'=> substr($lista, 7, 1), 'n_sequencial:'=> substr($lista, 8, 5), 'codigo_segmento:'=> substr($lista, 13, 1), 'reservado_1:'=> substr($lista, 14, 1) ); } else { $Dados = $file[$x]; $segmento['Segmento_T'][] = array( 'codigo_banco' => substr($Dados, 0, 3), 'lote:'=> substr($Dados, 3, 4), 'tipo_registro:'=> substr($Dados, 7, 1), 'n_sequencial:'=> substr($Dados, 8, 5), 'codigo_segmento:'=> substr($Dados, 13, 1) ); } } $resultados = array($Cabecalho, $lote, $segmento_u, $segmento); header("Content-Type: application/json"); $json_str = json_encode($resultados, JSON_PRETTY_PRINT); echo $json_str; ?>  
    • By peterstefan
      Boa tarde, quero fazer anúncios em um projeto e quero mostrar dentro de um foreach, mais quero mostrar a cada 5 blocos e depois mostro o anuncio do google.. isso tem algum novo para que eu possa pesquisar?
    • By violin101
      Caros amigos.
       
      saudações...
       
      Por favor PRIMEIRAMENTE peço desculpa em recorrer ao auxílios dos amigos, mas sou novato em CODEIGNITER.
       
      Através de muita Leitura e pesquisa sobre o tema, tenho conseguido desenvolver o que gostaria de executar.
       
      Me deparei com o seguinte problema que não estou conseguindo executar com êxito.
       
      Preciso criar uma FUNÇÃO onde o Sistema após o USUÁRIO efetuar o LOGIN possa realizar uma VALIDAÇÃO de Data e Hora.
      Por exemplo:
       
      Na base de dados tenho campos distintos como:
        `dataInicio` DATE NOT NULL ,
        `horaInicio` TIME NOT NULL ,
        `dataFim` DATE NOT NULL ,
        `horaFim` TIME NOT NULL ,
       
      Pergunta:
      como faço uma função para que o sistema possa comparar e calcular o PRAZO de VENCIMENTO com a DATA e HORA atual, ou seja:
      prazo para encerrar
      dataFim: 19/04/2019
      horaFim: 12:00
      ---------------------------------------
      vencimento
      dataAtual: 19/04/2019
      horaAtual: 12:01
      ==========================
       
      Se a Data/Hora já venceu o Sistema muda o STATUS para 2 (prazo encerrado).
       
      Grato,
       
      Cesar
       
       
       
       
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.