Jump to content
josenilson

Gravando e excluindo

Recommended Posts

olá galera,  como eu faço para deixar um botão delete sem excluir os aquivos do banco ,  ele não vai deletar na integra este, vai gravar no campo lixeira da tabela cliente, um valor no caso 1 que tratarei como excluído.

 

Eu já utilizo um botão só que este deleta literalmente do banco quando eu clico dele exclui o registro do banco,  se por possível adaptar este para o caso acima abaixo esta o código, obrigado. 

 

link que chama  o método get onde armazena o id do cliente 

 

<a href="?exCliente=<?php echo $m ["idCliente"];?>" onclick="return confirm('Confirmar exclusão de registro?');"class="btn btn-danger">Excluir</a>

Aqui é o exCliente que e chamado ao clicar no link 


if (isset($_GET['exCliente'])) :

	if (deletar('cad_cliente', $_GET['exCliente'])) :

		header("Location: index.php");
	else :
	//echo "erro ao atualizar dados";

	endif;
endif;


if (isset($_GET["idCliente"])) :
	$idCliente = filter_var($_GET["idCliente"], FILTER_SANITIZE_NUMBER_INT);

	$dadosuser = pegarid('cad_cliente', 'idCliente', $idCliente);

	if ($dadosuser) :
	//print_r($dadosuser);
	else :
		echo "não encontrado";
	endif;
endif;



?>

 

 e por final a função que deleta o do banco

function deletar ($cad_cliente, $idCliente ){
	$pdo = conectar();
	try {
		$delete = $pdo->prepare("DELETE FROM cad_cliente WHERE idCliente = :idCliente ");
	    $delete->bindValue('idCliente', $idCliente);
	    $delete->execute();
   
   if ($delete->rowCount()> 0):
  
   return true;
   else:
   return false;
   endif;
   
	} catch(PDOException $erro) {
		echo "ERRO AO REALIZAR EXCLUSÃO" . $erro->getMessage();
   
	}
}

Eu não sei se é possível nas essa função que deteta poderia ser um insert ? onde ela gravaria o valor 1 no campo lixeira ?

 

obrigado a todos. 

 

Share this post


Link to post
Share on other sites

Exatamente. O que você pode fazer é, em vez de excluir, aplicar um insert e alterar o campo lixeira para 1 (seguindo seu exemplo).

Este campo pode ser configurado para receber o valor padrão "0".

À partir daí, quando você quiser listar os registros ativos você filtra todos registros que contenham o valor "0" no campo lixeira.

E quando abrir a lixeira filtre apenas os registros que contenham o valor "1". E aqui, dentro da lixeira, você pode usar o DELETE para apagar o registro definitivamente.

 

Share this post


Link to post
Share on other sites
57 minutos atrás, Eziquiel disse:

Exatamente. O que você pode fazer é, em vez de excluir, aplicar um insert e alterar o campo lixeira para 1 (seguindo seu exemplo).

Este campo pode ser configurado para receber o valor padrão "0".

À partir daí, quando você quiser listar os registros ativos você filtra todos registros que contenham o valor "0" no campo lixeira.

E quando abrir a lixeira filtre apenas os registros que contenham o valor "1". E aqui, dentro da lixeira, você pode usar o DELETE para apagar o registro definitivamente.

 

Obrigado pelas dicas Ezequiel, então mas pra mim gravar o valor zero,  como eu vou armazenar e mandar ele gravar só nesse campo ? ,  eu fiz uma tentativa com a função de cadastro que eu tenho, porem ele deu erro dizendo que faltava os demais campos, ou seja preciso que,  ao clicar nesse botão somente o campo lixeira seja .  

 

essa e a função que eu utilizo para salvar.  

 

function cadastro ($nome, $estado_civil, $data_nascimento, $rg, $oe, $cpf, $endereco, $numero, $complemento, $bairro, 
	$uf, $cidade, $cep, $email, $tel_fixo, $celular1, $celular2, $graduacao, $matricula, $data_admissao, $op, $senha_portal,
	 $comandante, $tel_op, $banco, $agencia, $conta, $data_contrato, $vendedor, $status,  $observacoes  ){
	$pdo = conectar();
	
	try {
   $inserir = $pdo->prepare("INSERT INTO cad_cliente (nome, estado_civil, data_nascimento, rg, oe, cpf, endereco, numero,
    complemento, bairro, uf, cidade, cep, email, tel_fixo, celular1, celular2, graduacao, matricula, data_admissao, op, senha_portal,
    comandante, tel_op, banco, agencia, conta, data_contrato, vendedor, status, observacoes  )
    VALUES (?,?,STR_TO_DATE(?,'%d/%m/%Y'),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,STR_TO_DATE(?,'%d/%m/%Y'),?,?,?,?,?,?,?,STR_TO_DATE(?,'%d/%m/%Y'),?,?,?)");
	
	    $inserir->bindValue(1, $nome);
		$inserir->bindValue(2, $estado_civil);
		$inserir->bindValue(3, $data_nascimento);				   
		$inserir->bindValue(4, $rg);
		$inserir->bindValue(5, $oe);
		$inserir->bindValue(6, $cpf);
		$inserir->bindValue(7, $endereco);
		$inserir->bindValue(8, $numero);
		$inserir->bindValue(9, $complemento);
		$inserir->bindValue(10, $bairro);
		$inserir->bindValue(11, $uf);
		$inserir->bindValue(12, $cidade);
		$inserir->bindValue(13, $cep);
		$inserir->bindValue(14, $email);
		$inserir->bindValue(15, $tel_fixo);
		$inserir->bindValue(16, $celular1);
		$inserir->bindValue(17, $celular2);
		$inserir->bindValue(18, $graduacao);
		$inserir->bindValue(19, $matricula);
		$inserir->bindValue(20, $data_admissao);
		$inserir->bindValue(21, $op);
		$inserir->bindValue(22, $senha_portal);
		$inserir->bindValue(23, $comandante);
		$inserir->bindValue(24, $tel_op);
		$inserir->bindValue(25, $banco);
		$inserir->bindValue(26, $agencia);
		$inserir->bindValue(27, $conta);
		$inserir->bindValue(28, $data_contrato);
		$inserir->bindValue(29, $vendedor);
		$inserir->bindValue(30, $status);
		$inserir->bindValue(31, $observacoes);
		
	    $inserir->execute();
   
   if ($inserir->rowCount()== 1):
   return true;
   else:
   return false;
   endif;
   
	} catch(PDOException $erro) {
		echo "ERRO AO CADASTRAR" . $erro->getMessage();
   
	}
}

nessa função acima eu salvo todos os inputs ai eu tentei dessa forma somente com o botão . 

 

function deletar ($lixeira  = "1"){
	$pdo = conectar();
	
	try {
   $inserir = $pdo->prepare("INSERT INTO cad_cliente (lixeira )
    VALUES (?);
	
	    $inserir->bindValue(1, $lixeira);
		
		
	    $inserir->execute();
   
   if ($inserir->rowCount()== 1):
   return true;
   else:
   return false;
   endif;
   
	} catch(PDOException $erro) {
		echo "ERRO AO CADASTRAR" . $erro->getMessage();
   
	}
}

mas não deu certo , ao fazer isso ela retorna dizendo que não encontrou o valor campo nome. e os demais valores imagino. 

 

Share this post


Link to post
Share on other sites
function enviar_lixeira ($idCliente ){
	$pdo = conectar();
	try {
		$delete = $pdo->prepare("UPDATE cad_cliente set lixeira = '1' WHERE idCliente = :idCliente ");
	    $delete->bindValue('idCliente', $idCliente);
	    $delete->execute();
   
       if ($delete->rowCount()> 0):
       		return true;
       else:
       		return false;
       endif;
   
	} catch(PDOException $erro) {
		echo "ERRO AO ENVIAR PARA LIXEIRA" . $erro->getMessage();
   
	}
}

Tente isso!

  • +1 2

Share this post


Link to post
Share on other sites
18 horas atrás, Eziquiel disse:

function enviar_lixeira ($idCliente ){
	$pdo = conectar();
	try {
		$delete = $pdo->prepare("UPDATE cad_cliente set lixeira = '1' WHERE idCliente = :idCliente ");
	    $delete->bindValue('idCliente', $idCliente);
	    $delete->execute();
   
       if ($delete->rowCount()> 0):
       		return true;
       else:
       		return false;
       endif;
   
	} catch(PDOException $erro) {
		echo "ERRO AO ENVIAR PARA LIXEIRA" . $erro->getMessage();
   
	}
}

Tente isso!

Deu certo mano, esta pensando de modo errado, como a linha da tabela já contem dados, eu não deveria inserir dados nela e sim fazer um update,  como você citou, muito obrigado.  tópico encerrado . 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By lesilva
      Bom pessoa estou fazendo um limpa em um banco de dados e tenho que deixar somente alguns cadastro, consegui fazer a consulta para achar somente os que estou querendo, só que não consegui fazer o oposto de trazer os que não são esse.
       
      O problema é que no meu cadastro tem a aba parte que contem vários nomes inclusive o que to querendo '42229-0000000460' por isso o <> não funciona, segue a consulta que é a que contem ele.
      SELECT * FROM PROCESSO PR inner JOIN PARTICIPACAO PA ON PR.OID = PA.PROCESSO WHERE Pa.parte = '42229-0000000460'  
       
      E depois queria saber como faça para deletar os registro que não seja o dele '42229-0000000460'.
    • By Andinho Luiz
      Galera o que estou fazendo de errado?
       
      Eu tenho uma tabela de cliente:
       
      $sql = " CREATE TABLE IF NOT EXISTS cliente ( id_cliente INT(10) AUTO_INCREMENT PRIMARY KEY, tipo CHAR(1) NOT NULL, rSocialNome VARCHAR(20) NOT NULL, cnpjCPF VARCHAR(30) NOT NULL, ieRG VARCHAR(30), situacao BOOL, UNIQUE (cnpjCPF) )ENGINE=MyISAM;"; E tenho outra tabela de ordem de serviço
       
      CREATE TABLE IF NOT EXISTS OS ( id_OS INT(5) AUTO_INCREMENT PRIMARY KEY, id_cliente INT(11), data DATETIME, tecnico VARCHAR(30) NOT NULL, equipamento VARCHAR(50) NOT NULL, marca VARCHAR(50) NOT NULL, modelo VARCHAR(50) NOT NULL, serie VARCHAR(100) NOT NULL, condicoes tinytext, defeitos tinytext, acessorios tinytext, solucao tinytext, constraint fk_os_cliente FOREIGN KEY (id_cliente) REFERENCES cliente (id_cliente) )ENGINE=MyISAM;"; Até aqui normal, adiciono os registros na tabela de cliente e na tabela de ordem de serviço. Quando eu vou na tabela de cliente e excluo o cliente, o banco de dados deixa excluir e fica a sujeira na tabela de OS. Como faço para bloquear para não excluir o cliente enquanto existir registros na tabela de ordem de serviço?
    • By diego.baiao
      Olá pessoal bom dia! 
       
      Preciso de uma ajuda com um detalhe no banco de dados no caso é postgres v.9.4 , explicando a situação estou fazendo uma manutenção de dados de certos logs que gero e tenho exemplo uma tabela que é envios.envio_contato_log_status ela tinha mais 220GB só nela eu limpei ficou de boa (agora esta zerado e nem lista abaixo), só que ao rodar o código que mede o tamanho das tabelas vejo que tenho uma de 45GB informados como consigo apagar esse cara envios.envio_contato_log_status_pkey (chave primaria da tabela acima referida envios.envio_contato_log_status) não entendi o banco ele armazena dados nas chaves primarias, indexadores, etc...  Minha duvida se tem algo que permite eu excluir esses dados, no caso sabemos que essa tabela não é mais usada.
      Mais queria manter a estrutura do campos mesmo que vazia por enquanto e eliminar apenas esses 45GB que não tenho ideia de como remover esse kara.
       

    • By FuckSystem
      An... Oii pessoal sou novo comecei hoje
      Ainda nem passei aquela madruga de tutorial de programação mas me ajudem com isso
      File f = new File("dados.txt");  f.delete();   Aparece um erro dizendo Unknown entity "File" Unknown entity "f"   Se puder ajudar agradeço tmj ,_, vlw por ler até aqui    
    • By Jack Oliveira
      Ola galera se esta postagem estiver no lugar errado perdoa-me.
      Bom se puderem me ajudar e me dar uma solução de como eu posso fazer o seguinte.
       
      Eu tenho uns funcionarios em media de 4 pessoas
      cada um deles tem acesso de nível onde eles podem cadastrar editar e deletar tbm ate ai blz.
      Mas eu quero uma maneira de quando eles chegar a deletar alguma coisa para não aparecer no site mais, este conteúdo pode até não mais aparecer no site entende?
      Mas quem vai definir se ele vai ser deletado ou não sou eu. Toda vez que eles deletar pelo painel deles no meu painel master aparecer uma notificação de que foi deletado algo
      ai eu que vou decidir se vai ser ou não. ou seja o ultimo clique será o meu se eu realmente aceitar assim ele pode ser deletado do banco de dados de vez.
      Pois das muitas vezes eles deleta as coisas que não poderia ou seja que é importante ter dentro do site.
      Bom sei que não é bicho de 7 cabeça, mais eu preciso de um caminho para começar a fazer este código se alguém poder me dar uma base de como fazer.
      Bom seria mais o menos isso ai, espero que possa ter entendido a minha logica.
       
                                                         Desde já fico grato.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.