Ir para conteúdo
Fórum Script Brasil
  • 0

Erro em enquete


MauMaster

Pergunta

Olá tenho um enquete em php funcionando no momento.

Essa enquete sem BD ela armazena os dados em uma rquivo chamo Data.txt, porém quando ocorre o erro esse arquivo e zeradondo a enquete e aparecendo o erro da na linha 144 da pagina "resultado.php"

o codigo php dessa pagina é o seguinte:

<div align="left">

<?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

for( $i = 2; $i <= $nlines; $i++)

{

// separa a op&ccedil;&atilde;o do n&uacute;mero de votos dessa op&ccedil;&atilde;o

// lines[0] possui a op&ccedil;&atilde;o e lines[1] possui a quantidade de votos

$lines[$i] = explode("|",$lines[$i]);

}

// calcula a quantidade total de votos, armazenada na variavel soma

$soma = 0;

for( $i = 2; $i <= $nlines; $i++)

{

$soma += $lines[$i][1];

}

// controi uma tabela com o resultado parcial da enquete

echo "<strong>:: Resultado parcial</strong></p><hr>";

echo "<p><table><tr><td>" . $question . "</td></tr>";

for( $i = 2; $i <= $nlines; $i++)

{

$percent = ($lines[$i][1]/$soma)*100; // calcula a porcentagem de votos para a op&ccedil;&atilde;o i

echo "<tr><td>" . $lines[$i][0] . "</td>"; // imprime a op&ccedil;&atilde;o i

echo "<td>";

// coloca uma barra representando a porcentagem para a op&ccedil;&atilde;o i

echo "<img src=\"l.gif\">";

for( $j = 0; $j <= $percent; $j++ )

{

echo "<img src=\"b.jpg\">";

}

echo "<img src=\"r.gif\">";

// imprime a porcentagem formatada

printf(" %01.1f%%", $percent);

}

echo "</table>";

echo "<br>Total de votos <strong>" . $soma . "</strong> até o momento</p>";

?>

sendo a linha 144 referente a essa linha:

$handle = fread($fp,filesize($file)); // handle recebe o conteudo do arquivo

gostaria de ajuda para solucionar esse problema

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

O erro é que o arquivo não consegue ser lido, pois na linha anterior:

$fp = fopen($file,"r+"); // abre o arquivo com os dados para leitura

Deu erro na abertura, o certo seria testar com um if.. por exemplo...

if(!($fp = fopen($file,"r+"))){

echo 'Erro na abertura do arquivo';

exit;

}

Link para o comentário
Compartilhar em outros sites

  • 0

Deixa eu ver se entendi direito, o erro tava em que quando ele abria e dava erro ele fechava o arquivo salvando o erro e impedindo que a enquete continuasse.

já com a linha de codigo que você me passo se ele encontrar o erro ele sai e da a msg de erro e a enquente pode seguir sem problemas.

é isso?

atenciosamente MauMaster

Editado por MauMaster
Link para o comentário
Compartilhar em outros sites

  • 0
Troca isso:

$fp = fopen($file,"r+");

Por isso

if(!($fp = fopen($file,"r+"))){

echo 'Erro na abertura do arquivo';

exit;

}

Deixa eu ver se entendi direito, o erro tava em que quando ele abria e dava erro ele fechava o arquivo salvando o erro e impedindo que a enquete continuasse.

já com a linha de codigo que você me passo se ele encontrar o erro ele sai e da a msg de erro e a enquente pode seguir sem problemas.

é isso?

atenciosamente MauMaster

Link para o comentário
Compartilhar em outros sites

  • 0

Incrivelmente o erro agora mudou de endereço esta se dando em "enquete.php"

o codigo php desta pagina é:

<!-- formulario da enquete, que usa o arquivo atualiza.php para atualizar os dados -->

<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" class="style12">Resultado Parcial</a> </td>

</tr>

</table>

</form>&nbsp;</td>

já o erro é dado na linha 192 que é a seguinte:

fclose($fp); // fecha o arquivo fp

essa enquete esta com mais de 60 mil votos e é parte de uma promoção grande, e caindo assim fica ruim pra imagem da impresa.

Se alguém novamente poder me ajudar agradeço.

Link para o comentário
Compartilhar em outros sites

  • 0

Faz assim, pega um script que use banco de dados, porque se a enquete tem essa quantidade de votos, provavelmente esteja dando erro quando tem mais um usuário "concorrendo" pra abrir ou gravar no arquivo, no google ou aqui na scriptbrasil você acha enquetes com BD.

Link para o comentário
Compartilhar em outros sites

  • 0

o problema é que não sei configurar BD, acho que ta na hora de enfiar a cara e tentar.

e essa enquete já esta ON e faltao 11 dias ainda, não tem como arrumar ela para não falhar mais ate la ne?

e dai só depois mudar pra uma com BD

brigadao amigo

Editado por MauMaster
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...