Jump to content


Photo

Alguem Pode Me Ajudar Com Esta Enquete?


  • Faça o login para participar
4 replies to this topic

#1 NEOTURBO

NEOTURBO

    Ativo

  • Usuários
  • 344 posts
  • Sexo:Não informado

Posted 21/02/2004, 21:37

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);
}

?>

#2 thiagorsl

thiagorsl
  • Visitantes

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-------------------> :D

#3 brigman

brigman

    12 Horas

  • Usuários
  • 234 posts
  • Sexo:Não informado

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

#4 NEOTURBO

NEOTURBO

    Ativo

  • Usuários
  • 344 posts
  • Sexo:Não informado

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.

Edição feita por: NEOTURBO, 22/02/2004, 00:42.


#5 blas

blas

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Não informado

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




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq