h_felix 1 Denunciar post Postado Junho 23, 2015 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
wolfphw 60 Denunciar post Postado Junho 23, 2015 Troca essas condições do seu IF !== soh por != Compartilhar este post Link para o post Compartilhar em outros sites
GCAS 11 Denunciar post Postado Junho 23, 2015 Desculpe minha ignorância... mas porque de forma aleatória ? Compartilhar este post Link para o post Compartilhar em outros sites
h_felix 1 Denunciar post Postado Junho 23, 2015 Troca essas condições do seu IF !== soh por != Alterei , agora ele esta caindo direto na condiçao do "ELSE" Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Junho 24, 2015 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
h_felix 1 Denunciar post Postado Junho 24, 2015 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
GCAS 11 Denunciar post Postado Junho 24, 2015 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