O update não permite salvar o registro que já tem no banco.

19/12/2013

0

PHP

Olá a todos....estou encontrando um problema ao tentar salvar um registro que já se encontra no banco...
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

Andrew Angelim

Responder

Posts

21/12/2013

Marcio Araujo

ja tentou fazer direto pelo banco, apenas para constatar?
Responder

22/12/2013

Andrew Angelim

Executei esse select no banco....

SELECT * FROM promotora WHERE nome = 'gol' and id <> 21 e me retornou zero!!!!


o que você acha que pode ser?....

obrigado pela ajuda....


Responder

22/12/2013

Eduardo Backes

Cara, eu acho o seguinte,
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.
Responder

23/12/2013

Ricardo Arrigoni

Editei o post colocando as tag code pra poder ficar certo e melhor de visualizar
Responder

23/12/2013

Ricardo Arrigoni

Uma dica, pq ao invés de usar:
"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'"
Responder

23/12/2013

Marcio Araujo

Executei esse select no banco....

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.
Responder

24/12/2013

Andrew Angelim

Cara, eu acho o seguinte,
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!!
Responder

24/12/2013

Andrew Angelim

Uma dica, pq ao invés de usar:
"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 ;)
Responder

31/12/2013

Andrew Angelim

Alguém pode me dar uma dica, estou esperando resolver esse problema e não consigo...


Agradeço desde de já!!
Responder

01/01/2014

Marcio Araujo

não deu certo a dica do ricoarrigoni? a pagina retorna algum erro?
Responder

01/01/2014

Andrew Angelim

não deu certo a dica do ricoarrigoni? a pagina retorna algum erro?


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>";
Responder

02/01/2014

William

Colega como não temos um debug tão avançado no PHP, até existe mais é um trampo para configurar, você tem que fatiar o seu problema e verificar parte por parte para encontrar o erro.

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.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar