Ir para conteúdo
Fórum Script Brasil
  • 0

Zerar enquete


Walterlandy Alves

Pergunta

Galera adepta do PHP! Gostaria de saber como zerar essa enquete em PHP porque ainda não tenho muito conhecimento de PHP.

segue o código

enquete.php

<html>
<head>
<link rel="stylesheet" type="text/css" href="exemplo.css">
<title>Enquete ---> Sistemas de Informação</title>
</head>

<body bgcolor="#00254a" text="#cccccc">
<div align="center">
<p>
  <b>:: ---> Enquete Camiseta do curso de Sistemas de Informação <--- ::</b>
</p>
</div>
<hr>

<!-- formulario da enquete, que usa o arquivo atualiza.php para atualizar os dados -->
<div align="center">
<form action="atualiza.php" method="POST">
<table width="300">
<?php
 clearstatcache();                     // limpa o cache    
 $file = "data.txt";                   // file recebe o nome do arquivo de dados
 $fp = fopen($file,"r+");              // abre o arquivo com os dados para leitura
 $handle = fread($fp,filesize($file)); // handle recebe o conteudo do arquivo
 fclose($fp);                          // fecha o arquivo fp
 $lines = explode("#",$handle);        // cria o vetor lines com as linhas do arquivo de dados
 $nlines = $lines[0];                  // nlines guarda o numero de linhas do arquivo de dados
 $question = $lines[1];                // question recebe a pergunta da enquete
 // imprime a pergunta da enquete
 echo "<tr><td colspan=\"2\"><strong>" . $question . "</strong></td></tr>";
 echo "<tr><td width=\"150\">";
 for( $i = 2; $i <= $nlines; $i++)
 {
   // separa a opção do número de votos dessa opção
   $lines[$i] = explode("|",$lines[$i]); 
   // coloca um radio button para cada opção i e associa o valor i
   echo "<input type=\"radio\" name=\"escolha\" value=\"" . $i . "\">" . $lines[$i][0] . "<br>";
 }
?> 
  </td>
  <td width="150" align="center">
   <input type="submit" name="submit1" class="formulario" value="Enviar"><br><br>
   <a href="resultado.php">Resultado Parcial</a>
   <br>
   <br>
   <a href="http://www.sistemainfo.hostpicos.com">Página inicial</a>
  </td>
 </tr>
</table>
</form>
</div>
</body>
</html>
resultado.php
<html>
<head>
<link rel="stylesheet" type="text/css" href="exemplo.css">
<title>Enquete ---> Sistemas de Informação</title>
</head>
<body bgcolor="#00254a" text="#cccccc">
<div align="center">
<p>
<?php
 clearstatcache();                     // limpa o cache  
 $file = "data.txt";                   // file recebe o nome do arquivo de dados
 $fp = fopen($file,"r+");              // abre o arquivo com os dados para leitura
 $handle = fread($fp,filesize($file)); // handle recebe o conteudo do arquivo
 fclose($fp);                          // fecha o arquivo fp
 $lines = explode("#",$handle);        // cria o vetor lines com as linhas do arquivo de dados
 $nlines = $lines[0];                  // nlines guarda o numero de linhas do arquivo de dados
 $question = $lines[1];                // question recebe a pergunta da enquete
 for( $i = 2; $i <= $nlines; $i++)
 {
   // separa a opção do número de votos dessa opção
   // lines[i][0] possui a opção e lines[i][1] possui a quantidade de votos
   $lines[$i] = explode("|",$lines[$i]); 
 }
 // calcula a quantidade total de votos, armazenada na variavel soma
 $soma = 0;
 for( $i = 2; $i <= $nlines; $i++)
 {
   $soma += $lines[$i][1];
 }
 // controi uma tabela com o resultado parcial da enquete
 echo "<strong>:: Resultado parcial</strong></p><hr>"; 
 echo "<p><table><tr><td>" . $question . "</td></tr>";
 for( $i = 2; $i <= $nlines; $i++)
 {
   $percent = ($lines[$i][1]/$soma)*100;      // calcula a porcentagem de votos para a opção i
   echo "<tr><td>" . $lines[$i][0] . "</td>"; // imprime a opção i
   echo "<td>";
   // coloca uma barra representando a porcentagem para a opção i
   echo "<img src=\"l.gif\">";
   for( $j = 0; $j <= $percent; $j++ )
   {
        echo "<img src=\"b.jpg\">";  
   }
   echo "<img src=\"r.gif\">";
   // imprime a porcentagem formatada
   printf(" %01.1f%%", $percent); 
 }
 echo "</table>";
 echo "<br>Votaram nessa enquete <strong>" . $soma . "</strong> pessoas.</p>";
?>
<br><a href="enquete.php">[Voltar]</a>
</div>
</body>
</html>
atualiza.php
<html>
<head>
<link rel="stylesheet" type="text/css" href="exemplo.css">
<title>Enquete ---> Sistemas de Informação</title>
</head>
<body bgcolor="#00254a" text="#cccccc">
<p>
<?php
$file_ip = "ip.txt";             // associa a file_ip o arquivo com os ip's que já votaram na enquete
$file = "data.txt";              // associa a file o arquivo de dados
$ip =  $_SERVER['REMOTE_ADDR'];  // recebe o ip do computador remoto
$choose = $_POST['escolha'];     // recebe a escolha do usuário vinda do formulário

$fp = fopen($file_ip,"r");                  // abre o arquivo file_ip para leitura
$handle_ip = fread($fp,filesize($file_ip)); // handle_ip recebe o conteudo do arquivo
fclose($fp);                                // o arquivo é fechado
$handle_ip = explode("#",$handle_ip);       // coloca os ip's no vetor handle_ip       

// flag que permite ou não a execução do voto
$flag = 0;
// se o usuário já votou a flag vai para 1 e outro voto não é permitido
// caso contrário a flag continua em 0 e inicia o procedimento para atualização dos dados
// é testado cada ip em handle_ip
for( $i = 0; $i < count($handle_ip); $i++ )
{
   if( $handle_ip[$i] == $ip )
   {  
     $flag = 1;
   } // if
} // for
if( $flag == 0 )
{ 
  clearstatcache(); // limpa o cache
  $fp = fopen($file,"r+");
  $handle = fread($fp,filesize($file));
  fclose($fp);
  $lines = explode("#",$handle);
  $nlines = $lines[0];
  for( $i = 2; $i <= $nlines; $i++)
  {
    $lines[$i] = explode("|",$lines[$i]);
  }
  for( $i = 2; $i <= $nlines; $i++ )
  {
    // se a opção escolhida foi a opção i o número de votos é incrementado
    if( $choose == $i )
    {
      $lines[$i][1]++;
    } // if
  } // for
  for( $i = 2; $i <= $nlines; $i++ )
  {
    $lines[$i] = implode("|",$lines[$i]);
  } // for
  $handle = implode("#",$lines);        // handle volta a ser uma string com o conteúdo do arquivo de dados
  $fp = fopen($file,"w+");              // o arquivo de dados é aberto para escrita
  fputs($fp,$handle,strlen($handle)+1); // o conteúdo atualizado é inserido
  fclose($fp);                          // fecha o arquivo de dados
  
  $handle_ip = implode("#",$handle_ip); // handle_ip volta a ser a string com o conteúdo do arquivo de ip's
  $handle_ip .= $ip . "#";                // o ip atual é inserido no fim da string com o separador
  $fp = fopen($file_ip,"w+");           // o arquivo de ip's é aberto para escrita 
  fputs($fp,$handle_ip,strlen($handle_ip)+1);  // a nova string é colocada no arquivo de ip's
  fclose($fp);                          // fecha o arquivo de ip's
  echo "<strong>Seu voto foi computado com sucesso!</strong>"; 
} // if
else
{
  echo "<strong>Você já votou nessa enquete!</strong>";
}
// coloca link para voltar à tela com a enquete
echo " <a href=\"enquete.php\">[Voltar]</a>"
?>
</body>
</html>

Editado por Jonathan Queiroz
Remover caixa alta do título conforme regra 3.7 e adicionar tag's (Jonathan)
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
Zerar enquete? não entendi, explique melhor a sua duvida, e se possível, coloque seu código entre as tags
, isso facilita a visualização, abraços.

Opa desculpa Jonatha!

Seguinte, para entender melhor acessa o link e veja no resultado da enquete o percentual da enquete. É o percentua do resultado da enquete que quero zerar. Ou seja, começar do zero o resultado da enquete. VEJA

http://www.sistemainfo.hostpicos.com/Enquete/resultado.php

Editado por Walterlandy Alves
Link para o comentário
Compartilhar em outros sites

  • 0

Bom, acho que se confundiu duplamente, o nome correto é Jonathan, e eu sou o FIT e não ele...hehe..

Em relação ao seu código, acredito que seja nele sim que seja gravadas as alterações, pois você não está utilizando base de dados, apenas dois arquivos txt, um que armazena ip, e outro que armazena a enquente.

Nessas duas linhas você percebe que está sendo atualizado o conteúdo dentro do arquivo data.txt, que está sendo representado pela variável $file.

$fp = fopen($file,"w+");              // o arquivo de dados é aberto para escrita
fputs($fp,$handle,strlen($handle)+1); // o conteúdo atualizado é inserido

Link para o comentário
Compartilhar em outros sites

  • 0
Bom, acho que se confundiu duplamente, o nome correto é Jonathan, e eu sou o FIT e não ele...hehe..

Em relação ao seu código, acredito que seja nele sim que seja gravadas as alterações, pois você não está utilizando base de dados, apenas dois arquivos txt, um que armazena ip, e outro que armazena a enquente.

Nessas duas linhas você percebe que está sendo atualizado o conteúdo dentro do arquivo data.txt, que está sendo representado pela variável $file.

$fp = fopen($file,"w+");              // o arquivo de dados é aberto para escrita
fputs($fp,$handle,strlen($handle)+1); // o conteúdo atualizado é inserido

DESCULPA FIT!!!

É porque ainda não me familiarizei no forum mas chego lá beleza!

fputs($fp,$handle,strlen($handle)+1) Então é no +1 que devo modificar para zero no caso. Realmente não é BD e sim dois arquivos "txt". Vlw cara conto sua cordial ajuda e a virtude de sua paciência para comigo! Abração

Link para o comentário
Compartilhar em outros sites

  • 0
Sem problemas, esquenta a cabeça não, mas o 0 ai não sei se seria a melhor solução, se quer zerar, tente abrir o txt e apagar de lá direto, acredito ser mais fácil.

Abraços, qualquer coisa posta ai.

data.txt

5#
Qual camiseta você usaria?#
Layout Nº 1|15#
Layout Nº 2|33#
Layout Nº 3|24#
Layout Nº 4|24#

FIT, saca o arquivo "data.txt" Onde o 5# refere ao número de linhas ou comando da questão da enquete contando com pergunta da enquete que é "Qual camiseta...?"

Tem tb um arquivo txt que explica algum detalhe sobre a modificação do "data.txt", que eu não entendi bem. Como faço para mandar para vc?

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, na verdade não precisa mandar, é fácil de entender.

Seguinte:

Layout N° 1|15# aonde 1 é o número da opção e 15 a quantidade de votos, apenas coloque 0 aonde está 15, e ele zera, faça isso nas outras linhas também.

Link para o comentário
Compartilhar em outros sites

  • 0

FIT meu brother!!!!!!!! Saquei a parada

5#

Qual camiseta você usaria?#

Layout Nº 1|1#<-- É aqui nesse comando que faço a devida alteração, mas se zerar "0" ele dar erro de código, e se colocar apenas "1" em todas as opções como "Layout nº 1 e tal... Ele me dar no resultado da enquete um percentual de início em 25% de votos. Efetuei um voto em uma opção de Layout e na referida opção teve um aumento de 25% para 40% e nas outras opções diminuiu de 25% para 20%. SISTÍNICO VÉI!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...