Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

slotos

Voto é computado em outro id

Recommended Posts

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>


Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

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

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


<?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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.