Terça-Feira, 07 de Setembro de 2010

  Procurar por: Em:  

Confira nossas seções disponíveis!

 

 
 
 
 
 
 
 
 
 
 


Como fazer um sistema de enquete

Enviado por Clenisson Calaça,
em 30/10/04 às 15:04
Utilizando arquivos de texto.

1786 cliques.


Retirado de www.codigofonte.net.

Fala galera!

Neste artigo estarei apresentando um script que tem por finalidade montar uma simples enquete utilizando arquivo texto. Vamos fazer uso do array() e de um arquivo texto(vota.txt) que vai armazenar a contagem dos votos.

Vamos lá:

Arquivo: admin_enquete.php
Esse é o arquivo de configuração da nossa enquete

<?
//Arquivo de configuração da enquete
$arquivo_texto = "vota.txt"; //Arquivo que contém a soma das respostas
$questao = "O que você acha do conteúdo do iMasters ?"; //Questão da enquete
$opcoes = array("Ótimo","Bom","Regular","Ruim"); //Escolhas

$img_porc = "c:paginaenquetejuliofiguras"; //Diretório onde está a imagem da estatística do resultado.
?>


Arquivo: index.php
Arquivo principal que é o responsável pela soma dos resultados e a apresentação da enquete.

<?
require "admin_enquete.php"; // Arquivo de configuração da enquete

if(! $votar && ! $resultados) { /*Mostra a enquete*/
echo "<form name='enquete' method='post'>";
echo "<table width='100%' border='0'>";
echo "<tr><td>$questao</td></tr>";
while(list($key,$val)=each($opcoes)) {
echo "<tr><td><input type='radio' name='resposta' value='$key'>$val</td></tr>";
}//fecha while que mostra as opções de respostas
echo "<tr><td><input type='submit' name='votar' value='Votar >>'></td></tr>";
echo "<tr><td><input type='submit' name='resultados' value='Resultados >>'></td></tr>";
echo "</form>";
} //fecha a mostra da enquete

else { //Mostra os resultados / Grava a resposta do usuário
$arquivo_array = file($arquivo_texto); //lê o arquivo e armazena num array

if($resposta < count($opcoes) && $votar) { // Grava a resposta
$veia_resp = $arquivo_array[$resposta];
$veia_resp = preg_replace("/nr*/","",$veia_resp); //Executa uma busca
$arquivo_array[$resposta] = ($veia_resp + 1)."n";

$arquivo = join('',$arquivo_array); //Agrupa elementos de um array em uma string - mesmo que implode()
$fp = fopen($arquivo_texto,"w"); //Abre o arquivo texto
flock($fp,1); // Bloqueio manual do arquivo
fputs($fp,$arquivo); //Grava no arquivo
flock($fp,3); // Bloqueio manual do arquivo
fclose($fp); //Fecha o ponteiro do arquivo
}//fecha if -> grava a resposta

while(list($key,$val) = each($arquivo_array)) { //Soma o total de votos
$total += $val;
}//fecha while -> soma total de votos

//Exibe o resultado da enquete
echo "Resultados:";
echo "<table cellpading=1 cellspacing=2 border=0>";
echo "<tr><th>Questões</th><th>Porcentagem</th><th>Votos</th></tr>";
while(list($key,$val)=each($opcoes)) { //Lista os resultados
$porc = $arquivo_array[$key] * 100 / $total;
$porc_int = floor($porc);
$porc_float = number_format($porc,1); //formata o número
$tp += $porc_float;

echo "<tr><td>$opcoes[$key]</td>";
echo "<td><img height='9' width='$porc_int' src='$img_porc/vote_middle.gif'>";
echo "$porc_float%</td>";
echo "<td>$arquivo_array[$key]</td></tr>";
} //fecha while -> resultados
}//fecha else com os resultados / grava resposta
?>


Importante: Crie uma imagem qualquer que será colocada na tela de resultados da enquete pra dar aquele visual de estatísticas. Grave ela na pasta figuras com o nome (vote_middle.gif).

Esta aí na sua enquete pronta e funcional. Essa enquete está simples, tem muito detalhes a serem acertados como por exemplo impedir que o usuário vote mais de uma vez nela. Para solucionar esse problema, basta fazermos uso de um cookie, mais isso vou deixar a cargo de vocês.

Sei, que vendo pela primeira parece ser complicado, mais não é. Estou preparando um artigo que mostra como fazermos manipulação em arquivos textos. Aí com certeza vocês entenderão melhor. Futuramente estarei disponibilizando um artigo mais completo mostrando como fazer um Sistema de enquete baseado no banco de dados MySQL com sistema Administrativo e tudo mais. Aguardem!

Comentar - Ver comentários (0)

Usuário:  
Senha:  

Esqueci a senha.
Quero me cadastrar.

Melhor visualizado no Internet Explorer.
© 2005-2008 Ponto PHP - Programado e Mantido por Clenisson Calaça.
Design by
Agência Blá. Hospedado por MR Media.
Sugestões, reclamações, erros ou dúvidas sobre o site: contato@pontophp.com.