Como recuperar somente os eventos do usuário no FullCalendar com PHP


Neste tutorial, será apresentado como recuperar somente os eventos do usuário no FullCalendar com PHP. 

Primeiramente, será mostrado como criar o campo para selecionar o usuário. 

Em seguida, será apresentado como preencher o campo select com JavaScript. 

Por fim, será mostrado como listar no FullCalendar os eventos do usuário selecionado no campo select.


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 indicar para qual usuário pertence o evento no FullCalendar com PHP".

Criado o formulário com o campo de pesquisa no arquivo "index.php".

<form class="ms-2 me-2">

    <div class="col-md-6 col-sm-12">
        <label class="form-label" for="user_id">Pesquisar eventos do usuário</label>
        <select name="user_id" id="user_id" class="form-select">
            <option value="">Selecione</option>
        </select>
    </div>

</form>

No arquivo "custom.js", criada a função "listarUsuarios" para enviar a lista de usuários para o campo criado acima.

// Receber o seletor do campo listar os usuários
const user = document.getElementById("user_id");

// Verificar se existe o seletor user_id no HTML
if (user) {

    // Chamar a função
    listarUsuarios();
}

// Função para recuperar os usuários
async function listarUsuarios() {

    // Chamar o arquivo PHP para recuperar os usuários
    const dados = await fetch('listar_usuarios.php');

    // Ler os dados retornado do PHP
    const resposta = await dados.json();
    //console.log(resposta);

    // Verificar se status é TRUE e acessa o IF, senão acessa o ELSE e retorna a mensagem de erro 
    if (resposta['status']) {

        // Criar a variável com as opções para o campo SELECT
        var opcoes = `<option value="">Selecionar ou limpar</option>`;

        // Percorrer o array de usuários
        for (var i = 0; i < resposta.dados.length; i++) {

            // Atribuir o usuário como opção para o campo SELECT
            opcoes += `<option value="${resposta.dados[i]['id']}">${resposta.dados[i]['name']}</option>`;
        }

        // Enviar para o HTML as opções para o campo SELECT
        user.innerHTML = opcoes;
    } else {

        // Enviar para o HTML as opções para o campo SELECT
        user.innerHTML = `<option value="">${resposta['msg']}</option>`;
    }
}

Com o formulário criado e o campo preenchido com os usuários, é necessário identificar no JavaScript que o usuário do sistema selecionou uma opção no campo. Após identificar, com JavaScript, a seleção de uma opção no formulário, é chamada a função para carregar os eventos. Abaixo está a implementação para aguardar o usuário selecionar uma opção e chamar a função para recuperar os eventos.

// Receber o seletor user_id do campo select
var userId = document.getElementById('user_id');

// Aguardar o usuário selecionar valor no campo selecionar usuário
userId.addEventListener('change', function () {
    //console.log("Recuperar os eventos do usuário: " + userId.value);

    // Chamar a função carregar eventos
    calendar = carregarEventos();

    // Renderizar o calendário
    calendar.render();

});

Para recuperar somente os eventos do usuário no FullCalendar, é necessário receber o ID do usuário e enviá-lo para o arquivo PHP responsável por recuperar os eventos.

// Receber o id do usuário do campo Select
var user_id = document.getElementById('user_id').value;

// Chamar o arquivo PHP para recuperar os eventos
events: 'listar_evento.php?user_id=' + user_id,

No arquivo PHP que recupera os eventos armazenados no banco de dados, verifica-se se está sendo enviado o ID do usuário. Se existir o ID do usuário, são recuperados apenas os eventos correspondentes a ele. Senão, são recuperados todos os eventos.

<?php

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

// Receber o id do usuário
$user_id = filter_input(INPUT_GET, 'user_id', FILTER_SANITIZE_NUMBER_INT);

// Verificar se o parâmetro user_id foi enviado
if (!empty($user_id)) {

    // QUERY para recuperar os eventos
    $query_events = "SELECT evt.id, evt.title, evt.color, evt.start, evt.end, evt.obs, evt.user_id,
                usr.name, usr.email
                FROM events AS evt
                INNER JOIN users AS usr ON usr.id = evt.user_id
                WHERE usr.id = :user_id";

    // Prepara a QUERY
    $result_events = $conn->prepare($query_events);

    // Atribuir o valor do parâmetro
    $result_events->bindParam(':user_id', $user_id, PDO::PARAM_INT);

} else {

    // QUERY para recuperar os eventos
    $query_events = "SELECT evt.id, evt.title, evt.color, evt.start, evt.end, evt.obs, evt.user_id,
                usr.name, usr.email
                FROM events AS evt
                INNER JOIN users AS usr ON usr.id = evt.user_id";

    // Prepara a QUERY
    $result_events = $conn->prepare($query_events);
}

// Executar a QUERY
$result_events->execute();

// Criar o array que recebe os eventos
$eventos = [];

// Percorrer a lista de registros retornado do banco de dados
while ($row_events = $result_events->fetch(PDO::FETCH_ASSOC)) {

    // Extrair o array
    extract($row_events);

    $eventos[] = [
        'id' => $id,
        'title' => $title,
        'color' => $color,
        'start' => $start,
        'end' => $end,
        'obs' => $obs,
        'user_id' => $user_id,
        'name' => $name,
        'email' => $email
    ];
}

echo json_encode($eventos);

No vídeo, também é apresentado como manter o evento ao editar o evento do usuário e não alterar o usuário proprietário do evento. Se houver uma alteração no dono do evento, o evento é removido da lista de eventos do usuário que está sendo visualizado.

Baixar o código-fonte completo do projeto.

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