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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar