CRUD com Bootstrap, PHP & MySQL – Parte IV

Esta é uma série de tutoriais, na qual você vai aprender uma forma eficaz de implementar um sistema de CRUD completo, usando o Bootstrap no front-end e PHP com MySQL no back end.

Agora, neste tutorial, você vai ver como criar os arquivos funções para implementar os formulários de inserção e a edição no cadastro de clientes. Além disso, vamos criar as funções de persistência dessas informações no banco de dados.

crud-bootstrap-customers-add

Ao final deste tutorial, você vai ter uma estrutura básica de cadastro de clientes para reaproveitar no projeto, na qual o usuário vai poder preencher os dados do cadastro de clientes.

Aviso: Devido a outros projetos, vou adicionar as explicações de cada código aos poucos, durante a semana.


Antes de Começar

Eu vou assumir que você já está com o seu ambiente de desenvolvimento funcionando, e que já passou pelas partes anteriores desta série.

Se você ainda não estiver com o ambiente pronto, é só ver a introdução desta série para instalar os pré-requisitos, e criar o BD.

Este tutorial é um pouco extenso, e tem alguns códigos mais complexos. Separe um tempo para entender bem, e caso não entenda alguma parte, é só perguntar nos comentários.


Passo 1: Crie a Função de Cadastro

Voltando à pasta “customers“, adicione estas a função de cadastro no arquivo functions.php:


Passo 2: Crie o Formulário de Cadastro

Agora, crie um arquivo chamado add.php na pasta customers. Esse arquivo vai ter a marcação do formulário de cadastro do cliente:


Passo  3: Crie a Função de Persistência no BD

No arquivo database.php, implemente a função que vai inserir um registro no banco de dados:


Passo 4: Crie a Função de Edição/Atualização

Agora, vamos fazer a parte de edição, ou atualização dos clientes.

O primeiro passo é implementar a função edit() no módulo de clientes, ou seja, no arquivo functions.php:

 


Passo 5: Implemente o Formulário de Edição

Agora, crie um arquivo chamado edit.php na pasta customers. Esse arquivo vai ter a marcação do formulário de edição do cliente, que é quase igual à do cadastro:

 


Passo  6: Crie a Função de Atualização no BD

E no arquivo database.php, implemente a função que faz a atualização de um registro no banco de dados:

 


Próximos Passos…

Há várias melhorias possíveis nesse código. Mas, como este é um tutorial para você começar a entender o CRUD, aos poucos será possível adicionar outras funcionalidades e melhorar a segurança e o reaproveitamento de funções.

No próximo tutorial, vamos ver a parte de exibição dos detalhes de um registro (Details).

50 comentários em “CRUD com Bootstrap, PHP & MySQL – Parte IV

Adicione o seu

  1. Ola, encontrei um erro em edit.php, linha 10. O update não estava funcionando, então vi que o update estava se baseando em “name”, mas deveria ser pelo “id”. Então modifiquei e funcionou, segue o trecho de código: <form action="edit.php?id=”

  2. Muito bom o tutorial!
    Parabéns pelo trabalho, mas eu estou com um problema,
    ao cadastrar ou remover um elemento, não estão aparecendo as
    mensagens, elas deveriam aparecer?

  3. Boa noite pessoal !

    Segui todas as etapas do tutorial, todas as funções estão funcionando, exceto a de adicionar/inserir dados (add()), preencho todo o formulário e quando clico em Salvar, ele vai para a tela de cliente (index.php) mas não grava no banco de dados. Alguém conseguiu inserir os dados ? Obrigado

      1. Ruan muitíssimo obrigado, consegui descobrir pelo debug !!!
        Parabéns pelo material, pelo apoio e iniciativa.

        Valeu !!

      2. Olá, assim como o amigo fiz todas as etapas e não add no banco!
        O que o amigo fez para salvar os registros?

        Parabéns pelo post!!! 😉

  4. Primeiro parabéns pelo tutorial, agora como poderia fazer para formatar a data de nascimento , para evitar o erro de cadastro no formato dd/mm/yyyy? Dojeito que está funciona muito bem ma no formato YYYY/mm/dd sendodigitado no form. Como tratar esse POST antes de grvar no banco?

  5. Tudo funcionando muito bem, exceto ao adicionar o telefone, ele grava dados diferentes do digitado. Deve ser algo referente ao formato, vou investigar. Obrigado pelas aulas!

      1. É isso mesmo Ruan. Obrigado. Publiquei minha resposta no artigo errado, agora que vi sua resposta, segue meu comentário:

        Olá Ruan, escrevi mais cedo sobre o problema ao gravar o número de telefone e descobri a solução.

        O problema ocorre porque o campo telefone foi definido no banco de dados como tipo INT e como não há validação na entrada, alguns dados podem ser perdidos ou modificados ao gravar. O tamanho máximo de um campo INT é: 2147483647, no caso o dado inserido foi “3155555555”, e o sistema gravou: 2147483647.

        A melhor solução na minha opinião é alterar a definição do campo no banco de dados para VARCHAR pois o telefone além de não ser índice, apresenta-se como um valor textual e não haverá necessidade de cálculos. O mesmo deve ser feito para os campos zip_code e mobile. Apesar de aumentar um pouco o tamanho do banco de dados, esta é a melhor prática em se tratando de modelagem de dados.

        Há exceção no campo ie, que apesar de não ser utilizado para cálculos, poderia ser utilizado como índice, porém alteraria a definição para BIGINT. Se este não for utilizado como índice, a definição pode ser VARCHAR também: a mesma lógica que você utilizou para cpf_cnpj.

        Espero ter contribuído. Grande Abraço!

  6. Muito bom desenvolvimento e didática. Parabéns !

    Na parte de cadastro sem problemas, só não fiz o css ainda.
    Porém, em visualizar e editar, não está buscando os dados, nem gravando.

  7. Olá, segui os passos do tutorial, mas estou com dificuldade na parte de inserção de dados. Quando clico em salvar o sistema vai para a tela com a tabela de clientes e o registro não é salvo. Também percebi que quando faço uma edição não está sendo exibido as mensagens de sucesso ou erro. Grato pela ajuda.

  8. Comente a linha que tem o redirecionaento: “header(‘location: index.php’)
    Daí verifique qual erro pode estar ocorrendo. Revise seu código todo, desde o database.php

    As mensagens não estão implementadas, ainda.

  9. Muito organizado e limpo o seu projeto. As vezes fica até difícil de entender um pouco, porque você tenta resumir e reutilizar os códigos o máximo possível, o que é bom.

  10. boa tarde!
    gostei muito do seu trabalho

    estou com um problema
    Notice: Use of undefined constant open_database – assumed ‘open_database’ in C:\wamp64\www\exc\index.php on line 5

    e nesse aqui
    Fatal error: Call to undefined function add() in C:\wamp64\www\exc\customers\add.php on line 3

    poderia ajudar

  11. Boa Noite, Parabéns pelo site e tutoriais é de grande importância para quem está aprendendo..

    Estou com uma dúvida: no cadastro da data de nascimento, temos que digitar no input o formato americano para que a data seja salva corretamente no banco. Como digitar o formato brasileiro e ele ainda sim cadastrar o americano? Obrigado.

  12. Bom dia Ruan! Sobre a inserção de um novo registro no BD, copiei fielmente sua instrução e quando clico no botão salvar de cadastro do novo cliente, nada acontece e volto a pagina index.php de cliente. Já testei os outros comandos, atualizar, deletar e funcionam perfeitamente, mas a inserção nem da erro em tela ou pelo inspetor de elementos do Chrome, nem cadastra os dados que coloquei nos inputs. Poderia me ajudar? Desde já agradeço pelo ótimo tutorial.

    Links no PasteBin com meu código
    http://pastebin.com/taE8z8QM
    http://pastebin.com/mGj0YBri
    http://pastebin.com/LFUpQNqD

      1. Já consegui Ruan, obrigado! Agora só estou com um problema pra mostrar os dados que vem nesta parte da função find( );

        if ($result) {
        if ($result->num_rows > 0) {
        $found = $result->fetch_all(MYSQLI_ASSOC);
        }
        }
        Aqui o que faço? Aqui dá erro no mysqli mesmo, não dá pra debugar rsrsrs… pesquisei aqui e ainda não encontrei o erro. Esta linha que vem o $found vem comentada no código do tutorial.

  13. Boa Tarde, Estou com o mesmo problema na página add.php segui o processo na medida que está no site, o botão salvar não acessa o banco e não armazena as informações. Vejo que vai para página index.php.

    Favor Alguém pode me ajudar, por que o código está bom bem organizado, mas está faltando algo, como não sou mestre em PHP, estou começando agora..
    Aguardo a respostas de amigos..
    Grato,
    Marcos

    1. Nesta parte Marcos, só consegui resolver quando alterei na tabela do banco de dados os tipos de dados que o formulário recebe… rsrs… ou você trata no próprio código ou então vai direto na tabela e joga um String em algumas destas variáveis.

  14. PARA QUEM ESTÁ COM PROBLEMA EM INSERIR OS DADOS NA TABELA, QUANDO CLICA EM SALVAR:

    O erro está na função save(), quando vai inserir os valores com SQL: Está faltando espaços. Apenas isto. Segue:
    $sql = “INSERT INTO ” . $table . ” ($columns) ” . ” VALUES ” . “($values);”;

    Pelo menos no meu era isso. Para quem estiver com outro problema, experimente dar print_r($columns) e print_r($values) antes da apresentar a variável $sql e execute a função no add.php clicando em Salvar, vendo o que está inserindo e se a quantidade de campos da tabela batem com a quantidade de parâmetros. Senão, faça bater. No meu, também não batia. Pois eu segui o tutorial fazendo já o meu projeto, que são campos diferentes. Então, eu sem querer acabei copiando campos do tutor que não existiam na minha tabela SQL.
    Se mesmo assim houver outro erro, vão colocando print_r($variável) sempre depois da variável receber algum valor e teste direto no sistema web procurando o erro.
    Espero ter ajudado!!
    Abraço.

  15. Boa tarde, Ruan. Adorei seu tutorial, muito obrigado!! Estou conseguindo produzir meu projeto de processo seletivo graças a ele.
    Estou com uma dúvida:
    Na function save() dentro de database.php, eu estava com erros ao inserir os valores no BD. Porém, no meu try {}, não estava mostrando nenhuma mensagem sobre o registro cadastrado ter sucesso ou não, pelo $_SESSION.
    Tem ideia do que posso fazer e por onde começar?
    Obrigado!
    Abraços

  16. Como eu poderia modificar o $modified[‘name’] por exemplo na função de cadastro (add.php) ? pois tenho
    um campo $modified[‘valor] no meu programa, só que por algum motivo não consigo modificar…
    tentei colocar $modified[‘valor’] = função_que_formata($modified[‘valor’]); Mas nao deu certo… ele duplica a chave ‘valor’. 🙁

  17. Boa noite Ruan, tudo joia? Estou com problemas. Na atualização, a página é carregada só que os valores não vem preenchidos nos campos. Não ocorre erro nenhum. (*Estou fazendo esse CRUD com outros campos). Muito obrigado. abracos

  18. Neste trecho do functions, esta entrando no print_r(“entrando aqui”)

    if (isset($_POST[‘paciente’])) {
    $paciente = $_POST[‘paciente’];
    //$paciente[‘modified’] = $now->format(“Y-m-d H:i:s”);

    print_r($id);
    print_r($paciente);

    update('tb_paciente', $id, $paciente);
    header('location: index.php');
    } else {

    global $paciente;
    $paciente = find('tb_paciente', $id);

    print_r("entrando aqui");
    print_r($paciente);
    }

    } else {

    header('location: index.php');

    }

  19. gostaria de saber se tem como criar algumas funções que não estou conseguindo implesmenta no codigo, que era a função pra imprimir o pdf das informações já existentes dos usuários e a função de cadastro para usuarios, os clientes não precisam ter acesso ao dash mas gostaria de criar uma area onde eles possam preencher o form e imprimir as funções semparadamente do dash, exite alguma possibilidade de implementar no codigo? ou pelo menos me dar algum norte para que eu possa pesquisar sobre e criar eu mesmo?

    1. Você pode seguir os mesmos passos para criar um CRUD de usuários. Basta criar a tabela e mudar um pouco o código.

      Para criar um relatório PDF, você precisa usar alguma biblioteca que faça isso e colocar nesse CRUD. Outra opção é usar o modo de impressão do navegador mesmo.

  20. Parabens pelo excelente post

    mais estou com um problema quando clico no botao EDITAR
    aparece nos campos a seguinte linha de comando:

    Notice: Undefined index: name in D:\crud-bootstrap-php\customers\edit.php on line 15

    Alguem pode me ajudar ?

  21. Olá, boa tarde! Muito bom o tutorial!!
    Estou com um problema.. quando clico em “clientes” na tela principal ele apresenta a seguinte mensagem de erro: Fatal error: Call to undefined method mysqli_result::fetch_all() in D:\MSX\wwwroot\projetoX\crud\inc\database.php on line 44

    E quando eu clico em savar, os dados não estão sendo enviados para o DB e aparece uma tela em branco.

    O que poderia ser?

    Desde já agradeço.

    Um abraço

    1. Provavelmente você está com uma versão desatualizada do PHP, ou da mysqli.
      Daí, não encontra a função fetch_all().

      Use o método alternativo que está comentado no arquivo database.php, na função find().
      Revise a parte III, caso necessário.

      Abs.
      Ruan

  22. Olá Ruan tudo bem? Olha só criando a tabela “customers” conforme o tutorial dá tudo certo aqui. Mas quando crio a tabela “suportes” não consigo inserir os dados, no caso dos names nos inputs como devo fazer para associar aquele input a tabela que quero inserir dados?

  23. Boa noite, excelente trabalho, no meu nao esta inserindo novos clientes, poderia me explicar o por que, muito obrigado. quando clico em salvar ele vai pra o index mas nao adiciona novos clientes.

Deixe um comentário

Orgulhosamente feito com WordPress | Tema: Baskerville 2 por Anders Noren

Acima ↑