Peguei este codigo de enquete num site de scripts, e ele é tudo o que eu queria: Simples, sem usar SQL, PGree, etc, traz um grafico, possibilita apenas um voto por IP, e melhor: FUNCIONA.
Mas tem um problema: O resultado gerado atualiza a janela em que a votacao é realizada, e e esta nova pagina nao tem nenhum recurso de "voltar a pagina anterior".
Eu montei um esquema assim:
Coloquei uma include para o arquivo "vote.php" dentro de minha pagina, para aproveitar meu layout. Mas quando alguem faz a votacao, este "vote.php" processa o resultado, e atualiza toda a pagina.
Esta nova pagina se abre completamente em branco, apenas com os resultados, e nao possui um botao ou link para retornar a tela anterior.
Alguem saberia fazer com que o codigo recebesse um botao "voltar"?
Grato.
-------------------------------------------------------------------------
<?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=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tr><td bgcolor=\"$tableborder\">
<table width=\"100%\" 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><br>";
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=\"Votar\"></form></font>";
echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\">
<a href=\"vote.php?action=results\">
Confira os resultados</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>Resultado da enquete.
</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] votos<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\">
Já foram computados $votes votos";
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
}
elseif ($action=="save" && !empty($valid)) // se enviou o voto, sem
// marcar uma opção
{
results();
}
elseif ($action!="save" && $valid!="0") // se ainda não enviou o voto,
// mas uma opção está marcada
{
form($PHP_SELF);
}
?>
Alguem Pode Me Ajudar Com Esta Enquete?
Started By NEOTURBO, 21/02/2004, 21:37
4 replies to this topic
#1
Posted 21/02/2004, 21:37
#2 thiagorsl
Posted 21/02/2004, 22:07
procure na seção de js como fazer um form abrir numa janela popo que ai vc faz abrir o reusltado numa janela e pronto
Fui------------------->
Fui------------------->
#3
Posted 21/02/2004, 23:06
simples!
kra, vc pode colok um (!$submit) {
aki códigos p/ votar com o form
} else {
ação que grava os resultados e os mostra
}
ja vai dar certo, mas o + legal eh em pop-up, primeiro q o arquivo fik dando refresh c eu ñ me engano... c prescisar de ajuda fala aew
kra, vc pode colok um (!$submit) {
aki códigos p/ votar com o form
} else {
ação que grava os resultados e os mostra
}
ja vai dar certo, mas o + legal eh em pop-up, primeiro q o arquivo fik dando refresh c eu ñ me engano... c prescisar de ajuda fala aew
#4
Posted 22/02/2004, 00:40
Amigos, obrigados pelas respostas.
Bom, eu prefiriria a enquente se abrindo na mesma janela, pois assim o resultado atualizado ficaria visivel ao visitante, enquanto ele esta lendo a pagina, e mesmo depois caso ele retorne, sem mudar o IP.
E o codigo nao fica dando refreshs nao.
Mas tem 2 probleminhas... Eu nao manjo nada de PHP pra saber onde colocar este tal else, ou $submit e fazer a pagina abrir em seu corpo.
Tambem nao saberia onde colocar o codigo de js pra abrir um pop, pois quando resolvi tentar colocar um link de retorno, o cido se estragou.
Sera que vc nao poderia fazer a devida alteracao, e postar aqui novamente pra eu fazer o velho copiar e colar?
Grato.
Bom, eu prefiriria a enquente se abrindo na mesma janela, pois assim o resultado atualizado ficaria visivel ao visitante, enquanto ele esta lendo a pagina, e mesmo depois caso ele retorne, sem mudar o IP.
E o codigo nao fica dando refreshs nao.
Mas tem 2 probleminhas... Eu nao manjo nada de PHP pra saber onde colocar este tal else, ou $submit e fazer a pagina abrir em seu corpo.
Tambem nao saberia onde colocar o codigo de js pra abrir um pop, pois quando resolvi tentar colocar um link de retorno, o cido se estragou.
Sera que vc nao poderia fazer a devida alteracao, e postar aqui novamente pra eu fazer o velho copiar e colar?
Grato.
Edição feita por: NEOTURBO, 22/02/2004, 00:42.
#5
Posted 04/03/2007, 00:06
Amigo , m conta o enquete funciona bem? eu instale a mesma y no sei onde pegar isto
Para fazer o seu script funcionar basta dar um chmod 766 nos arquivos que gravam os dados.
si vc me manda onde tem que coloar o chmod 766
brigado espero sua resposta
Para fazer o seu script funcionar basta dar um chmod 766 nos arquivos que gravam os dados.
si vc me manda onde tem que coloar o chmod 766
brigado espero sua resposta
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)