Excluir dois campos de tabelas diferentes

10 respostas Resolvido
pdophpmysql
Harley_Rodrigues

Estou tentato excluir não estou obtendo resultado

<?php
session_start();
include_once("conexao_mysqli.php");
$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT);

if(!empty($id)){
	$result_usuario = "DELETE FROM metas, entregas USING metas INNER JOIN entregas WHERE id_metas = id_meta AND id_metas= '$id'";
	$resultado_usuario = mysqli_query($conn, $result_usuario);
	if(mysqli_affected_rows($conn)){
		$_SESSION['msg'] = '<div id="exluido" style="border-radius: 6px; width: 926px; color:green; height: 63px; padding: 1.1rem .75rem;" class="alert-success" role="alert">Entrega excluída com sucesso!</div>';
		header("Location: ".$_SERVER['HTTP_REFERER']."#exluido");
	}else{
		
		$_SESSION['msg'] = '<div id="exluido" style="border-radius: 6px; width: 926px; color:green; height: 63px; padding: 1.1rem .75rem;" class="alert-success" role="alert">Entrega excluída com sucesso!</div>';
		header("Location: ".$_SERVER['HTTP_REFERER']."#exluido");
	}
}else{	
	$_SESSION['msg'] = '<div id="exluido" style="border-radius: 6px; width: 926px; background-color: #ff00004f; color:#757575; height: 63px; padding: 1.1rem .75rem;" class="alert-success" role="alert">Entrega não foi excluída com sucesso!</div>';
	header("Location: ".$_SERVER['HTTP_REFERER']."#exluido");
}

so consigo excluir quando tem valores em ambas id

10 Respostas

RoinujNosde

Como assim? Tem alguns dados com id null?

Harley_Rodrigues

Sim, exatamente isso, nem sempre a id_meta vai ter algum dado cadastro, e eu so consigo excluir id_metas se sempre houver dados cadastrados na id_meta, não se você vai entender oque eu quiz dizem rsrs.

Harley_Rodrigues

id_meta pode haver algum valor, ou não pode haver nenhum valor. depende de como estiver cadastro no meu banco de dados. so quero que exlua indepente de houver valores no campo id_meta, tentei aqui não obtive resultado.

RoinujNosde

É uma boa ideia o ID ser null?
Como vc vai saber qual é pra excluir?

Harley_Rodrigues

quando eu faço o cadastro de id_meta ela puxa o id_metas, eles são iguais relacionados

RoinujNosde

Se está puxando o ID, como tem alguns null?

Harley_Rodrigues

São duas tabelas metas e entrega, eu cadastro as metas, não necessariamente cada meta tem que ter uma entrega, mas quando eu cadastro uma entrega ela estará relacionada a uma meta x ou y. quero busca uma solução para esse DELETE, para ele deleta a meta mesmo se não houver uma entrega cadastrada, e se na meta selecionada para excluir houver uma entrega deleta ambas.

RoinujNosde

Agora entendi kk
Bom, nesse caso daria para fazer 2 queries para deletar:

delete from metas where id_meta = $id;
delete from entregas where id_meta = $id;
Harley_Rodrigues

conseguir dessa forma rsrs, obrigado. mas nesse caso em uma query somente ñ consigo excluir ambos?

<?php
session_start();
include_once("conexao_mysqli.php");

$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT);

if(!empty($id)){
	$result_usuario = "DELETE FROM metas WHERE id_metas = '$id'";
	$resultado_usuario = mysqli_query($conn, $result_usuario);
	if(mysqli_affected_rows($conn)){
		$_SESSION['msg'] = '<div id="exluido" style="border-radius: 6px; width: 926px; color:green; height: 63px; padding: 1.1rem .75rem;" class="alert-success" role="alert">Meta excluída com sucesso!</div>';
		header("Location: ".$_SERVER['HTTP_REFERER']."#exluido");
	}else{
		
		$_SESSION['msg'] = '<div id="exluido" style="border-radius: 6px; width: 926px; background-color: #ff00004f; color:#757575; height: 63px; padding: 1.1rem .75rem;" class="alert-success" role="alert">Meta não foi excluída com sucesso. A meta deve conter ao menos 1 entrega.</div>';
	header("Location: ".$_SERVER['HTTP_REFERER']."#exluido");
	}
}if(!empty($id)){
	$result_usuario2 = "DELETE FROM entregas WHERE id_meta = '$id'";
	$resultado_usuario = mysqli_query($conn, $result_usuario2);
	if(mysqli_affected_rows($conn)){
		$_SESSION['msg'] = '<div id="exluido" style="border-radius: 6px; width: 926px; color:green; height: 63px; padding: 1.1rem .75rem;" class="alert-success" role="alert">Meta excluída com sucesso!</div>';
		header("Location: ".$_SERVER['HTTP_REFERER']."#exluido");
	}else{
		
		$_SESSION['msg'] = '<div id="exluido" style="border-radius: 6px; width: 926px; background-color: #ff00004f; color:#757575; height: 63px; padding: 1.1rem .75rem;" class="alert-success" role="alert">Meta não foi excluída com sucesso. A meta deve conter ao menos 1 entrega.</div>';
	header("Location: ".$_SERVER['HTTP_REFERER']."#exluido");
	}
}else{	
	$_SESSION['msg'] = '<div id="exluido" style="border-radius: 6px; width: 926px; background-color: #ff00004f; color:#757575; height: 63px; padding: 1.1rem .75rem;" class="alert-success" role="alert">Meta não foi excluída com sucesso!</div>';
	header("Location: ".$_SERVER['HTTP_REFERER']."#exluido");
}
RoinujNosde
Solucao aceita

Não entendo muito de JOIN, então não saberia corrigir aquela query.

E se quiser executar as duas de vez tem o mysql_multi_query(), então passaria como parâmetro:
DELETE FROM metas WHERE id_meta = $id; DELETE FROM entregas WHERE id_meta = $id;

Criado 18 de maio de 2021
Ultima resposta 19 de mai. de 2021
Respostas 10
Participantes 2