slotos 3 Denunciar post Postado Abril 9, 2015 Galera boa noite, Alguém poderia me ajudar a debugar esse código. Estou com o seguinte problema Onde está em vermelho se eu remover o while e deixar a $id setada como 1 e a $id2 setada como 2. O sistema de votação inclui o voto no id correto, porem se eu definar ao load da pagina um id random, na hora de votar as vezes o voto vai pro outro id. O que fiz de errado? <?phprequire 'class/conexao.php';?><!DOCTYPE html><html><head><meta charset="utf-8"><title>votação</title><link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"><link rel="stylesheet" type="text/css" href="css/style.css"></head><body> <div class="container"> <div class="row"> <div class="col-md-12"> <h2>Votação</h2> </div> <div class="col-md-12"> <h3>Pergunta: Qual o colaborador candidato a talento 2015?</h3> </div> </div> <div class="row"> <?php$id = rand(1,2); $id2 = rand(1,2); //$id = 1; //$id2 =2; while ($id == $id2): $id2 = rand(1,2); endwhile; $consulta = $pdo->query("SELECT * FROM users WHERE id='$id'"); while ($linha = $consulta->fetch(PDO::FETCH_OBJ)) { $nome = $linha->nome; $votos = $linha->votos; $img = $linha->img; } if(isset($_POST['btn_vota1'])){ $votosUp = $votos + 1; $update = $pdo->prepare('UPDATE users SET votos = :votos WHERE id = :id'); $update->execute(array( ':id' => $id, ':votos' => $votosUp )); header('Location: index.php'); } ?> <div class="col-md-6"> <h2><?php echo $nome; ?></h2> <div style="background: url(<?php echo $img; ?>) no-repeat;" id="img1"></div><br /> <form method="post" action=""> <input type="submit" class="btn btn-success" name="btn_vota1" value="Votar"> <span class="spn-otal">Total de votos: <strong><?php echo $votos; ?></strong></span> </div> <?php $consulta = $pdo->query("SELECT * FROM users WHERE id='$id2'"); while ($linha = $consulta->fetch(PDO::FETCH_OBJ)) { $nome = $linha->nome; $votos = $linha->votos; $img = $linha->img; } if(isset($_POST['btn_vota2'])){ $votosUp = $votos + 1; $update = $pdo->prepare('UPDATE users SET votos = :votos WHERE id = :id'); $update->execute(array( ':id' => $id2, ':votos' => $votosUp )); header('Location: index.php'); } ?> <div class="col-md-6"> <h2><?php echo $nome; ?></h2> <div style="background: url(<?php echo $img; ?>) no-repeat;" id="img2"></div><br /> <input type="submit" class="btn btn-success" name="btn_vota2" value="Votar"> <span class="spn-otal">Total de votos: <strong><?php echo $votos; ?></strong></span> </form> </div> </div> </div><!--CONTAINER--></body></html> Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Abril 9, 2015 Se você só tem duas opções de id e quer garantir que eles sejam sempre diferentes basta sortear o primeiro, já que o segundo já estará resolvido também: $id = rand(1,2); $id2 = ($id == '1')?2:1; Compartilhar este post Link para o post Compartilhar em outros sites
slotos 3 Denunciar post Postado Abril 9, 2015 Não deu certo, deu o mesmo problema, o random do $id's não seria o problema, e eu teria que utilizar com while mesmo porque futuramente não irei deixar apenas 2 e sim varios id's para serem sorteados sem ser repetidos. Mas o problema mesmo eu acho que não fui muito claro, acabei lendo aqui o que escrevi e vi que faltou algo: Exemplo se eu deixar os $id's setados com valores fixos exemplo $id = 1; $id2 = 2; quando eu clico no botão votar respectivo a pessoa que eu desejo votar, o voto computa no id correto que eu votei. Porem se eu colocar para selecionar os id's randomicamente independente do meu modo com while ou com o seu com if, o voto as "vezes" vai para o id errado. Será que consegui explicar direito agora? haha Obrigado pelo retorno Pessoal peço uma ajuda de vocês Tenho o seguinte código Porém na linha 25 e 26 onde é sorteado os 2 $id's se eu definir os $id's fixo como por exemplo $id = 1; $id2 = 2; Quando eu clico em votar no respectivo botão que eu quero dar o voto o sistema computa o voto no id correto do voto escolhido. Porém... quando eu deixo o código como está com $id's randomicos ao clicar no botão do voto que desejo votar, as "vezes" o voto é computado no id correto e as vezes não... =(. Alguém sabe como tratar esse problema? Eu tinha criado um post anterior porém eu não consigo mais edita-lo e o script não ficou em code, algum mode se puder pode apagar. Desde já agradeço. <?php require 'class/conexao.php'; ?> <!DOCTYPE html><html><head><meta charset="utf-8"><title>votação</title><link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"><link rel="stylesheet" type="text/css" href="css/style.css"></head><body> <div class="container"> <div class="row"> <div class="col-md-12"> <h2>Votação</h2> </div> <div class="col-md-12"> <h3>Pergunta: Qual o colaborador candidato a talento 2015?</h3> </div> </div> <div class="row"> <?php $id = rand(1,2); $id2 = rand(1,2); while ($id == $id2): $id2 = rand(1,2); endwhile; $consulta = $pdo->query("SELECT * FROM users WHERE id='$id'"); while ($linha = $consulta->fetch(PDO::FETCH_OBJ)) { $nome = $linha->nome; $votos = $linha->votos; $img = $linha->img; } if(isset($_POST['btn_vota1'])){ $votosUp = $votos + 1; $update = $pdo->prepare('UPDATE users SET votos = :votos WHERE id = :id'); $update->execute(array( ':id' => $id, ':votos' => $votosUp )); $consulta = $pdo->query("SELECT * FROM users WHERE id='$id'"); while ($linha = $consulta->fetch(PDO::FETCH_OBJ)) { $nome = $linha->nome; $votos = $linha->votos; $img = $linha->img; } } ?> <div class="col-md-6"> <h2><?php echo $nome; ?></h2> <div style="background: url(<?php echo $img; ?>) no-repeat;" id="img1"></div><br /> <form method="post" action=""> <input type="submit" class="btn btn-success" name="btn_vota1" value="Votar"> <span class="spn-otal">Total de votos: <strong><?php echo $votos; ?></strong></span> </div> <?php $consulta = $pdo->query("SELECT * FROM users WHERE id='$id2'"); while ($linha = $consulta->fetch(PDO::FETCH_OBJ)) { $nome = $linha->nome; $votos = $linha->votos; $img = $linha->img; } if(isset($_POST['btn_vota2'])){ $votosUp = $votos + 1; $update = $pdo->prepare('UPDATE users SET votos = :votos WHERE id = :id'); $update->execute(array( ':id' => $id2, ':votos' => $votosUp )); $consulta = $pdo->query("SELECT * FROM users WHERE id='$id2'"); while ($linha = $consulta->fetch(PDO::FETCH_OBJ)) { $nome = $linha->nome; $votos = $linha->votos; $img = $linha->img; } } ?> <div class="col-md-6"> <h2><?php echo $nome; ?></h2> <div style="background: url(<?php echo $img; ?>) no-repeat;" id="img2"></div><br /> <input type="submit" class="btn btn-success" name="btn_vota2" value="Votar"> <span class="spn-otal">Total de votos: <strong><?php echo $votos; ?></strong></span> </form> </div> </div> </div><!--CONTAINER--></body></html> Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Abril 9, 2015 Tchê, não adianta postar outro tópico com o mesmo assunto, continua no mesmo. Vou fundir este tópico com o anterior e pedir que você utilize o bom senso da próxima vez. Compartilhar este post Link para o post Compartilhar em outros sites
slotos 3 Denunciar post Postado Abril 10, 2015 Galera eu acredito que descobri o meu problema: Ao carregar a página e gerado os id's randomicamente, porém depois de votar é encaminhado o form e a página é recarregada novamente gernando outros id's, porém se cair em outra ordem o voto vai entrar no id errado correto? Acredito que seja isso. Mas a pergunta é como eu posso fazer ao abrir a página já carregar os id's randomicamente e ao clicar em votar processar o voto nessa mesma pagina sem jogar pra outra e o voto entrar no id correto?Alguém teria uma solução pra isso obrigado!E desculpa pelo duplo post Compartilhar este post Link para o post Compartilhar em outros sites
Diego Arent 19 Denunciar post Postado Abril 10, 2015 Envia os dois ids da página anterior através de SESSION. Assim que você gerar $id e $id2 aleatório, grave-os na sessão, mas, como você envia o formulário para a mesma página, certifique-se de não atualizar novamente os ids caso o formulário tenha sido enviado: <?php if(!isset($_POST['btn_vota1'])): $_SESSION['id'] = $id; $_SESSION['id2'] = $id2; else: // grava no banco utilizando as variáveis da session endif; ?> Não se esqueça que para utilizar $_SESSION, ela precisa ser iniciada no começo do código: session_start(); Compartilhar este post Link para o post Compartilhar em outros sites
slotos 3 Denunciar post Postado Abril 10, 2015 Então diego, eu pensei nisso, só que não tem página anterior. é tudo feito nessa página. Teria alguma forma? Compartilhar este post Link para o post Compartilhar em outros sites
Diego Arent 19 Denunciar post Postado Abril 10, 2015 <?php if(!isset($_POST['btn_vota1'])): $_SESSION['id'] = $id; $_SESSION['id2'] = $id2; else: // grava no banco utilizando as variáveis da session endif; ?> Compartilhar este post Link para o post Compartilhar em outros sites
slotos 3 Denunciar post Postado Abril 10, 2015 Valeu cara consegui =). Obrigado Compartilhar este post Link para o post Compartilhar em outros sites