Coluna Dreamweaver - Envio de formulário com ajax - Parte Final

Introdução

Salve Pessoal! Desculpe a demora, mais esse semestre estou muito atarefado.

Conceitos

Nesse tutorial você vai ver funções básica para manipulação de ficheiros utilizando o php, como por exemplo, abrir, fechar, ecrever e manipula as informações contida nele, e ainda criar cookies. Nessa parte do tutorial você vai construir dois página, uma responsável por manipular e escrever no ficheiro e outra que vai ser o grafico com os resultados da enquete.

Conteúdo

Crie uma nova página em PHP e salve com o nome de contar_votos.php, crie também um documento de texto (txt) e salve com o nome de resultat.txt. Não se esqueça de dar permissão de escrita no arquivo de texto(CHMOD 777).
Na primeira linha de comando antes de qualquer saida de código crie um cookie. A criação do cookie e feita pela função setcookie que necessita de três parâmestros nessa ordem; o primiero é o valor do cookie, o segundo o valor do cookie e o terceiro o prazo de duração do cookie. Nesse exemplo o nome do cookie vai ser ‘votacaoenquete‘ e o valor do cookie será ‘votado‘, pois quando o usuário acessar essa página o cookie será gerado para broquear o usuário e não permite que ele vote duas vezes, o tempo de duração do cookie fica a sua escolha.

<?php
setcookie(’votacaoenquete’, ‘votado’, time()+3600*24*30);
?>

Agora iremos colocar a mão na massa, crie uma variável para armazenar o local onde estar salvo o arquivo txt.

$fichier=”resultat.txt”;

Para abrir o arquivo txt utilize a função fopen. Crie uma variável ($pointeur) para armazenar o ponteiro de escrita e passar os dois parâmetros necessários, o primeiro é a variável que indica o local do arquivo ($fichier) a ser aberto e o segundo é o modo de leitura (r+), neste caso será aberto com permissão para escrita */

$pointeur=fopen($fichier,”r+”);

Crie outra variável ($enquete) para ler e armazenar o conteúdo do ficheiro em uma string. A leitura do arquivo txt é feita pela função fread que ler o arquivo e retorna uma string com o conteúdo, e necessita de dois parâmetros, o primeiro parâmetro é a string que armazena as configurações para abertura do arquivo ($pointeur). O segundo parâmetro determina até onde o arquivo será lido nesse caso está associado a função filesize para retornar o tamanho do arquivo ($fichier) e assim realizar a leitura de todo o arquivo

$enquete=fread($pointeur,filesize($fichier));

Após fazer a leitura do arquivo e armazenar seu conteúdo na string ($enquete), divida essa string em strings individuais, e em cada string individual será armazenado uma opção da enquete. A divisão da string e feita pela função explode, e utiliza como marcador de separação a vírgula(,). Assim os valores que estão antes de cada vírgula serão divididos e transformados em strings, podendo ser escrito e manipulado individualmente.

$enquete=explode(”,”,$enquete);

Crie uma variável ($reponse) para armazenar a opção que o usuário escolheu

$reponse = $_POST['reponse'];

Identifique a opção escolhida e some mais um no valor da variável.

$enquete[$reponse]++;

Para que o voto seja escrito na posição correta deve ser indicado a seqüência de escrita e armazenagem das strings. Como a string está dividida ele dever ser juntada na ordem correta, por exemplo, na primeira string fica armazenado os votos da primeira opção, cujo identificador é zero (value=”0″), na segunda string depois da virgula fica armazenado os votos da segunda opção, cujo o identificador é um (value=”1″) e assim por diante…

$enquete=$enquete[0].”,”.$enquete[1].”,”.$enquete[2].”,”.$enquete[3];

Reinicialize a posição do ponteiro de arquivos para o início

rewind($pointeur);

Utilizando a função fputs faça a gravação da string no arquivo

fputs($pointeur,$enquete);

Utilizando a função fclose feche e encerre a manipulação do arquivo

fclose($pointeur);

Pronto agora inclua a página com os resultados, que será construida na proxima etapa.

<?php include(’ resultados.php’); ?>

Como foi criado o cookie agora abra a página index.php que foi criada no tutorial anterior. Quando o usuário votar na enquete será gerado o cookie com o valor ‘votado’, para não permite que o usuário vote novamente iremos aplicar um teste de verdadeiro ou falso, se for verdadeiro que o cookie existe então mostre uma frase (echo “Você já participou !”) e escondar o botão submit, agora se esse teste for falso e o usuário ainda não votou então mostre o botão submit para que possa ser enviado o voto. Localize o botão submit e substitua por esse código

<?php
if ($_COOKIE['votacaoenquete'] == votado ){
echo “Você já participou !”;
}
else {
?>
<input name=”teste” value=”Enviar” onClick=”Spry.Utils.submitForm(’form1′, updateResponseDiv, {method:’post’, url:’contar_votos.php’});” type=”button”>
</p>
<?php } ?>

Criando a página para mostrar os resultados

Crie uma nova página para armazenar os resultados, essa página dever ter o mesmo nome que foi dado na hora que você incluiu na página conta_votos.php no meu exemplo o nome é resultados.php.
Dentro de um bloco de código PHP faça a inclusão da página que contém as configurações da enquete.

<?php include(’config.php’); ?>

Faça novamente a leitura do arquivo txt, como já expliquei no inicio e acho que você entendeu vou direto aos codigos

$fichier=”resultat.txt”;
$pointeur=fopen($fichier,”r”);
$enquete=fread($pointeur,filesize($fichier));
fclose($pointeur);
$enquete=explode(”,”,$enquete);

Como o arquivo já foi lido, e a string divida em strings individuais contendo os votos de cada opção da enquete. Crie uma variável ($total) para soma todos os votos, lembrando que as estrings estão dividias e nosso exemplo tem quatros opções.

$total=$enquete[0]+$enquete[1]+$enquete[2]+$enquete[3];

Crie outra variável ($longueur) para definir a largura máxima do gráfico.

$longueur=200;

Para criar os gráficos em colunas devemos trabalhar com uma coluna para cada opção da enquete, essa coluna será calculada através do total de votos da opção multiplicado pelo total geral de todas as opções, como a largura do gráfico será delimitada, divida a largura do gráfico pelo total de votos. Crie uma variável ($longueur) para cada opção da enquete essa variavel será a largura do grafico.

$longueur0=$enquete[0]*$longueur/$total;
$longueur1=$enquete[1]*$longueur/$total;
$longueur2=$enquete[2]*$longueur/$total;
$longueur3=$enquete[3]*$longueur/$total;

Como o numero com certeza ficou muito quebrado devemos arredondar utilizando a função round.

$longueur0=round($longueur0);
$longueur1=round($longueur1);
$longueur2=round($longueur2);
$longueur3=round($longueur3);

Crie uma nova variável ($pourcent), uma para cada opção da enquete, para pode calcular a porcentagem de cada opção e depois arredondá-las igual a anterior.

$pourcent0=100*$enquete[0]/$total; //Calcular porcentagem
$pourcent0=round($pourcent0,0); // Arredonda o a porcentagem

$pourcent1=100*$enquete[1]/$total;
$pourcent1=round($pourcent1,0);

$pourcent2=100*$enquete[2]/$total;
$pourcent2=round($pourcent2,0);

$pourcent3=100*$enquete[3]/$total;
$pourcent3=round($pourcent3,0);

Estamos na reta final. Crie uma nova tabela com 3 coluna e com 4 linhas uma linha para cada opção.
Na primeira coluna coloque a constante que armazena o nome da opção, lembre-se que ela esta no arquivo de configuração (config.php). Na segunda coluna coloque uma cor de sua preferência como fundo, e a largura dessa coluna coloque a variável que armazena a largura do gráfico ($longueur) . E na terceira coluna coloque o resultado em porcentagem que esta armazenado na variável $pourcent.

<table border=”0″>
<tr>
<td width=”80″><b><?php echo OPCAO1; ?></b></td>
<td width=”<?php echo $pourcent0;?>” bgcolor=”red”> </td>
<td> <?php echo “$pourcent0%”;?>
(<i><?php echo $enquete[0];?></i>)</td>
</tr></table>
<table border=”0″>
<tr>
<td width=”80″><b><?php echo OPCAO2; ?></b></td>
<td width=”<?php echo $pourcent1;?>” bgcolor=”green”> </td>
<td> <?php echo “$pourcent1%”;?>
(<i><?php echo $enquete[1];?></i>)</td>
</tr></table>
<table border=”0″>
<tr>
<td width=”80″><b><?php echo OPCAO3; ?></b></td>
<td width=”<?php echo $pourcent2;?>” bgcolor=”black”> </td>
<td> <?php echo “$pourcent2%”;?>
(<i><?php echo $enquete[2];?></i>)</td>
</tr></table>
<table border=”0″>
<tr>
<td width=”80″><b><?php echo OPCAO4; ?></b></td>
<td width=”<?php echo $pourcent3;?>” bgcolor=”#990000″> </td>
<td> <?php echo “$pourcent3%”;?>
(<i><?php echo $enquete[3];?></i>)</td>
</tr>
</table>
Ver arquivos utilizados para constuir esse sistemas:
index.php | config.php | resultado.php | contar_votos.php
Qualquer comentário que vocês deixarem será bem vindo. Deixem seus pedidos de tutorias para as próximas colunas clicando aqui
Autor: Marcelo Souza Ramos - Colunista Dreamweaver do Portal MXSTUDIO
Visite meu blog www.marceloramos.blog.br e qualquer dúvida envie um e-mail para marcelo@marceoramos.blog.br

0 comentários: