Ir para conteúdo

POWERED BY:

Arquivado

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

maicon_m

Enquete

Recommended Posts

Sempre que tenho problemas com meus códigos acesso o fórum e o pessoal sempre ajuda. Como ainda sei muito pouco de php e mysql nunca consigo retribuir a altura ajudando a responder a dúvida dos outros.

 

Esses tempos precisei fazer uma enquete e procurei pela internet um tutorial pra ajudar. Nenhum foi de grande valia, eram muito obscuros tanto é que tive que espremer o cérebro por conta e consegui!

 

Sendo assim vou postar um tutorial (se assim entenderem) para fazer enquete totalmente personalizável em que o usuário pode colocar duas ou três opções de resposta à pergunta.

 

 

tabela enquete:

 

id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY;

opcao01 VARCHAR (255) NOT NULL,

opcao01_n INT(11),

opcao02 VARCHAR (255) NOT NULL,

opcao02_n INT(11),

opcao03 VARCHAR (255),

opcao03_n INT(11),

total INT(11),

pergunta VARCHAR(255) NOT NULL

 

onde tem escrito opcao*0 é a resposta e vejam que a opcao03 é null pois se o cara quiser só colocar duas opções não dá problema. Onde tem opcao0*_n é onde ele vai somar quantos votos teve a opção.

 

db.php

<?php	$hostname = "localhost";	$usuario = "usuario";	$senha = "senha";	$db = "bancodedados";	@mysql_connect($hostname, $usuario, $senha) or trigger_error(mysql_error(),E_USER_ERROR);	mysql_select_db($db);?>

cadastro_enquete.php

 

<?phpinclude_once("db.php");if (isset($_POST['enviar']))	{		mysql_query("INSERT INTO enquete (pergunta, opcao01, opcao02, opcao03) VALUES('".mysql_real_escape_string($_POST['pergunta'])."','".mysql_real_escape_string($_POST['opcao01'])."', '".mysql_real_escape_string($_POST['opcao02'])."', '".mysql_real_escape_string($_POST['opcao03'])."')") or die(mysql_error());	}?><form action="<?php $_SERVER['PHP_SELF']?>" method="post">Pergunta:<input type="text" name="pergunta" size="50"/><br />Opção 01:<input type="text" name="opcao01" /><br />Opção 02:<input type="text" name="opcao02" /><br />Opção 03:<input type="text" name="opcao03" /><br /><br /><input type="submit" name="enviar" value="Cadastrar" /><input type="reset" /></form>

não coloquei a formatação mas o código tá ai. Nessa página o usuário cadastra a pergunta e opções. O código dispensa explicações.

 

Agora pra mostra a enquete

 

enquete.php

<?phpinclude_once("db.php");	$busca = mysql_query("SELECT * FROM enquete order by id desc");	$linha = mysql_fetch_array($busca);	echo "<form style='margin:0;' action='calcula.php' method='post'>";		echo "<b>{$linha['pergunta']}</b><br>";	echo "<input style='background:#FFf;' type='radio' name='opcao' value='opcao01'>{$linha['opcao01']}<br>";	echo "<input style='background:#FFf;' type='radio' name='opcao' value='opcao02'>{$linha['opcao02']}<br>";	if ($linha['opcao03'] != '')	{		echo "<input style='background:#FFf;' type='radio' name='opcao' value='opcao03'>{$linha['opcao03']}<br><br>";	}	echo "<input type='submit' value='Votar' name='enviar' class='submit' )>";	echo "</form>";	?>

calcula.php

Faz o update

 

<?php ob_start() ?><?phpinclude_once("db.php");if (isset($_POST['enviar']))	{		$opcao = $_POST['opcao'];		if ($opcao!='')		{			$busca = mysql_query("SELECT * FROM enquete order by id desc");			$linha = mysql_fetch_array($busca);			$id = $linha['id'];			$total = $linha['total'];			$total = $total + 1;			mysql_query("UPDATE enquete SET total=$total where id = $id") or die (mysql_error());			$total = $linha['total'];			switch ($opcao)			{				case "opcao01":				$antes = $linha['opcao01_n'];				$total01 = $antes + 1;				mysql_query("UPDATE enquete SET opcao01_n=$total01 where id = $id") or die(mysql_error());				break;				case "opcao02":				$antes = $linha['opcao02_n'];				$total02 = $antes + 1;				mysql_query("UPDATE enquete SET opcao02_n=$total02  where id = $id") or die(mysql_error());				break;				case "opcao03":				$antes = $linha['opcao03_n'];				$total03 = $antes + 1;				mysql_query("UPDATE enquete SET opcao03_n=$total03 	  where id = $id") or die(mysql_error());				break;						}			header ("Location:resultado.php");		} else {		echo "Escolha uma opção antes de votar!";		header("Location:home.php");		}	}?><?php ob_end_flush() ?>

resultado.php

 

<?php	echo "<h2>Resultado</h2><br>";include_once("db.php");	$busca = mysql_query("SELECT * FROM enquete order by id desc");	$linha = mysql_fetch_array($busca);	$total = $linha['total'];	if ($total !=0)	{	$opcao01 = floor($linha['opcao01_n'] / $total * 100);	$opcao02 = floor($linha['opcao02_n'] / $total * 100);	$opcao03 = floor($linha['opcao03_n'] / $total * 100);	$largura01 = 100 - $opcao01;	}		echo "<div style='position:relative; float:left; height:auto; width:auto; margin:10px; padding:5px; border: 1px solid #CCC; background: url(imagens/stripes_.gif)'>";		echo "<h6 style='text-align:left;'>{$linha['opcao01']}</h6>";	echo "<div style='position:relative; float:left; height:10px; width:{$opcao01}px; background: #ff6600;'></div>";		echo "<p class='empresa'>".$opcao01 . "%</p>";	echo "<h6 style='text-align:left;'>{$linha['opcao02']}</h6>";	echo "<div style='position:relative; float:left; height:10px; width:{$opcao02}px; background:#ff6600;'></div>";			echo "<p class='empresa'>".$opcao02 . "%</p>";		if ($linha['opcao03'] != ''){		echo "<h6 style='text-align:left;'>{$linha['opcao03']}</h6>";		echo "<div style='position:relative; float:left; height:10px; width:{$opcao03}px; background:#ff6600;'></div>";		echo "<p class='empresa'>".$opcao03 . "%</p>";		}		echo "<br><p>Total de votos: ".$total."</p>";	echo "</div>";		echo "<p><a href=\"java script:history.go(-1)\">Voltar</a></p>";	?>

Como perceberam não expliquei linha por linha pois o intuito é de ser material orientador e não pra marmanjo preguiçoso copiar e colar. Até porque isso é código que qualquer iniciante TÊM que saber o que significa.

 

Se tiverem dicas pra melhorar estamos ai.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

uiaaaaa muito bom ^^

 

to movendo para laboratório de scripts OK?

 

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

guri estava vendo este seu código e acho q faltou um pedaço dele pra ficar mais completo....a parte que faz o upgrade das tabelas no bancoou seja esta parte aqui "calcula.php" pelo que eu vi.....se tiver ela ainda posta ae pra gente....[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

funcionou certinho

parabens

..

 

:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito boa a sua enquete extamente o que eu estava procurando... apenas adicionei mais 4 opcoes de resposta e ficou ideal para o que eu estava procurando.

 

meus parabens e muito obrigado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é não.....

Se fosse só isso td bem,

Qndo vou fazer uma enquete, olha oque aparece

 

Table 'xxx_xxx.enquete' doesn't exist

 

xxx é meu Banco de Dados

 

Como eu faço o arquivo SQL para instalar lá? Porq eu não sei faze-lo, não sei as sintax direito

Compartilhar este post


Link para o post
Compartilhar em outros sites

E outra,

Preciso de uma enquete que MANTEM as anteriores, no caso elas teriam um ID certo? Algume sabe onde tem esse script, ainda sou novato em php e não consigo fazer uma do zero. valew

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.