Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

Enquete Retorno

Recommended Posts

Ola pessoal.

 

Estou fazendo um enquete co php + mysql e ja estou na fase final.

Bom, no banco eu gravo duas coisas: a id da enquete e a escoha feita pelo internauta.

Dai agora, tem la na tabela.

id_enquete = 1
escoha  = A 

id_enquete = 1
escoha  = B 

id_enquete = 1
escoha  = A 

id_enquete = 1
escoha  = C
Eu agora preciso apurar quantas vezes a opção a foi votada e dar retorno assim:>

 

A opção A foi votada tantas vezes>

A opção B foi votada tantas vezes>

A opção C foi votada tantas vezes>

 

Como faz isso.

 

Eis até onde fui:

<?php 
include("conecta.php"); 
if ($acao=="votar"){
$voto = mysql_query("insert into enquetes_escolhas (id_enquete,escolha) values ('$id_enquete','$escolha')");
if (!$voto) {echo "Teu voto não foi computado<br>Tente de novo<br><a href='java script:closewindow()'>Fechar Janela</a>"; }
else {
$conta = mysql_query("select COUNT(escolha) from enquetes_escolhas where id_enquete=$id_enquete");
$busca = mysql_query("select escolha from enquetes_escolhas where id_enquete=$id_enquete");
while(list($escolha) = mysql_fetch_row($busca)){
echo $escolha;
echo "<br>";
											   }
	 }
				   }
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

É bem provável que exista uma query para fazer isso de uma vez, mas eu não sei.. Então proponho o seguinte:

 

Rode essa query:

SELECT * FROM `enquetes_escolhas` WHERE `id_enquete` = {variavel} ORDER BY `escolha` ASC

 

Depois, dentro do while, faça o seguinte:

while($dados = mysql_fetch_row($busca)) {
$resultados[$dados[0]] += 1;
}

Isso vai criar um array ($resultados) contendo os votos de cada opção com um formato parecido com esse:

 

$resultados['A'] = 2;

$resultados['B'] = 3;

$resultados['C'] = 5;

$resultados['D'] = 1;

 

Não é a melhor solução mas creio que resolva o seu problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.