Ir para conteúdo

POWERED BY:

Arquivado

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

rodrigosegatto

Deletar dados de tabele do BD com PHP

Recommended Posts

Olá,

Estou realizando um trabalho da faculdade e preciso de algo para ontem hehe. Desenvolvi uma parte do projeto.
Ele consiste em um cadastro de avisos, aonde os avisos são mostrados na página inicial. Preciso que nesta mesma página eu consiga excluir os avisos.

Vou mostrar o que tenho até o momento:

O Banco de dados da tabela 'aviso' que tem os campos : grupo titulo motivo dtInicial dtFinal gIndisponibilidade dscIndisponibilidade sisAfetados cliAfetados id

 

<center><h3>Ultimos Avisos</h3></center>
<?php
$dados=list_aviso();
if ($dados != null){
echo "<table border='1'><tr><td><b>Grupo</b></td><td><b>Titulo</b></td><td><b>Motivo</b></td><td><b>Inicio</b></td><td><b>Fim</b></td><td><b>Indisponibilidade ao cliente?</b></td><td><b>Tipo de Indisponibilidade?</b></td><td><b>Sistema Afetado</b></td><td><b>Cliente Afetado</b></td><td><b>Acao</b></td></tr>";
foreach($dados as $item){
         echo '<tr align="left" bgcolor="#CCCCCC"><td> '.$item['grupo'].'</td><td>'.$item['titulo'].'</td><td>'.$item['motivo'].'</td><td> '.$item['dtInicial'].'</td><td> '.$item['dtFinal'].'</td><td> '.$item['gIndisponibilidade'].'</td><td> '.$item['dscIndisponibilidade'].'</td><td> '.$item['sisAfetados'].'</td><td> '.$item['cliAfetados'].'</td><td> Excluir </td></tr>';
}
echo "</table>";
}
else{
echo '<div align="center"><strong>Nenhum Aviso Cadastrado</strong></div>';
}
?>

 


A tela fica com uma tabela listando todos os campos:
campo1 campo2 campo3 campo4 ação
elemento1 elemento1 elemento1 elemento1 Excluir
elemento1 elemento1 elemento1 elemento1 Excluir
elemento1 elemento1 elemento1 elemento1 Excluir

Preciso saber de que maneira excluo o dado clicado do Banco de Dados? Sei que provavelmente é necessário criar um arquivo ex: excluir.php e um link deste item 'excluir' que chame a 'id' do elemento na inicial.php. Porém não sei como fazer isto.

Poderiam me ajudar?

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie um link dentro de:

<td> Excluir </td>

Redirecione para a página que faz o delete.

 

Um simples exemplo.

 

<td><a href="pagina.php?delete=produto&id=11111"> Excluir </a></td>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resgate junto com o array o id da sua tabela pois ele será referência para você deletar o dado desejado.

 

O link ficará mais ou menos assim:

 

 

echo '<tr align="left" bgcolor="#CCCCCC"><td> '.$item['grupo'].'</td><td>'.$item['titulo'].'</td><td>'.$item['motivo'].'</td><td> '.$item['dtInicial'].'</td><td> '.$item['dtFinal'].'</td><td> '.$item['gIndisponibilidade'].'</td><td> '.$item['dscIndisponibilidade'].'</td><td> '.$item['sisAfetados'].'</td><td> '.$item['cliAfetados'].'</td><td><a href="delete.php?id=$item[id]"> Excluir</a> </td></tr>';

Faz um teste aí, veja se direciona para delete.php então vá criando a página de deleção .

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://blocoforadoar.com.br/QuadroAviso/excluir_aviso.php?id=$item[id]

 

O link leva a página acima. Não leva diretamente para excluir_aviso.php que é aonde deveria cair. Pelo que eu entendi, teria que ir para está página: http://blocoforadoar.com.br/QuadroAviso/excluir_aviso.php

 

Tinha colocado assim agora:

 

<center><h3>Ultimos Avisos</h3></center> 

<?php
  		$dados=list_aviso();
		if ($dados != null){
			echo "<table border='1'><tr><td><b>Grupo</b></td><td><b>Titulo</b></td><td><b>Motivo</b></td><td><b>Inicio</b></td><td><b>Fim</b></td><td><b>Indisponibilidade ao cliente?</b></td><td><b>Tipo de Indisponibilidade?</b></td><td><b>Sistema Afetado</b></td><td><b>Cliente Afetado</b></td><td><b>Acao</b></td></tr>";
				foreach($dados as $item){
					echo '<tr align="left" bgcolor="#CCCCCC"><td> '.$item['grupo'].'</td><td>'.$item['titulo'].'</td><td>'.$item['motivo'].'</td><td> '.$item['dtInicial'].'</td><td> '.$item['dtFinal'].'</td><td> '.$item['gIndisponibilidade'].'</td><td> '.$item['dscIndisponibilidade'].'</td><td> '.$item['sisAfetados'].'</td><td> '.$item['cliAfetados'].'</td><td><a href="excluir_aviso.php?id=$item[id]"> Excluir </a></td></tr>';
				}
			echo "</table>";				
			}
			else{
				echo '<div align="center"><strong>Nenhum Aviso Cadastrado</strong></div>';
			}
  ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que você é iniciante recomendo você a pesquisar no google "crud php", lá vc vai encontrar como realizar as operações básicas como o inserir, deltar, atualizar dados..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim ,correto. Porém a variavel id está sem nunhum valor. Você precisa recuperar o campo id da tabela junto com os outros dador e jogar no foreach. O exemplo que passei eu fiz a suposição que existe esse campo na sua tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tendo criado o arquivo excluir_aviso.php, acrescente a esse arquivo o seguinte:

 

 

 

/*Simples exemplo.
Estude sobre como tratar os dados para evitar 
erros e até mesmo ataques em sua aplicação.
*/

<?php
$id=$_GET['id'] ;//o conteúdo dentro dos colchetes é o id que está na url em questão
echo $id;

?>

 

Estude sobre GET , POST e REQUEST no PHP

Compartilhar este post


Link para o post
Compartilhar em outros sites

O arquivo excluir_aviso.php não deveria ficar mais ou menos tipos o código abaixo?

 

 

<?php


$id=$_GET['id'] ;//o conteúdo dentro dos colchetes é o id que está na url em questão


$sql = mysql_query("DELETE FROM aviso WHERE id='$id'"); /*linha para cadastrar no banco de dados.*/
if ($sql) { // verificação para saber se foi cadastrado
echo "Deletado com sucesso!!";
} else { // Caso dê erro
echo "Falha ao deletar.
".mysql_error();
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui!

 

 

Agora estou com o seguinte problema: Ao ocorrer mensagem de aviso excluido com sucesso, ele não vai para página painel.php e sim ocorre um erro:

 

Warning: Cannot modify header information - headers already sent by (output started at /home/blocofor/public_html/QuadroAviso/view/excluir_aviso.php:16) in /home/blocofor/public_html/QuadroAviso/view/excluir_aviso.php on line 17

 

OBS, mesmo assim exclui o registro corretamente.

 

Código ficou Assim:

<?php

	$host = 'localhost';
		$usuario = 'blocofor_qa';
		$senha = 'odecioale';
		$bd = 'blocofor_qa'; 
		
		$conexao = mysql_connect($host,$usuario,$senha);			//vari�vel usada para conectar-se ao banco
		mysql_select_db($bd);										//seleciona o banco de dados que ser� usado
		
$id = $_GET['id'];
$sql = mysql_query("DELETE FROM aviso WHERE id = '$id' LIMIT 1");

if($sql){
 //se deletou redireciona para o index.php
 echo "<script>alert('Registro Excluido!');</script>";
 header('Location: painel.php');
}else{
 echo "<script>alert('Houve um erro ao deletar!');</script>";
 header('Location: painel.php');
}	

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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