Como pesquisar cliente no FullCalendar com PHP


Neste tutorial, será apresentado como pesquisar clientes no FullCalendar com PHP.

Primeiramente, será mostrado como criar o campo para pesquisar clientes.

Em seguida, será apresentado como pesquisar clientes no banco de dados.

Por fim, será mostrado como recuperar do banco de dados os agendamentos do usuário.

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 listar os agendamentos do cliente no FullCalendar com PHP".

Criado no arquivo "index.php" o campo pesquisar cliente.

<div class="col-md-5 col-sm-12">
    <label class="form-label" for="client_id">Pesquisar eventos do cliente</label>
    <input type="text" name="client_id" id="client_id" data-target-pesq-client-id="" class="form-control" placeholder="Nome do cliente">
    <!-- Carregar as opções retornada do BD -->
    <span id="resultado_pesquisa" style="position: absolute; z-index: 1;"></span>
</div>

Criado o arquivo "pesquisar_cliente.js", nele foi implementado o JavaScript que recebe o valor do campo de pesquisa criado acima. Após receber o valor, faz a chamada ao arquivo "pesquisar_clientes.php", para que ele recupere os clientes do banco de dados. Após recuperar os usuários, o JavaScript envia os dados para o HTML.

// Executar quando o documento HTML for completamente carregado
document.addEventListener('DOMContentLoaded', function () {

    // Receber o SELETOR do HTML
    const inputNomeCliente = document.getElementById('client_id');
    const resultadoPesquisa = document.getElementById('resultado_pesquisa');

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

        // Aguardar o usuario clicar no campo pesquisar
        inputNomeCliente.addEventListener("input", async () => {

            // Acessa o IF quando o usuário digitar mais de 3 caracteres
            if (inputNomeCliente.value.length >= 3) {

                // Chamar o arquivo PHP para recuperar os clientes
                const dados = await fetch('pesquisar_clientes.php?name=' + inputNomeCliente.value);

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

                // Criar a variável com a lista
                var opcoes = "<ul class='list-group'>";

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

                    for (var i = 0; i < resposta.dados.length; i++) {
                        opcoes += `<li class='list-group-item list-group-item-action' data-target-cliente-id='${resposta.dados[i]['id']}' style='cursor: pointer;'>${resposta.dados[i]['name']}</li>`;
                    }
                } else {
                    opcoes += `<li class='list-group-item disabled'>${resposta['msg']}</li>`;
                }

                // Finalizar a lista
                opcoes += "</ul>";

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

            // Carregar o JS responsável em receber o id do cliente
            receberClienteParaPesquisar();

        });
    }

    // Aguardar o click do usuário fora do dropdown para fechar o dropdown
    document.addEventListener('click', function (event) {
        const validar_clique = inputNomeCliente.contains(event.target);
        if (!validar_clique) {
            document.getElementById('resultado_pesquisa').innerHTML = '';
        }
    });

});

Conforme o cliente que o usuário do sistema selecionar, é identificado no arquivo "carregar_eventos_cliente.js" e os eventos do cliente são carregados.

// Função para receber o id do cliente e pesuisar os eventos
function receberClienteParaPesquisar() {

    // Obter todos os elementos li da lista
    const listaItens = document.querySelectorAll('.list-group-item');

    // Adicionar um ouvinte de eventos a cada item da lista
    listaItens.forEach(item => {

        // Identificar o clique do usuário 
        item.addEventListener('click', function () {

            // Receber o valor do atributo data-target-cliente-id
            const clienteId = this.getAttribute('data-target-cliente-id');

            // Receber o valor que está dentro da tag <li></li>
            const clienteNome = this.textContent.trim();

            // Enviar o nome do cliente para o campo pesquisar cliente
            document.getElementById('client_id').value = clienteNome;

            // Enviar o valor para o atributo 'data-target-pesq-client-id' do campo pesquisar cliente
            document.getElementById('client_id').setAttribute('data-target-pesq-client-id', clienteId);

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

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

    });

}

Para carregar os eventos do cliente, no arquivo "carregar_eventos.js", é necessário receber o ID do cliente.

// Receber atributo do campo Select
var inputClienteId = document.getElementById('client_id');

// Recupere o valor do atributo data-target-pesq-client-id
const client_id = inputClienteId.getAttribute('data-target-pesq-client-id');

Baixar o código-fonte completo do projeto.

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