logo

Paleta - Deixe colorido🎨

Palette — Construtor visual de páginas. Não precisa ser designer.

Demonstração ao vivo Baixar Palette

Scroll

Lições de PHP - Lição 3.4 - Trabalhando com Banco de Dados MySQL. Consultas de Exclusão DELETE.

08/12/2019, by Ivan

Na lição anterior, aprendemos como adicionar novos métodos à nossa classe de gerenciamento simpleCMS, agora vamos adicionar outro método para excluir um registro delete().

Vamos adicionar o método como usual:

public function delete($mid){

}  

 Como você pode ver, passamos o parâmetro $mid - id do nosso registro. Se você se lembrar da lição anterior, decidimos usar uma forma diferente de passar um parâmetro, diretamente da solicitação get, e agora tentaremos passar o parâmetro de uma forma diferente.

Bem, definimos o método, agora vamos escrever o processamento do caminho para o arquivo index.php:

	  switch ($_GET['admin']){
		    case 'add':
			  print $obj->display_admin(); // se a variável for 1, exibir o formulário de adição
			break;
			case 'update':
			  print $obj->display_update();  // se a variável for update, exibir o formulário de edição
			break;
			case 'delete':
			  if($_GET['mid']){ //se a variável for delete, verificar a presença de mid
			    $obj->delete($_GET['mid']); //chamar o método de exclusão de mensagem
				print $obj->display_public(); // se não houver variável, exibir mensagens
			  }else{
			    print '<p>mid não selecionado!</p>';
			    print $obj->display_public(); // exibir lista de mensagens
			  }
			break;
			default:
			  print $obj->display_public(); // se não houver variável, exibir mensagens
		  }

Para que tudo funcione corretamente e a mensagem seja excluída, a URL deve ser:

http://teste/index.php?admin=delete&mid=7

Neste caso, a mensagem com mid=7 será excluída. Para fazer isso, vamos escrever a implementação do nosso método delete():

  public function delete($mid){
    mysql_query('DELETE FROM Messages WHERE mid='.$mid) or die(mysql_error());
  }  

Vamos analisar como a consulta mysql delete funciona para excluir um registro. Primeiro vem a palavra DELETE, seguida pelo segundo operador FROM. Após o operador FROM, indicamos a tabela da qual excluir registros (CUIDADO! se não especificar a condição de exclusão, todos os registros da tabela serão excluídos!) e depois indicamos as condições para excluir registros. Estamos interessados no registro com mid, cujo valor passamos através do parâmetro do método. No final, verificamos se a consulta foi executada ou não.

Como eu disse antes, nosso método será chamado quando houver dois parâmetros na URL admin=delete&mid=7. Para fazer isso, vamos adicionar links sob cada mensagem, editando o método display_public():

  public function display_public() { // método de exibição de mensagens
    $content = '';
	$sql = 'SELECT * FROM Messages ORDER BY mid DESC'; //consulta de seleção
	$result = mysql_query($sql) or die(mysql_error());  // armazenamos o resultado de execução da consulta de seleção em uma variável
	while($row = mysql_fetch_array($result)){ // a variável da consulta de seleção deve ser processada com a função especial mysql_fetch_array()
	  $content .= '<div class="post" id="mid-' . $row['mid'] . '">'; // div envolvendo o registro
	  $content .= '<span class="time">#' . $row['mid'] . ' de ' . date('d-m-Y', $row['created']) . '</span><h2>' . $row['title'] . '</h2>'; 	// exibir hora e título
	  $content .= '<p>' . $row['bodytext'] . '</p>'; // exibir texto de mensagem
	  $content .= '<p>';
	  $content .= '<a href="/index.php?admin=update&mid=' . $row['mid'] . '">Editar mensagem</a>'; // adicionar link para editar mensagem
	  $content .= '<a href="/index.php?admin=delete&mid=' . $row['mid'] . '">Excluir mensagem</a>'; //adicionar link para excluir mensagem
	  $content .= '</p>';
	  $content .= '</div>'; // fim do div envolvente
	}
	$content .= '<p><a href="/index.php?admin=add">Adicionar mensagem</a></p>';
    return $content;
  }

Agora quando clicamos no link excluir mensagem, a mensagem é excluída como planejado. Agora você pode remover rapidamente mensagens desnecessárias do site diretamente no site, não através do PhpMyAdmin.

Tudo que resta é fazer pequenos recuos entre os links de edição e exclusão de mensagens:

.post a{
  padding-right: 5px;
}

 

 Acho que essa lição terminou, na próxima lição analisaremos outro operador importante para seleção de várias tabelas JOIN.