Ir para conteúdo

Arquivado

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

h_felix

erro ao pegar id aleatorio dentro de IF

Recommended Posts

Boa tarde Galera do bem ,

 

 

Tenho o seguinte código em uma pagina de cadastro :

$sql = "SELECT cpf,idUser FROM `tblContacts` where cpf = '".$cpf."' limit 1";
$resultado = $pdo ->query($sql);
if($resultado !== 0 )
{
foreach ($resultado as $row) 
{
$randomicId = $row['idUser'];
}
} 
else
{
switch ($horaAtual)
{
case ($horaAtual > $hora1 && $horaAtual < $hora2):
$sql = "SELECT * FROM `tblUsers` where grupo = 'vendas' and ativo = 1 and periodo = 'manha' ORDER BY RAND() LIMIT 1";
$resultado = $pdo ->query($sql);
if($resultado !== false)
{
foreach($resultado as $row)
{
$randomicId = $row['idUser'];
}
}
break;

case ($horaAtual > $hora2 && $horaAtual < $hora3):

$sql = "SELECT * FROM `tblUsers` where grupo = 'vendas' and ativo = 1 and periodo = 'tarde' ORDER BY RAND() LIMIT 1";
$resultado = $pdo ->query($sql);
if($resultado !== false)
{
foreach($resultado as $row)
{
$randomicId = $row['idUser'];
}
}
break;

default:
$sql = "SELECT * FROM `tblUsers` where grupo = 'vendas' and ativo = 1 and periodo = 'manha' ORDER BY RAND() LIMIT 1";
$resultado = $pdo ->query($sql);
if($resultado !== false)
{
foreach($resultado as $row)
{
$randomicId = $row['idUser'];
}
}
}
}

try {

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("SET CHARACTER SET utf8");//corrige os acentos na hora de gravar no BD


$stmt = $pdo->prepare('INSERT INTO tblContacts(product, name, gender, cpf, rg, nasc, phone1, phone2, email, addressType, cep, address, number, ap, comp, quarter, city, state, refer, dateSend, hourSend, qtd,origem,idUser)
VALUES(:product,:name, :gender, :cpf, :rg, :nasc, :phone1, :phone2, :email, :addressType, :cep, :address, :number, :ap, :comp, :quarter, :city, :state, :refer, :dateSend, :hourSend, :qtd,:origem,:idUser)');
$stmt->execute(array(':product' => $product,':name' => $name,':phone1' => $phone1,':gender'=>$gender,':cpf'=>$cpf,':rg'=>$rg,':nasc'=>$nasc,':phone1'=>$phone1,':phone2'=>$phone2,':email'=>$email,':addressType'=>$addressType,':cep'=>$cep,':address'=>$rua,':number'=>$number,':ap'=>$ap,':comp'=>$comp,':quarter'=>$quarter,':city'=>$city,':state'=>$state,':refer'=>$refer,':dateSend' =>$date, ':hourSend' => $hour , ':qtd' => $qtd,':origem'=> $origem,':idUser'=>$randomicId));
}

catch(PDOException $e)
{
echo 'Error: ' . $e->getMessage();
}
$pdo = null;

Era para o código fazer o seguinte :

 

Quando o usuario faz um cadastro no site , eu pego o CPF dele e consulto no banco para ver se tem alguém cadastro com esse CPF , se tiver ele pegara o valor do campo idUsuario e atribuirá para a variável $randomiId.

 

Se nao tiver nenhum cadastro com o CPF informado , ele ira fazer a consulta na tabela de usuários , pegando o ID de algum usuário aleatoriamente. e atribuir o ID desse usuário para a variável $randomicId

 

Assim , eu evitaria de que se alguém se cadastrar 2 vezes no site , o cadastro seja enviado para usuários diferentes.

 

Tipo , fulano x entrou no site e fez cadastro , por ser o primeiro cadastro dele no site , o sistema pegou o ID 35 . Ao entrar depois de uns dias , fulano x fez outro cadastro , como ele ja havia feito um cadastro , o sistema pegou e gravou o ID 35 no idUsuario.

 

 

Mas , o que ta acontecendo , é que , se é o primeiro cadastro da pessoa no site , o sistema nao esta atribuindo um valor para a variavel $randomiId , mas se o cadastro ja existe , ele pega o valor do banco e atribui normal.

 

 

O que ta errado no codigo?

 

Desde ja , grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troca essas condições do seu IF !== soh por !=

Compartilhar este post


Link para o post
Compartilhar em outros sites

O método query não retorna um objeto PDOStatement. Veja na documentação. Seu if não faz sentido e nem o forech dentro dele. Tem que usar fetchAll(), por exemplo.

 

 

 

Desculpe minha ignorância...

 

mas porque de forma aleatória ?

Também me fiz essa pergunta

Lógica estranha essa... Normalmente usamos um ID sequencial, não aleatório.. Enfim...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe minha ignorância...

 

mas porque de forma aleatória ?

 

Bom dia , foi me passado para fazer assim ,nao entendi muito bem a logica por tras , mas fazer o que .

 

Quanto ao codigo, deu certo dessa maneira :

 $sql = $pdo->prepare ("SELECT cpf,idUser FROM `tblContacts` where cpf = '".$cpf."' limit 1");
			$sql->execute();
			$row = $sql->fetch();
				
			if($row != null)
				{
				  //	echo "SQL 01 ". $sql;
					$randomicId = $row->idUser;
				} 
				
				else
					{
						switch ($horaAtual) {
							case ($horaAtual > $hora1 && $horaAtual < $hora2): $periodo = 'manha'; break;
							case ($horaAtual > $hora2 && $horaAtual < $hora3): $periodo = 'tarde'; break;
							default: $periodo =  'manha';
						}
						
						$sql2 = "SELECT * FROM `tblUser` where grupo = 'vendas' and ativo = 1 and periodo = '".$periodo."' ORDER BY RAND() LIMIT 1";
						$stmt = $pdo->query($sql2); 
						$row = $stmt->fetch(PDO::FETCH_ASSOC);
							if($row['idUser'] != null)
								{
									//echo "SQL 02 ". $sql2;
									$randomicId = $row['idUser'];
								}

					}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Bom dia , foi me passado para fazer assim ,nao entendi muito bem a logica por tras , mas fazer o que .

 

Quanto ao codigo, deu certo dessa maneira :

 $sql = $pdo->prepare ("SELECT cpf,idUser FROM `tblContacts` where cpf = '".$cpf."' limit 1");
			$sql->execute();
			$row = $sql->fetch();
				
			if($row != null)
				{
				  //	echo "SQL 01 ". $sql;
					$randomicId = $row->idUser;
				} 
				
				else
					{
						switch ($horaAtual) {
							case ($horaAtual > $hora1 && $horaAtual < $hora2): $periodo = 'manha'; break;
							case ($horaAtual > $hora2 && $horaAtual < $hora3): $periodo = 'tarde'; break;
							default: $periodo =  'manha';
						}
						
						$sql2 = "SELECT * FROM `tblUser` where grupo = 'vendas' and ativo = 1 and periodo = '".$periodo."' ORDER BY RAND() LIMIT 1";
						$stmt = $pdo->query($sql2); 
						$row = $stmt->fetch(PDO::FETCH_ASSOC);
							if($row['idUser'] != null)
								{
									//echo "SQL 02 ". $sql2;
									$randomicId = $row['idUser'];
								}

					}

Bem... que bom que vc conseguiu. Sucesso

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.