Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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. 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

 

Compartilhar este post


Link para o post
Compartilhar em outros 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. 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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!

Compartilhar este post


Link para o post
Compartilhar em outros 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 . 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por mateus.andriollo
      Alguém sabe uma boa ferramenta (grátis) para comparação de banco de dados Desenvolvimento e Produção.
      Preciso automatizar as atualizações no banco de dados da produção com base no banco de dados de desenvolvimento.
       
      Achei algumas ferramentas mas pagas....
    • Por durrib
      Olá, pessoal.
      Meu provedor não autoriza mais Banco Access, então fui obrigado migrar para o MySQL e estou "apanhando", rs...
      Consegui criar a primeira Tabela de Insert de email's. Aí que vem o drama, problemas no auto_increment e blá blá...
      Consegui o primeiro passo, o Insert, mas o resto não estou conseguindo assimilar.
      Prefiro continuar os script's no ASP, se tiver que ir pro PHP, eu desisto.
      -->
       
      'Windows 2012
          'Criamos o objeto de conexão
       Set conn = Server.CreateObject("ADODB.Connection")
          'Abrimos uma conexão com o banco de dados
          '[IMPORTANTE] altere os dados abaixo com as informações de sua base de dados
      Conn.Open("DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER=XXX;PORT=3306;DATABASE=XXX;USER=XXX;PASSWORD=XXX;OPTION=3;")
      Response.Write "banco conectado"
          'Fechamos a conexão com o banco de dados
      Conn.Close()
          'Destruímos o objeto
      Set Conn = Nothing
      -->
       
      Está conectando, mas na hora da listagem, nada!
      HELP!
       
       
    • Por jefferson919
      Pessoal, 
       
      Estou tentando criar um registro de log de operação em php, mas não consigo fazer as duas operações de forma alguma. Só faz uma não importa o que eu faça. Estou com o seguinte codigo:
       
      <?php // Sessão session_start(); // Conexão require_once 'db_connect.php'; if(isset($_POST['btn-delete'])): $id = mysqli_escape_string($connect, $_POST['usuario_id']); $idDeletador = $_SESSION['id_usuario']; $teste = 1; if ($teste==1): $sql = "INSERT INTO tb_log (log_data, log_usuario, log_menu, log_tipo) VALUES (now(), $idDeletador, 'Usuário', 'Deletar' );"; $novo=2; if ($novo==2): $sql = "DELETE FROM tb_usuario WHERE usuario_id = '$id';"; $_SESSION['mensagem'] = "Deletado com sucesso!"; header('Location: ../cruds/consultaUsuario.php'); else: $_SESSION['mensagem'] = "Erro ao deletar"; header('Location: ../comeco.php'); endif; else: $_SESSION['mensagem'] = "Erro ao deletar"; header('Location: ../index.php'); endif; //$sql = "INSERT INTO tb_log (log_data, log_usuario, log_menu, log_tipo) VALUES (now(), $idDeletador, 'Usuário', 'Deletar' );"; //$sql = "DELETE FROM tb_usuario WHERE usuario_id = '$id';"; if(mysqli_query($connect, $sql)): $_SESSION['mensagem'] = "Deletado com sucesso!"; header('Location: ../cruds/consultaUsuario.php'); else: $_SESSION['mensagem'] = "Erro ao deletar"; header('Location: ../cruds/consultaUsuario.php'); endif; endif;  
    • Por Flaviaac
      Boa tarde pessoal,
       
      Estou começando a programar em PHP agora e ainda tenho muitas dúvidas, gostaria de uma ajuda =)
      Quero deletar um registro da tabela quando pressionar o botão de "apagar" como na imagem: 
       

       
      O que acontece é que quando aperto o botão, ele exibe a mensagem de que foi deletado com sucesso, porém não deleta do banco.
      E exibe a mensagem: Notice: Undefined index: id in .../teste_tabela3/deletar_produto.php on line 11
       
      Alguém saberia me dizer o que estou fazendo errado? Obrigada!
       
       
      Segue o código do arquivo deletar_produto.php
      <?php include_once 'cabeçalho.php'; include_once 'conexao.php'; $id = $_POST['id']; if(isset($_POST['apagar'])){ $sql = "DELETE FROM produtos WHERE id='$id'"; $result = mysqli_query($conn, $sql); if($conn->query($sql) === TRUE) echo "<br/><br/><span>O registro foi deletado com sucesso...!!</span>"; }else{ echo "<p>Não foi possivel apagar o registro....!!</p>"; } $conn->close(); ?>  
      Esse é o arquivo listar_produtos.php
      <?php include_once 'cabeçalho.php'; include_once 'conexao.php'; ?> <div class="d-flex mx-2 my-2"> <div class="mr-auto p-2"> <h2 class="display-4 titulo">Lista de Produtos</h2> </div> </div> <?php $sql = "SELECT id, produto, valor FROM produtos"; $result = $conn->query($sql); ?> <!--------------------------------------------TABELA--------------------------------------------> <div class="table-responsive"> <table class="table table-bordered table-hover table-striped"> <thead> <tr> <th>ID</th> <th>Produto</th> <th>Valor</th> <th>Ações</th> </tr> </thead> <?php if ($result->num_rows > 0) { echo "<tbody>"; while($row = $result->fetch_assoc()) { echo "<tr>"; echo "<td>" .$row['id'] ."</td>"; echo "<td>" .$row['produto']. "</td>"; echo "<td>" .$row['valor']. "</td>"; echo "<td>"; echo "<form action='deletar_produto.php' method='post'>"; echo "<button type='submit' class='btn btn-outline-primary' name='editar'>Editar</button> &nbsp;"; echo "<button type='submit' class='btn btn-outline-primary' name='apagar'>Apagar</button>"; echo "</form>"; echo "</td>"; echo "</tr>"; } } else { echo "0 results"; } ?> </tbody> </table> <?php $conn->close(); include_once 'rodape.php'; ?>  
    • Por Felipe_N22
      Pessoal, como que eu crio uma rotina no MySQL para efetuar delete de registros inseridos nos últimos 30 dias, e fazer com que esse procedimento rode todos os dias automaticamente em determinado horário?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.