Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 108
Nome: Bruno
Localização: portugal
Contato:

retornar a pagina na enquete

06-12-2008 19:33

ola pessoal.
Tou a colocar uma enquete no site.
A enquete funciona correctamente,mas tem um pequeno detalhe que gostaria de afinar, e não sou capaz.
Ao tentar executar a enquete depois de ter votado, não me e deixado e bem, mas ta a entrar numa nova página , que eu nao queria
Coloquei um "alert" a informar o utilizador, e queria que ao utilizador clica-se no "alert", fosse redirecionado para a propria enquete.
Deixo o codigo a seguir:

Enquete:

<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">Resultados</a> </td> </tr> </table> </form>

actualiza.php:

<?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 "<script>alert('Já votou nesta sondagem');</script>"; } // coloca link para voltar à tela com a enquete echo "&nbsp;<a href=\"enquete.php\">[Voltar]</a>" ?>

0
Cumprimentos
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17720
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

retornar a pagina na enquete

06-12-2008 20:23

É só usar um location.href que será colocado logo após o alert, redirecionando o usuário para o documento novamente.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 108
Nome: Bruno
Localização: portugal
Contato:

retornar a pagina na enquete

06-12-2008 20:35

coloquei assim mas nao da :

else { echo "<script>alert('Já votou nesta sondagem');</script>"; <script type="text/javascript"> document.write(location.href="enquete.php"); </script> }

Dá ai o exemplo,companheiro
0
Cumprimentos
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17720
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

retornar a pagina na enquete

06-12-2008 22:00

Tenta assim

else {
echo "<script>
alert('Já votou nesta sondagem');
location.href='enquete.php';
</script>";
}
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 108
Nome: Bruno
Localização: portugal
Contato:

retornar a pagina na enquete

06-12-2008 22:30

funciona.
Muito obrigado.
0
Cumprimentos
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17720
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

retornar a pagina na enquete

06-12-2008 22:44

:-)
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado