maicon_m 0 Denunciar post Postado Agosto 11, 2007 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
ScornInPC 1 Denunciar post Postado Agosto 12, 2007 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
roadie666 0 Denunciar post Postado Setembro 4, 2007 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
Bruno Capella 7 Denunciar post Postado Setembro 4, 2007 muito bomparabens.. :) Compartilhar este post Link para o post Compartilhar em outros sites
maicon_m 0 Denunciar post Postado Setembro 14, 2007 realmente roadie666 tava faltando o calcula.php.Valeu por avisar \m/ Compartilhar este post Link para o post Compartilhar em outros sites
_M!K0L_ 1 Denunciar post Postado Novembro 17, 2007 funcionou certinho parabens .. :D Compartilhar este post Link para o post Compartilhar em outros sites
Mcliano 0 Denunciar post Postado Abril 6, 2008 Código muito bom, parabéns, testado e aprovado http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
yuriarrua 0 Denunciar post Postado Agosto 20, 2008 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
yuriarrua 0 Denunciar post Postado Agosto 20, 2008 Mederador se puder apagar este post eu agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
Vigaku 0 Denunciar post Postado Fevereiro 1, 2009 Desculpe a ignorancia, Como eu faço para por no meu Banco de Dados? Compartilhar este post Link para o post Compartilhar em outros sites
WellingtonSG 0 Denunciar post Postado Fevereiro 1, 2009 É só editar o arquivo db.php Compartilhar este post Link para o post Compartilhar em outros sites
Vigaku 0 Denunciar post Postado Fevereiro 3, 2009 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
Vigaku 0 Denunciar post Postado Fevereiro 7, 2009 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