O update não permite salvar o registro que já tem no banco.
19/12/2013
0
Isso ocorreu depois que coloquei o método de verificar se o usuário existe ou não no banco!
Método update:
public function update(promotora $promotora) { $banco = new conexaoBD (); $conexao = $banco->conectar (); $alterar = $conexao->prepare ( "UPDATE promotora SET nome = ?, cpf = ?, rg = ?, dataNascimento = ?, telefone = ? WHERE id = ?" ); $alterar->bind_param ( "sssssi", $a1, $a2, $a3, $a4, $a5, $a6); $a1 = $promotora->getNome (); $a2 = $promotora->getCpf (); $a3 = $promotora->getRg (); $a4 = $promotora->getDatanascimento (); $a5 = $promotora->getTelefone (); $a6 = $promotora->getId (); $alterar->execute(); return $alterar->affected_rows; }
Método de verificar se o usuário já está registrado:
public function getVerificarUser(promotora $promotora) { $banco = new conexaoBD (); $conexao = $banco->conectar (); $verifica = $conexao->prepare ("SELECT * FROM promotora WHERE nome = ? and id <> ?"); $verifica->bind_param ("si", $pl, $ii); $pl = $promotora->getNome(); $ii = $promotora->getId(); $verifica->execute (); $verifica->store_result (); return $verifica->num_rows; }
EditarPromotora.php:
<?php include 'classes/promotora.php'; include 'conexao/conexao.php'; include 'colecao/promotoraDao.php'; if (isset ( $_POST ['alterar'] )) { $obj = new promotora(); $obj->setId($_POST['esconder']); $obj->setNome($_POST["nome"]); $obj->setCpf($_POST["cpf"]); $obj->setRg($_POST["rg"]); $obj->setDatanascimento($_POST["data"]); $obj->setTelefone($_POST["tele"]); $objeto = new promotoraDao(); if($objeto->getVerificarUser($obj) <= 0){ if($objeto->update($obj) > 0){ echo "<script>alert('Alterado com sucesso.')</script>"; echo "<script>window.location = 'listarPromotora.php?id=".$_POST["esconder"]."'</script>"; }else{ echo "<script>alert('Não foi possível alterar.')</script>"; echo "<script>window.location = 'listarPromotora.php?id=".$_POST["esconder"]."'</script>"; } }else{ echo "<script>alert('Usuário já existe. Tente novamente!')</script>"; echo "<script>window.location = 'form-editarPromotora.php?id=".$_POST["esconder"]."'</script>"; } } ?>
Quando vou no formulário de editar e tento salvar o registro sem alterar nenhum dado, ele só executa esse echo:
echo "<script>alert('Não foi possível alterar.')</script>"; echo "<script>window.location = 'listarPromotora.php?id=".$_POST["esconder"]."'</script>";
ou seja, não permite salvar o registro já cadastrado no banco.
alguém poderia me ajudar?
Agradeço desde de já!
Andrew Angelim
Posts
21/12/2013
Marcio Araujo
22/12/2013
Andrew Angelim
SELECT * FROM promotora WHERE nome = 'gol' and id <> 21 e me retornou zero!!!!
o que você acha que pode ser?....
obrigado pela ajuda....
22/12/2013
Eduardo Backes
Você está "jogando" os valores para as variáveis $a1, $a2, etc. Depois de fazer o bind do update, isso deveria ser ao contrário, você deveria "jogar" os valores para estas variáveis antes de fazer o bind.
23/12/2013
Ricardo Arrigoni
23/12/2013
Ricardo Arrigoni
"UPDATE promotora SET nome = ?, cpf = ?, rg = ?, dataNascimento = ?, telefone = ? WHERE id = ?"
Não usa dessa forma ?
Primeiro recebe as variáveis e depois dá o update
"UPDATE promotora SET nome = '$a1', cpf = '$a2', rg = '$a3', dataNascimento = '$a4', telefone = '$a5' WHERE id = '$a6'"
23/12/2013
Marcio Araujo
SELECT * FROM promotora WHERE nome = 'gol' and id <> 21 e me retornou zero!!!!
o que você acha que pode ser?....
obrigado pela ajuda....
tinha dados no campo? se sim, veja a dica do Eduardo.
24/12/2013
Andrew Angelim
Você está "jogando" os valores para as variáveis $a1, $a2, etc. Depois de fazer o bind do update, isso deveria ser ao contrário, você deveria "jogar" os valores para estas variáveis antes de fazer o bind.
public function update(promotora $promotora) { $banco = new conexaoBD (); $conexao = $banco->conectar (); $alterar = $conexao->prepare ( "UPDATE promotora SET nome = ?, cpf = ?, rg = ?, dataNascimento = ?, telefone = ? WHERE id = ?"); $a1 = $promotora->getNome(); $a2 = $promotora->getCpf(); $a3 = $promotora->getRg(); $a4 = $promotora->getDatanascimento(); $a5 = $promotora->getTelefone(); $a6 = $promotora->getId(); $alterar->bind_param( "sssssi", $a1, $a2, $a3, $a4, $a5, $a6); $alterar->execute(); return $alterar->affected_rows; }
public function getVerificarUser(promotora $promotora) { $banco = new conexaoBD (); $conexao = $banco->conectar (); $verifica = $conexao->prepare ("SELECT * FROM promotora WHERE nome = ? and id <> ?"); $a1 = $promotora->getNome(); $a2 = $promotora->getId(); $verifica->bind_param("si", $a1, $a2); $verifica->execute(); $verifica->store_result(); return $verifica->num_rows; }
Fiz o que você sugeriu, porém continuou do mesmo jeito!!
24/12/2013
Andrew Angelim
"UPDATE promotora SET nome = ?, cpf = ?, rg = ?, dataNascimento = ?, telefone = ? WHERE id = ?"
Não usa dessa forma ?
Primeiro recebe as variáveis e depois dá o update
"UPDATE promotora SET nome = '$a1', cpf = '$a2', rg = '$a3', dataNascimento = '$a4', telefone = '$a5' WHERE id = '$a6'"
Interessante essa sua forma, obrigado pela dica ;)
31/12/2013
Andrew Angelim
Agradeço desde de já!!
01/01/2014
Marcio Araujo
01/01/2014
Andrew Angelim
public function update(promotora $promotora) { $banco = new conexaoBD (); $conexao = $banco->conectar (); $a1 = $promotora->getNome(); $a2 = $promotora->getCpf(); $a3 = $promotora->getRg(); $a4 = $promotora->getDatanascimento(); $a5 = $promotora->getTelefone(); $a6 = $promotora->getId(); $alterar = $conexao->prepare ( "UPDATE promotora SET nome = '$a1', cpf = '$a2', rg = '$a3', dataNascimento = '$a4', telefone = '$a5' WHERE id = '$a6'"); $alterar->execute(); return $alterar->affected_rows; }
Fiz da maneira que ele disse, só que ficou do mesmo jeito. Ele não mostra erro....o problema é que ele só executa esse código: <script>alert('Não foi possível alterar.')</script>. Isso ocorre quando eu não altero nenhum dado do formulário. Mas se eu alterar alguma informação do formulário, ele altera o registro normalmente. O problema está quando eu não quero alterar nenhuma informação do formulário e clico em "salvar", dessa forma ele não permite...só executa essa linha de código: echo "<script>alert('Não foi possível alterar.')</script>";
02/01/2014
William
Execute esse script separado, passando os parâmetros certinho e veja o retorno do mesmo.
public function getVerificarUser(promotora $promotora) { $banco = new conexaoBD (); $conexao = $banco->conectar (); $verifica = $conexao->prepare ("SELECT * FROM promotora WHERE nome = ? and id <> ?"); $verifica->bind_param ("si", $pl, $ii); $pl = $promotora->getNome(); $ii = $promotora->getId(); $verifica->execute (); $verifica->store_result (); return $verifica->num_rows; }
Como você comentou que foi depois que você acrescentou ele que começou a dar problema então teste ele isoladamente!
Poste aqui o resultados.
Clique aqui para fazer login e interagir na Comunidade :)