Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 opcao0 é 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.
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
muito bomparabens.. :)
realmente roadie666 tava faltando o calcula.php.Valeu por avisar \m/
funcionou certinho
parabens
..
:D
Código muito bom, parabéns, testado e aprovado http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
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....
Mederador se puder apagar este post eu agradeço.
Desculpe a ignorancia,
Como eu faço para por no meu Banco de Dados?
É só editar o arquivo db.php
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
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
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