J_Alvares 0 Denunciar post Postado Julho 24, 2005 O enquete está em flash e possui 3 arquivos PHP´s, vamos lá me ajudem nas idéias, rs: 1) CONNECT.PHP <?php/* Arquivo que fará a conexão com o seu banco de dados */$DBhost = "localhost"; // nome do host (geralmente sempre é este gerado pelos servidores)$DBuser = "blablabla"; // nome do usuário $DBpass = "blablabla"; // senha do banco de dados$DBName = "blablabla"; // nome da base de dados // Nome da tabela que estará usando$table = "blablabla"; // está de acordo com o sql de criação da table... // se alterar aqui, altere o nome da tabela tb.... // Conexão e seleção da base de dados.... $Connect = mysql_connect($DBhost,$DBuser,$DBpass);mysql_select_db($DBName, $Connect);?> 2)VOTE.PHP <?phprequire('connect.php');$escolha = $HTTP_GET_VARS[escolha];$coluna = "opt".$escolha;// Checa e cria um cookie para evitar que a pessoa vote novamente....$varName = "enquete";$CookieCheck = $HTTP_COOKIE_VARS[$varName];if ($CookieCheck != "") { // Uma mensagem que será enviada ao Flash dizendo que a pessoa já votou..... $MessageToUser = "Você já votou!";} else { $MessageToUser = "Obrigado por ter votado!"; // Cria o Cookie setcookie ("enquete", "Voted", time()+30240000, "/"); // Só adiciona os valores na tabela se a pessoa não tiver votado.... $VoteNow = mysql_query("UPDATE $table SET $coluna = $coluna + 1", $Connect);} // REcupera os novos valores da tabela após votação..... $SelectResults = mysql_query("SELECT opt1, opt2, opt3, opt4 FROM $table", $Connect); // Coloca os valores em uma array.... $updatedVotes = mysql_fetch_row($SelectResults);// Envia para o Flash os valores do banco de dados......print "&OptNew1=$updatedVotes[0]&OptNew2=$updatedVotes[1]&OptNew3=$updatedVotes[2]&OptNew4=$updatedVotes[3]&info=<b>$MessageToUser</b>";?> 3)RESULTS.PHP <?phprequire('connect.php');$escolha = $HTTP_GET_VARS[escolha];$coluna = "opt".$escolha;// Check and Set Cookie// If the cookie has already been set - The user has already voted and their new vote will not count.// We use the PollID plus the word 'poll' to identify the cookie.// You may want to check your browsers cache and review the cookie that is set when your using it. $MessageToUser = "Resultados...."; // Select Updated Current Values from Database so we can send them back to Flash. $SelectResults = mysql_query("SELECT opt1, opt2, opt3, opt4 FROM $table", $Connect); // Assign results to an array. $updatedVotes = mysql_fetch_row($SelectResults);// Print out results to flash.print "&OptNew1=$updatedVotes[0]&OptNew2=$updatedVotes[1]&OptNew3=$updatedVotes[2]&OptNew4=$updatedVotes[3]&info=<b>$MessageToUser</b>";?> E no flash o botão vote ficou assim: on (press) { objsend = new LoadVars(); objload = new LoadVars(); objsend.escolha = this.valor; if (valor == 0) { this.info.text = "Escolha uma das opções"; } else { this.info.text = ""; // troque o caminho por onde esta gravado o arquivo vote.php objsend.sendAndLoad("http://local/vote.php",objload,"GET"); this.info.text = "Carregando dados..."; objload.onLoad = function (){ gotoAndPlay(10); } }} Taí os scripts do php e flash, qdo vai rodar aparece NaN, ah....tb já criei a tabela com o seguinte comando: CREATE TABLE `enquete` ( `enquete_id` int(11) NOT NULL auto_increment, `opt1` int(11) default '0', `opt2` int(11) default '0', `opt3` int(11) default '0', `opt4` int(11) default '0', PRIMARY KEY (`enquete_id`)) TYPE=MyISAM AUTO_INCREMENT=3; Me ajudem nessa por favor J_Alvares ------------------------------------------------------------------------------------------ O segredo do sucesso eu não sei, mas a do fracasso é tentar agradar a todos! Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Julho 24, 2005 Você se confundio um pouco na parte de checar o cookie, sem falar que não pode colocar $_COOKIE[$variavel], e sim $_COOKIE[variavel] PHP [*]<?php [*]require('connect.php'); [*] [*]$escolha = $HTTP_GET_VARS[escolha]; [*]$coluna = "opt".$escolha; [*] [*]// Checa e cria um cookie para evitar que a pessoa vote novamente.... [*] [*]if ($_COOKIE["enquete"] != "") { [*]// Uma mensagem que será enviada ao Flash dizendo que a pessoa já votou..... [*]$MessageToUser = "Você já votou!"; [*] [*]} else { [*]$MessageToUser = "Obrigado por ter votado!"; [*]// Cria o Cookie [*]setcookie ("enquete", "Voted", time()+3600*24, "/"); // 24 Horas = 1 Dia [*] [*]// Só adiciona os valores na tabela se a pessoa não tiver votado.... [*]$VoteNow = mysql_query("UPDATE $table SET $coluna = $coluna + 1", $Connect); [*]} [*]// REcupera os novos valores da tabela após votação..... [*]$SelectResults = mysql_query("SELECT opt1, opt2, opt3, opt4 FROM $table", $Connect); [*] [*]// Coloca os valores em uma array.... [*]$updatedVotes = mysql_fetch_row($SelectResults); [*] [*]// Envia para o Flash os valores do banco de dados...... [*]print "&OptNew1=$updatedVotes[0]&OptNew2=$updatedVotes[1]&OptNew3=$updatedVotes[2]&OptNew4=$updatedVotes[3]&info=<b>$MessageToUser</b>"; [*] [*]?> Fiz algumas alterações, testa ai. :D Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Julho 24, 2005 Isso que o AAlves disse é valido. Voce pode gravar o ip no BD. Da mesma maneira que você faz para ver os usuarios que estão on-line em um sistema. Olha um script que fiz, que da o nome e o níck de quem está on-line no sistema. PHP [*]<? [*]$ip = $_SERVER['REMOTE_ADDR']; [*]$time = time(); [*]$timeout = time ()-500; [*]$usuario = $_SESSION["login2"]; [*] [*]$dados = mysql_query("SELECT * FROM login WHERE ip = '$ip'"); [*]$linhas = mysql_num_rows($dados); [*] [*]if ($linhas == ""){ [*]$online = mysql_query("UPDATE login SET status = 'on-line', time = '$time' , ip = '$ip' WHERE usuario = '$usuario'"); [*]}else{ [*]$online = mysql_query("UPDATE login SET status = 'on-line', time = '$time' WHERE ip = '$ip'"); [*]$offline = mysql_query("UPDATE login SET status = 'off-line', ip = '' WHERE time < '$timeout'"); [*]} [*] [*] [*]//============================================================================// [*]// MOSTRA O STATUS [*] [*]?> [*]<table width="95%" border="0" align="right" cellpadding="0" cellspacing="0"> [*]<tr> [*]<td height="21"><font color="#006600" size="1"> <b>On-line:</b></font></td> [*]</tr> [*]<? [*] [*] [*]$online = mysql_query("SELECT * FROM login WHERE status = 'on-line'"); [*] [*]while ($on = mysql_fetch_array($online)){ [*]$nome = $on["nome"]; [*]$nick = $on["usuario"]; [*]?> [*]<tr> [*]<td height="21"><font size="1"><?=$nome?> | <?=$nick?></font></td> [*]</tr> [*]<? [*]} [*] [*] [*]$offline = mysql_query("SELECT * FROM login WHERE status = 'off-line'"); [*]$toff = mysql_num_rows($offline); [*] [*]if ($toff > 0){ [*]?> [*]<tr> [*]<td height="21"><font color="#FF0000" size="1"><b>Off-line:</b></font></td> [*]</tr> [*]<? [*] [*] [*]while ($off = mysql_fetch_array($offline)){ [*]$nome2 = $off["nome"]; [*]$nick2 = $off["usuario"]; [*] [*] [*]?> [*]<tr> [*]<td height="21"><font size="1"><?=$nome2?> | <?=$nick2?></font></td> [*]</tr> [*]<? [*]} [*]} [*]?> [*]</table> Se quiser tirar como base, fique avontade. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Julho 24, 2005 mesmo com ip da pra trocar quem usa discada sempre ta com um ip diferente e mesmo banda larga tbm da pra trocar o ip e nao use $HTTP_GET_VARS use $_GET $_COOKIE[variavel] e falta as aspas $_COOKIE["variavel"] Compartilhar este post Link para o post Compartilhar em outros sites
J_Alvares 0 Denunciar post Postado Julho 24, 2005 Então no mais, vcs acham que o erro está na variável? A respeito do kra apagar o cookie, beleza, mas o enquete não é tão importante assim, creio que a maioria dos internautas não sabem muito isso, é mais quem é programador mesmo. Mas valeu, vou fazer alguns testes aqui com estes exemplos e valeu mesmo!Ao Fabyo, nick171 e AAlves valeu pela força!J_Alvares----------------------------------------------------------------------------------------"Não sei o segredo do sucesso, mas a do fracasso é tentar agradar a todos" Compartilhar este post Link para o post Compartilhar em outros sites
J_Alvares 0 Denunciar post Postado Julho 24, 2005 Ainda não deu certo, fiz as alterações e ainda continua dando o mesmo erro, ainda aparece NaN. Veja como ficou: <?php require('connect.php'); $escolha = $HTTP_GET_VARS["escolha"]; // Aqui já fiz o teste com ("") e sem ("")$coluna = "opt".$escolha; // Checa e cria um cookie para evitar que a pessoa vote novamente.... if ($_COOKIE["enquete"] != "") { // Uma mensagem que será enviada ao Flash dizendo que a pessoa já votou..... $MessageToUser = "Você já votou!"; } else { $MessageToUser = "Obrigado por ter votado!"; // Cria o Cookie setcookie ("enquete", "Voted", time()+3600*24, "/"); // 24 Horas = 1 Dia // Só adiciona os valores na tabela se a pessoa não tiver votado.... $VoteNow = mysql_query("UPDATE $table SET $coluna = $coluna + 1", $Connect); } // REcupera os novos valores da tabela após votação..... $SelectResults = mysql_query("SELECT opt1, opt2, opt3, opt4 FROM $table", $Connect); // Coloca os valores em uma array.... $updatedVotes = mysql_fetch_row($SelectResults); // Envia para o Flash os valores do banco de dados...... print "&OptNew1=$updatedVotes[0]&OptNew2=$updatedVotes[1]&OptNew3=$updatedVotes[2]&OptNew4=$updatedVotes[3]&info=<b>$MessageToUser</b>"; ?> Compartilhar este post Link para o post Compartilhar em outros sites
nolfolk 0 Denunciar post Postado Julho 24, 2005 cara, tah aparecendo NaN no Flash ????se sim pode ser problema lah no flash msmo :P Compartilhar este post Link para o post Compartilhar em outros sites
raphaeltsr 0 Denunciar post Postado Julho 24, 2005 Disseram que cookies não seria a melhor saida e retrucaram sobre gravar o ip no banco de dados. Então, qual seria a melhor saida? Os dois? Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Julho 24, 2005 mesmo com ip da pra trocar quem usa discada sempre ta com um ip diferente e mesmo banda larga tbm da pra trocar o ip e nao use $HTTP_GET_VARS use $_GET $_COOKIE[variavel] e falta as aspas $_COOKIE["variavel"] <{POST_SNAPBACK}> A mais o cara precisa ser muito idiota pra ficar conectando e desconectando da internet varias vezes só pra contar mais votos <_< Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Julho 24, 2005 cara aqui nao se esta falando quem eh ou nao idiota e sim um sistema seguro onde so uma pessoa vota uma vez, se você fizer uma enquete e dizer para o usuario que ele so pode votar uma vez so por curiosidade ou farra ele vai querer bular isso e dai sua enquete vai por agua abaixo porque pra que serve uma enquete se o resultado dela nao eh concreto? e outra coisa nao precisa ficar desconectando pra mudar de ip da pra fazer isso conectado mesmo quer um sistema realmente seguro onde 1 pessoa so vote uma vez? entao faça a enquete para usuarios cadastrados de resto nao tem como você bloquear e so vai perder tempo Compartilhar este post Link para o post Compartilhar em outros sites
J_Alvares 0 Denunciar post Postado Julho 24, 2005 Putz, o pior que agora estou com dúvida, não estou querendo mudar o script todo para pegar por ip e nem por cadastro, eu quero por cookie mesmo, só que preciso saber se os scripts que postei em PHP estão na lógica certa, pois se estiver, vou dar uma estudada então nos actionscript do Flash. Teria alguém como dar uma última verificada boa por gentileza, eu tava reparando e observei que tem uma galera muito grande precisando de uma enquente que funcione com pelo menos com cookie, se conseguirmos irei publicar todos os scripts, inclusive a do flash para ajudar outros programadores ae....!!! Mas me ajudem primeiro, to quase!J_Alvares----------------------------------------------------------------------------------------"Não sei o segredo do sucesso, mas a do fracasso é tentar agradar a todos". Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Julho 25, 2005 Fabyo Ai, Fabyo foi mal ai se você achou ruim oq falei mas não foi por ofensa a niguem cara. J_Alvares E como ele disse, se você quiser uma enquete segura mesmo, é só com cadastro, porque cookies espiram, e podem ser desabilitados, session expira assim que o navegador fecha, e ip se muda, só o dados do usuário que não iriam mudar. Bom, se você quiser meu sistema de votação é este. Só que ele é daqueles que você vota em um arquivo do site. Tabela de arquivos PHP [*]$criaarquivos = mysql_query("CREATE TABLE IF NOT EXISTS `arquivos` ( [*]`id` int(11) NOT NULL auto_increment, [*]`arquivo` varchar(50) NOT NULL default '', [*]`url` varchar(150) NOT NULL default '', [*]`imagem` varchar(150) NOT NULL default '', [*]`tamanho1` varchar(20) NOT NULL default '', [*]`tamanho2` varchar(30) NOT NULL default '', [*]`categoria` varchar(15) NOT NULL default '', [*]`plataforma` varchar(35) NOT NULL default '', [*]`descricaor` text NOT NULL default '', [*]`descricao` text NOT NULL default '', [*]`visto` int(11) NOT NULL default '', [*]`cliques` int(11) NOT NULL default '', [*]`data` varchar(35) NOT NULL default '', [*]`notatotal` int(11) NOT NULL default '', [*]`totaldevotos` int(11) NOT NULL default '', [*]`porcentagem` varchar(35) NOT NULL default '50', [*] [*]PRIMARY KEY (`id`) [*])")or die (mysql_error()); voto.php PHP [*]<?php [*]include "config.php"; [*]$id = $_GET["id"]; [*]$nota = $_POST["nota"]; [*] [*] [*]$dados = mysql_query("SELECT * FROM arquivos WHERE id = '$id'"); [*]$votos = mysql_fetch_row($dados); [*] [*]setcookie("votos",$id,time()+3600); [*]if (!$_COOKIE["votos"]){ [*]$votos[13] += $nota; [*]$votos[14] += 1; [*] [*]$atualiza = mysql_query("UPDATE arquivos SET notatotal = '$votos[13]', totaldevotos = '$votos[14]' WHERE id = '$id'"); [*] [*]if ($atualiza == 1){ [*]$dados = mysql_query("SELECT * FROM arquivos WHERE id = '$id'"); [*]$calcula = mysql_fetch_row($dados); [*] [*]$porcentagem = ($calcula[13]/$calcula[14]); [*] [*]$porcentagem = substr($porcentagem, 0, 4); [*] [*] [*]$atualiza2 = mysql_query("UPDATE arquivos SET porcentagem = '$porcentagem' WHERE id = '$id'"); [*] [*]if ($atualiza2 == 1){ [*]?> [*]<html> [*]<head> [*]<title>Aguarde...</title> [*]<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head> [*]<body bgcolor="#f2f2f2"> [*]<table width='100%' height='85%' align='center'> [*]<tr> [*]<td valign='middle'> [*]<div align="center"><img src="<?=$endsite?>imagens/votado.gif"><br> [*]</div> [*]</td> [*]</tr> [*]</table> [*]</body> [*]</html> [*]<? [*]}else{ [*] echo mysql_error(); [*]} [*]}else{ [*] echo mysql_error(); [*]} [*] [*]}else{ [*]?> [*]<html> [*]<head> [*]<title>Aguarde...</title> [*]<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head> [*]<body bgcolor="#f2f2f2"> [*]<table width='100%' height='85%' align='center'> [*]<tr> [*]<td valign='middle'> [*]<div align="center"><img src="<?=$endsite?>imagens/nvotado.gif"><br> [*]</div> [*]</td> [*]</tr> [*]</table> [*]</body> [*]</html> [*]<? [*]} [*]?> Trecho do formulário PHP [*]<form method="post" action="voto.php?id=<?=$id?>" target="_blank"> [*]<table width="100%" border="0" cellspacing="0" cellpadding="0"> [*]<tr> [*]<td width="42%" height="31"><select name="nota" id="nota" class="busca2"> [*]<option value="100">10 Estrelas [*]<option value="90">9 Estrelas [*]<option value="80">8 Estrelas [*]<option value="70">7 Estrelas [*]<option value="60">6 Estrelas [*]<option value="50">5 Estrelas [*]<option value="40">4 Estrelas [*]<option value="30">3 Estrelas [*]<option value="20">2 Estrelas [*]<option value="10">1 Estrela [*]</select> [*]</td> [*]<td width="58%"> [*]<input name="imageField2" type="image" src="<?=$endsite?>/imagens/votar.jpg" width="56" height="27" border="0"> [*]</td> [*]</tr> [*]</table> [*]</form> Faz a barrinha de porcentagem (aquela que carrega de acordo com a porcentagem) PHP [*]<table width="123" border="0" align="left" cellpadding="0" cellspacing="0"> [*]<tr> [*]<td height="15" background="<?=$endsite?>imagens/estrelas_off.gif"><table width=" <?=$dporcentagem?>%" border="0" cellspacing="0" cellpadding="0"> [*]<tr> [*]<td height="15" background="<?=$endsite?>imagens/estrelas_on.gif"></td> [*]</tr> [*]</table> estrela_on é uma imagem das estrelas todas preenchidas e estrela off, das estrelas sem preenchimento, você pode fazer uma barra e colocar lá. Qualuqer dúvida é só falar Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Julho 25, 2005 nick171, nao levei a mal nao, tranquilo Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Julho 25, 2005 Fmz então!!! :D Ai J_Alvares se isso for util para você fica avontade cara Compartilhar este post Link para o post Compartilhar em outros sites
J_Alvares 0 Denunciar post Postado Julho 25, 2005 Valeu, obrigado pela ajuda! Vou fazer uns testes aqui1J_AlvaresPodem fechar o tópico Compartilhar este post Link para o post Compartilhar em outros sites