Como apagar evento no FullCalendar com PHP


Neste tutorial, será apresentado como apagar um evento no FullCalendar com PHP. 

Primeiramente, será mostrado como criar o botão "Apagar Evento" no FullCalendar. 

Em seguida, será apresentado como receber, no JavaScript, o evento que deve ser excluído no banco de dados. 

Por fim, será mostrado como excluir o evento do FullCalendar no banco de dados com PHP.

Download do código fonte desenvolvido na aula: Download

Curso de PHP Developer: Mais Detalhes do Curso

Playlist completa sobre como usar Fullcalendar com PHP: Acessar

Receber as aulas gratuitas do curso de PHP Developer: Acessar


Para começar, é utilizado como base o projeto da aula "Como editar evento no FullCalendar com PHP".

No arquivo "index.php", na janela modal de visualização, foi acrescentado o botão "Apagar", com o seletor "btnApagarEvento".

<button type="button" class="btn btn-danger" id="btnApagarEvento">Apagar</button>

No arquivo "custom.js", é necessário receber o seletor "btnApagarEvento". Em seguida, é verificado se existe e aguarda o clique do usuário sobre o botão. Se o usuário clicar no botão "Apagar", será apresentado o alerta para confirmar a exclusão. Após a confirmação do usuário, é necessário receber o ID do evento e enviar para o arquivo "apagar_evento.php".

// Receber o SELETOR apagar evento
const btnApagarEvento = document.getElementById("btnApagarEvento");

// Somente acessa o IF quando existir o SELETOR "formEditEvento"
if (btnApagarEvento) {

	// Aguardar o usuario clicar no botao apagar
	btnApagarEvento.addEventListener("click", async () => {

		// Exibir uma caixa de diálogo de confirmação
		const confirmacao = window.confirm("Tem certeza de que deseja apagar este evento?");

		// Verificar se o usuário confirmou
		if (confirmacao) {

			// Receber o id do evento
			var idEvento = document.getElementById("visualizar_id").textContent;

			// Chamar o arquivo PHP responsável apagar o evento
			const dados = await fetch("apagar_evento.php?id=" + idEvento);

			
		}
	});
}

Criado o arquivo "apagar_evento.php". No mesmo, é recuperado o ID do evento enviado na URL e criada a QUERY para excluir o registro. No final, é retornado sucesso ou erro ao JavaScript.

<?php

// Incluir o arquivo com a conexão com banco de dados
include_once './conexao.php';

// Receber o id enviado pelo JavaScript
$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT);

// Acessa o IF quando exite o id do evento
if (!empty($id)) {

    // Criar a QUERY apagar evento no banco de dados
    $query_apagar_event = "DELETE FROM events WHERE id=:id";

    // Prepara a QUERY
    $apagar_event = $conn->prepare($query_apagar_event);

    // Substituir o link pelo valor
    $apagar_event->bindParam(':id', $id);

    // Verificar se consegui apagar corretamente
    if($apagar_event->execute()){
        $retorna = ['status' => true, 'msg' => 'Evento apagado com sucesso!'];
    }else{
        $retorna = ['status' => false, 'msg' => 'Erro: Evento não apagado!'];
    }

} else { // Acessa o ELSE quando o id está vazio
    $retorna = ['status' => false, 'msg' => 'Erro: Necessário enviar o id do evento!'];
}

// Converter o array em objeto e retornar para o JavaScript
echo json_encode($retorna);

No JavaScript, é recuperado o retorno do PHP, realizado a leitura dos dados de retorno. Se não conseguiu excluir o registro, é enviada a mensagem de erro para o HTML. Quando excluído corretamente, é enviada a mensagem de sucesso para o HTML, o evento é removido do FullCalendar e a janela modal é fechada.

// Realizar a leitura dos dados retornados pelo PHP
const resposta = await dados.json();

// Acessa o IF quando não cadastrar com sucesso
if(!resposta['status']){

	// Enviar a mensagem para o HTML
	msgViewEvento.innerHTML = `<div class="alert alert-danger" role="alert">${resposta['msg']}</div>`;
} else {

	// Enviar a mensagem para o HTML
	msg.innerHTML = `<div class="alert alert-success" role="alert">${resposta['msg']}</div>`;

	// Enviar a mensagem para o HTML
	msgViewEvento.innerHTML = "";

	// Recuperar o evento no FullCalendar
	const eventoExisteRemover = calendar.getEventById(idEvento);

	// Verificar se encontrou o evento no FullCalendar
	if(eventoExisteRemover){

		// Remover o evento do calendário
		eventoExisteRemover.remove();
	}

	// Chamar a função para remover a mensagem após 3 segundo
	removerMsg();

	// Fechar a janela modal
	visualizarModal.hide();

}

Baixar o código-fonte completo do projeto.

Bom, era isso. Espero que o tutorial tenha sido útil!