<link href="seabreeze1.css" rel="stylesheet" type="text/css">
<script language='JavaScript' type="text/javascript">
<!--
function PopUp2() { window.open('vote.php?action=results','Pager','width=180,height=370,resizable=yes,scrollbars=yes'); }
//-->
</script>
<?php
// ########################### autor ###################################
// ******************************************************** //
// //
// Nome: Éder Josué Chagas //
// homepage: http://www.dcc.ufmg.br/~ejchagas //
// E-mail: ejchagas@dcc.ufmg.br //
// //
// Script: Enquete //
// //
// Breve descrição: Enquete simples usando CheckBoxes, //
// não utiliza banco de dados guardando todos os resultados //
// em arquivos, podendo ter até 10 opções por enquete. //
// Contém uma página para administração da enquete, para //
// ter acesso a essa página basta digitar o password 123456 //
// //
// Para fazer o seu script funcionar basta dar um //
// chmod 766 nos arquivos que gravam os dados. //
// //
// ******************************************************** //
// ########################### head ###################################
// head: função que configura a página e inicializa a tabela
//
function head()
{
include('config.php');
echo "<BODY bgcolor=\"$bgcolor\" link=\"#CCCC00\"";
echo "vlink=\"#CCCC00\"";
echo "alink=\"#CCCC00\">";
echo "<table align=\"center\" width=\"150\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\">
<tr><td bgcolor=\"$tableborder\">
<table width=\"145\" border=\"0\"
cellpadding=\"0\" cellspacing=\"\" align=\"center\">
<tr><td bgcolor=\"$bgcolor\">";
} // head
// ########################### foot ###################################
// foot: função que finaliza a tabela
//
function foot ()
{
echo "</td></tr></table></td></tr></table>";
} // foot
// ########################### record #################################
// record: grava o endereço ip no arquivo $ip_file
//
function record($REMOTE_ADDR)
{
include('config.php');
// abre o arquivo para escrita após a última linha.
$fp=fopen("$ip_file", "a+");
// envia para o arquivo o ip e a hora
fputs ($fp,$REMOTE_ADDR."][".time()."\n");
fclose($fp);// fecha o arquivo
} // record
// ########################### chech #################################
// check: função que checa se o ip já está gravado
//
function check($REMOTE_ADDR)
{
include('config.php');
global $valid;
$ip=$REMOTE_ADDR;
$data=file("$ip_file");
$now=time();
foreach ($data as $record)
{
$subdata=explode("][",$record);
if ($now < ($subdata[1]+3600*$timeout))
{
if ($ip == $subdata[0])
{
$valid=0;
break;
}
}
}
}// check
// ########################### save ##################################
// save: função que computa o voto
//
function save($opcao)
{
global $opcao;
include('config.php');
$data=file($datafile);
$subdata=explode("][",$data[$opcao]);
$subdata[2]+=1;
$data[$opcao]=implode("][", $subdata);
$data[$opcao]=$data[$opcao]."\n";
$fp=fopen($datafile,"w+");
$a=0;
do {
fputs($fp,$data[$a]);
$a++;
} while($a<count($data));
fclose($fp);
}// fim save
// ########################### form ##################################
// form: função que cria a tabela para votação
//
function form($PHP_SELF)
{
include('config.php');
head(); //inicializa a tabela
echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\"><form method=\"post\" action=\"vote.php\"><p align=\"center\">";
$data=file($datafile);
$question=$data[0];
$nb_options=count($data)-1;
echo "<b>$question</b></p>";
for($nb=1;$nb <= $nb_options; $nb++)
{
$option=explode("][","$data[$nb]");
echo "<input type=\"radio\" name=\"opcao\" value=\"$nb\"> ";
echo "$option[0]<br>";
}
echo "<input type=\"hidden\" name=\"save\" value=\"yes\">";
echo "<p align=\"center\"><input type=\"submit\" name=\"submit\"
value=\"Vote\" class=\"formstyle2\"></font>";
echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\">
<a href=\"javascript:PopUp2()\">
<br>Check Results</font></p>";
foot();// fecha a tabela
}// form
// ########################### results ##################################
// results: função que imprime os resultados
//
function results()
{
include('config.php');
head();
$data=file($datafile);
$nb_answers=count($data);
$votes=0;
$a=1;
do { // calcula o total de votos
$subdata=explode("][",$data[$a]);
$votes += $subdata[2];
$a++;
} while($a < $nb_answers);
$a=1;
$b="answerv";
if($votes!=0)
$v=100/$votes; //descobre o valor de 1 voto em %
echo "<p><font size=\"$fontsize\" face=\"$font\"
color=\"$textcolor\"><b>$data[0]<br><br>Results.
</b><br><br>";
do {
$subdata=explode("][",$data[$a]);
$av = $subdata[2] * $v; // calcula a porcentagem de cada opção
echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\">$subdata[0] ";
echo " - $subdata[2] Vote(s)<br>";
echo "<img src=\"$subdata[1]\" border=\"0\" width=\"$av\"
height=\"15\">";
printf(" %01.1f", $av);
echo"%<br>";
$a++;
} while ($a < $nb_answers);
echo "<br><font size=\"$fontsize\">
Total Votes: $votes";
echo "<br>";
foot(); //fecha a tabela
}// results
// ########################### execução ################################
// execução da página
//
check($REMOTE_ADDR);
if ($valid=="0")// se já votou, mostra somente os resultados
{
results();
}
elseif ($action=="results") // se clicar para ver os resultados
{
results();
}
elseif ($save=="yes" && $valid!="0") // se votou e o ip ainda não foi gravado
{
save($opcao); // computa o voto
record($REMOTE_ADDR); // grava o ip
results(); // mostra os resultados
}
[b]elseif ($action=="save" && empty($valid)) // se enviou o voto, sem
// marcar uma opção
{
results();
}[/b]
elseif ($action!="save" && $valid!="0") // se ainda não enviou o voto,
// mas uma opção está marcada
{
form($PHP_SELF);
}
?>Eu tinha té mudado o:elseif ($action=="save" && empty($valid)) // se enviou o voto, sem
// marcar uma opção
{
results();
}Que vinha como:
elseif ($action=="save" && [b]![/b]empty($valid)) // se enviou o voto, sem
// marcar uma opção
{
results();
}
A diferença era o "!". Só que não deu em nada... Alguma idéia galera?
Edição feita por: FreezeBurn, 19/12/2003, 19:51.










