Criar um script de votações - PHP - Portugal-a-Programar
Criar um script de votações
Por RicardoC, 3 de Janeiro de 2008 em PHP
Eu queria pedir ajuda para criar um script de votação em que só se podia votar uma vez, seja em javascript ou php e que fosse até uma data limite.
Não precisa de ser com base de dados
Para esse tipo de scripts não recomendo nada JavaScript, mas sim PHP ou linguagem semelhante (leia-se: linguagem web server-side).
Mas esta tua "dúvida" não é propriamente uma dúvida em concreto, parece mais um pedido de ajuda de quem não percebe nada de programação e não sabe por onde lhe pegar. Se é esse o caso, recomenda que aprendas alguma coisa e exponhas as tuas dúvidas porque ninguém vai fazer os teus trabalhos por ti (a não ser que pagues obviamente). Se eu estiver errado, então começa por apresentar dúvidas em concreto para o pessoal te ajudar.
E para te ajudar de uma forma que nos te possamos ajudar:
1) Tens algum conhecimento em PHP e/ou linguagem do género?
2) Tens alguma noção de como é que se faz o que tu queres ou não fazes ideia por onde começar?
3) Preferes guardar os dados em base de dados ou ficheiro de texto?
PHP não sei nada, a votação é para breve é apenas para o pessoal votar até uma certa data, os dados é para aparecerem em estilo barra e percentagem, cada vez que uma pessoa faça refresh/F5 que não possa votar de novo porque já tinha votado, ou seja, que bloqueie a sua vontade de votar uma segunda vez.
Noção por onde começar ? eu vi este código fiz tudo como tem que ser e tal, mas o problema é o de cima, que quando faço refresh a pessoa pode votar novamente, ou seja votar mais que uma vez. http://www.w3schools.com/php/php_ajax_poll.asp
Guardar os dados em ficheiro de texto.
JavaScript nao e so client-side tb pode ser server-side.
Para votar o user precisa de fazer login ?
Se sim na base de dados basta pores mais um campo na tabela do user para saberes se ele ja votou ou nao.
Se nao so estou a ver uma maneira e eh com cookies, imagina k a votaçao eh sobre o livro BBB, antes de inserires os dados para a votaçao
vais ver se o user tem algum cookie chamdo BBB se tiver eh pq ja votou e entao nao poes as cenas para ele votar, se nao tiver esse cookie
apresentas os dados e quando ele votar fazes o tal cookie. Isto tem eh um grande problema k eh o user pode apagar os cookies e entao
vai poder votar de novo.
Se nao for necessario fazer login para votar nao tou a ver mais nenhuma maneira sem ser com cookies, mas mm com cookies existe o problema k disse a cima.
Eu já tinha lido o tópico e também tinha ficado com a sensação do que ele queria é ajax. Tudo bem, então dado esse tutorial da w3schools, agora tens de criar um ficheiro de PHP que receba o voto e o guarde num txt no servidor. Esse ficheiro PHP também deve saber o endereço IP da pessoa com a instrução
e guardá-la noutro txt.
Já deves estar a ver a ideia. Antes de decidires se vaz registar um voto ou mostrar os resultados consultas esta lista e se o ip já votou, mostras os resultados senao, mostras as opções para votar, é essa a lógica.
Pois mas se o user tiver um IP dinamico vai sempre poder votar de novo.
Não há um sistema perfeito... e já agora que se toca nisto outra vez, terias de ter um processo a correr para ao fim de 24 horas ou ao fim de uma poll ele poder votar outra vez.
Pessoal, vocês estão a confundi-lo. Vamos por partes:
-> Este tópico deveria estar na secção de PHP ou semelhante, como disse o Nazgulled.
-> Imaginando que isto já está na secção de PHP, aqui fica o meu "contributo".
Levando a ideia ao mais básico, vais ter 2 páginas: 1 para votar, outra para processar o voto. Aqui vou escolher um ficheiro para usar como base de dados.
A página para votar resume-se a algo deste género:
<input type="radio" name="escolha" value="1" /> Eu penso assim.
<input type="radio" name="escolha" value="2" /> Eu penso assado.
<input type="radio" name="escolha" value="3" /> Eu não penso.
Explicação do que usei: http://www.w3schools.com/html/html_forms.asp
A página para processar o voto vai ser algo assim:
$votos = array('1' => 7,
'2' => 9,
'3' => 0); # A variável $votos vai ser um array (uma lista) em que o '1' (chave) vai ser o atributo name de cada uma das radioboxes.
# Eu defini a variável desta maneira, mas esta variável vai ser definida com a leitura do ficheiro com os dados.
# Para controlar se o utilizador já votou, vamos usar um cookie com a data do voto dele. Não é o método mais eficiente, nem lá perto, mas serve para exemplo.
if(!empty($_COOKIE['DataDeVoto'])){ # O cookie existe e tem um valor qualquer. Já votou!
echo "Já votou nesta votação.";
exit; # Já não precisamos de fazer mais nada neste caso, vamos acabar o script.
# Vamos então processar o voto dele.
if(empty($_POST['escolha']) # Ele não está a enviar o voto mas sim outra coisa qualquer...
|| !array_key_exists($_POST['escolha'])){ # ... ou então enviou um voto de uma opção que não existe. Vai-te embora!
echo "Houve um erro com o seu pedido.<br /><br />Por favor, <a href='votar.html'>vote novamente</a>.";