Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
<?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);
//$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>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>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.
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
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();Então diego, eu pensei nisso, só que não tem página anterior. é tudo feito nessa página. Teria alguma forma?
<?php
if(!isset($_POST['btn_vota1'])):
$_SESSION['id'] = $id;
$_SESSION['id2'] = $id2;
else:
// grava no banco utilizando as variáveis da session
endif;
?>Valeu cara consegui =). Obrigado
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: