CRUD com Bootstrap, PHP & MySQL – Parte III

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 usar em um módulo de cadastro de clientes. Depois disso, vamos criar uma listagem inicial com os botões de acesso para as funcionalidades do cadastro, como inserção, edição e exclusão de cada registro.

crud-bootstrap-customers

Ao final deste tutorial, você vai ter uma estrutura básica de listagem de clientes para reaproveitar no projeto, na qual o usuário vai poder acessar as funcionalidades de CRUD, do cadastro de clientes.


Antes de Começar

Eu vou assumir que você já está com o seu ambiente de desenvolvimento funcionando, e que já passou pela parte 1 e pela parte 2 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.


Passo 1: Crie o Módulo e as Funções

Para começar, crie uma pasta chamada “customers“.

Essa pasta será o nosso módulo de clientes, e ela terá todas as funcionalidades relacionadas a este model, ou entidade.

Dentro da pasta, crie um arquivo chamado “functions.php“. Esse arquivo terá todas as funções das telas de cadastro de clientes. O código desse arquivo fica assim, por enquanto:

As primeiras linhas fazem a importação do arquivo de configurações e da camada de acesso a dados (DBAPI).

Depois, eu criei duas variáveis globais, para serem usadas entre as funções, e que vão guardar os registros que estiverem sendo usados:

  • A variável $customers, irá guardar um conjunto de registros de clientes.
  • E a variável $customer guardará um único cliente, para os casos de inserção e atualização (CREATE e UPDATE).

Observe a diferença entre plural e singular nos nomes de variáveis. Em web, você vai usar muito isso: plural para vários, e singular para um único item.

A função index() é a função que será chamada na tela principal de clientes, e ela fará a consulta pelos registros no banco de dados, e depois colocará tudo na variável $customers, para que possamos exibir.

Observe que tem uma função find_all() sendo usada, é ela que traz os dados. Mas, essa função não existe ainda.

Precisamos implementar essa função no arquivo database.php.


Passo 2: Implemente a Consulta no Banco de Dados

Agora, vamos implementar as funções de consulta ao banco de dados. Vamos tentar deixar o mais genérico possível.

Abra o arquivo database.php, que está na pasta /inc do seu projeto.

Crie a função a seguir:

Essa função find faz uma busca em uma determinada tabela.

Se for passado algum id, nos parâmetros, a pesquisa será feita por esse id, que é a chave primária da tabela (como definimos no começo).

Se não for passado o id, a consulta retornará todos os registros da tabela.

Nos dois casos, a consulta retornará dados associativos (usando o fetch_assoc e MYSQLI_ASSOC), ou seja, são arrays com o nome da coluna e o valor dela. Assim, fica mais fácil na hora de implementar a tela.

Caso aconteça algum problema na consulta e for disparada uma Exceção, nós devemos exibir o que aconteceu em forma de mensagem. Para isso, eu criei duas variáveis de sessão, do PHP, que vão guardar a mensagem da exception, e assim poderemos exibir na tela.

Agora, crie também a seguinte função:

Essa função é só um alias (leia-se “aláias”) para a função find, ou seja, uma outra forma mais prática de chamar a função sem precisar do parâmetro.

A função find_all retorna todos os registros de uma tabela.


Passo 3: Crie a Listagem dos Registros

Voltando na pasta “customers”, crie um arquivo chamado index.php.

Esse arquivo será a listagem dos registros, e também será a página principal do módulo de clientes.

Implemente a marcação abaixo, nesse arquivo: 

Vamos por partes…

As primeiras linhas fazem a ligação dessa página com o módulo de clientes (pelo arquivo functions.php) e chama função index, que é o backend desta página.

Depois, coloquei um include para trazer o template de header da página, com todos os CSS’s e Metatags necessários. Assim, não precisamos reescrever essa parte.

A partir da linha oito (8) começa a marcação da listagem, apenas com um topo simples e algumas opções.

Na linha 20, você pode ver a verificação de mensagens de seção. Isso serve para exibir alguma notificação que tenha sido definida no backend, como mensagens de erro ou de sucesso, por exemplo.

Depois, você pode ver a tabela de registros. Dentro dela tem um loop (usando o foreach) que vai pegar cada registro da variável $customers e criar uma linha nessa tabela e exibir os dados. Como usamos os dados de forma associativa (lá na camada de acesso a dados), é possível obter esses dados pelo nome das colunas.

Isso é um padrão em vários frameworks. Também é possível criar objetos dessa forma.

A linha 49, mostra como você pode criar links para operações nos registros da tabela. Basta passar o ID como parâmetro, e a função no backend (do arquivo functions.php) deve ler e usar esse parâmetro.

E, no final, coloquei o template de footer, para fechar a página.


Passo 4: Adicione Registros via SQL

Para ver essa tela funcionando, enquanto não temos as telas de inserção, você pode criar registros na tabela “customers” via SQL, usando o PHPMyAdmin, por exemplo:

Você pode alterar esse SQL para criar mais registros.

Até aqui, você deve ter uma tela, mais ou menos, como essa:

crud-bootstrap-customers

E a estrutura do seu projeto deve estar assim:

  •  crud-bootstrap-php
    •  css
    •  customers
      •  functions.php
      •  index.php
    •  fonts
    •  inc
      •  database.php
      •  footer.php
      •  header.php
    •  js
    •  config.php
    •  index.php

Próximos Passos…

Nos próximos tutoriais, você vai precisar adicionar as outras funções no arquivo functions.php.

  • Carlos

    Olá Ruan, antes de tudo parabéns pelo seu site. Suas dicas são de grande ajuda. Quanto ao tutorial parece que há algo de errado pois, ao chamar a função index(), retorna página em branco. Será que você poderia esclarecer? Obrigado!

    • Obrigado, Carlos! Que bom que está servindo para você.

      A função index() somente faz a consulta e coloca os dados na variável global (ela não faz output nenhum).
      O que monta a página é o arquivo index.php, no Passo 3. Mesmo que aquela função não funcione,
      deveria aparecer pelo menos o título da página.

      Verifica se todos esses arquivos estão na pasta correta (“customers”), e se as funções estão corretas desde o DBAPI.
      Qualquer coisa, manda um e-mail, que a gente tenta encontrar o problema.

      Vou até dar uma revisada em todos esses tutoriais.

      Abs.
      Ruan

      • Carlos

        Verifiquei toda a estrutura e ela está de acordo com o que você propôs.
        Quando digo que a página retorna em branco, é porque testei o arquivo index.php sem a função index() e a página foi montada (sem os dados é claro).

        • Amigo, estou com o mesmo problema, pode me avisar se consegui resolver? Grande abraço!

      • Marcello

        Falta no tutorial a criação da função INDEX(), por isso não temos a tabela preenchida. Poderia por gentileza corrigir o código do arquivo FUNCTIONS.PHP incluindo esta função?

        • Marcello

          Perdão erro meu. Existe sim a função . Mas ela realmente não esta retornando nada

        • Marcello

          Tive avanços da seguinte maneira:
          1º passei a função FIND_ALL para cima, logo após close_database (eu havia colocado no final do arquivo);
          2º recebo o seguinte erro: Fatal error: Call to undefined method mysqli_result::fetch_all() in /var/www/bcrud/inc/database.php … O que tem haver com a versão do driver do MYSQL. Estou usando o php 5.3.10, que suportamente ja deveria estar correto, mas nao está então estou procurando uma solução para substituir esta função. mysqli_result::fetch_all() requires MySQL Native Driver (mysqlnd).

          • Marcello, caso seu server não tenha o driver, você pode mudar para as funções do PDO.
            Pra isso, você deve alterar as funções do arquivo “database.php”

            Quanto a index() “não está retornando nada”, verifique as primeiras linhas do Passo 3.

            Depois, verifique se há mesmo registros na tabela.

            Sds.
            Ruan

  • Julio

    Bom dia Amigo!!

    Estou tendo este erro você poderia me ajudar por favor?

    Abraço, curto muito seus tutoriais tenho aprendido bastante.

    Parse error: syntax error, unexpected ‘<' in C:wampwwwcrud-bootstrapincdatabase.php on line 23
    Call Stack
    # Time Memory Function Location
    1 0.0010 137736 {main}( ) ..index.php:0
    2 0.0010 139984 require_once( 'C:wampwwwcrud-bootstrapcustomersfunctions.php' ) ..index.php:2

    • Obrigado, Julio.

      Tem alguma tag incorreta no seu arquivo database.php (database.php on line 23);
      Isso é um erro de sintaxe, dá uma revisada.

      • Julio

        Ruan deu certo. Tem previsão quando vai começar a sair a aula 4?

    • Luandierison

      Estava com o mesmo problema, no arquivo database está faltando fechar as tags do php, como copiamos e colamos o código do site, está faltando fechar….rsrs é só isso. são 3 trechos que precisam ser fechados no total.

      • Obrigado pela contribuição, Luandierison.

        Apenas uma observação: em scripts PHP, que só tenham código PHP, não é necessário fechar a tag no final.
        Nesses exemplos, precisei colocar a tag no começo para manter o highlighting (as cores) do código. Mas, no arquivo final, basta uma tag PHP no inicio do arquivo.

        Se for “copiar e colar”, deve ser somente a função, e não o trecho todo. =)

  • Paolo

    Boa tarde,

    Acabei de achar seu Tutorial e está muito bom, són estou com a dúvida de como pegar o data-customer e passar para minha função o valor quando o usuário clicar em “Sim” na modal

  • Sou meio devagar, mas ta indo.

  • Wellington Felix

    Ótimo tutorial. Estou com um erro que ainda não consegui corrigir, nos templates você usar o comando para passar o caminho da pasta principal do projeto e completa com o endereço do bootstrap e outros caminhos, se eu deixo o comando echo, nenhuma das páginas carregam o bootstrap se eu deixo o bootstrap carrega na primeira index, mas na index do customers não carrega, qual o motivo disso? Obrigado!

    • A primeira carrega, porque está no mesmo nível de pastas. As outras não vão carregar porque não encontram as pastas.

      Você deve usar a constante BASEURL (config.php) para todos os links de CSS e Js. É pra isso que ela foi criada.

  • Paulo Eduardo

    Olá Ruan, teu tutorial está me ajudando muito em um trabalho que estou fazendo para faculdade.
    Só quero te avisar que está faltando algumas imagens aqui na página, uma no início e outra mais para o final.
    Abraços.

  • Wemerson

    Opa, parabéns pelo Tutorial. Estou aprendendo e adaptando às minhas situações e está dando certo. Tem previsão da aula 4?

    • Obrigado, Wemerson! Devo publicar essa semana ainda.

  • Parabéns, excelente suas explicações e funciona perfeitamente.

  • Matheus

    Parabéns pelo tutorial Ruan!
    Eu estou tendo um problema com a index da pasta customers, fiz tudo conforme o tutorial e já verifiquei que todos os outros arquivos de configuração estão corretos!
    O problema é que na página não é exibida a tabela com os dados dos clientes!
    Não consegui identificar o que ocasionou isso!

  • Valério Pinto

    Olá, parabéns pela iniciativa, me ajudou e aprendi bastante, Mas, ainda vai ter continuação deste Tutorial ?

    • Obrigado, Valério!
      Vai continuar, sim. Estive ocupado com alguns projetos, por isso a demora. Mas devo já voltar a publicar essa série.

  • Ari Rodrigues

    Parabens Ruan, nunca tinha achado um tutorial tão bem explicado, espero que continue pois estou gostando muito.

    Ruan, eu estou com um probleminha na linha 42. Está dando o seguinte erro:
    Warning: Invalid argument supplied for foreach() in /var/www/html/controlepassagens/index.php on line 94

    Ja revisei todo o código e ainda não encontrei o erro, ja copiei diretamente do seu site mesmo assim dá o mesmo erro.

    Você teria como me ajudar? Ou outro colega que está acompanhando o site?

    Valeu…

    • Obrigado, Ari.

      Se o erro é no foreach, ele deve não estar encontrando a variável $customer

      Verifica no teu arquivo functions.php, se ela está declarada e pública.

      Sds.
      Ruan

  • Jorge Wendell Queiros

    Oi o tutorial é muito bom !! so que ta dando erro no meu…
    Notice: Trying to get property of non-object in C:xampphtdocscentralincdatabase.php on line 44 mas quando eu comente o index(); ele some
    mas esse outro não sai.
    Warning: Invalid argument supplied for foreach() in C:xampphtdocscentralcustomersindex.php on line 42

    • Você não deve comentar o index(). É essa função que inicia os dados para a tela.

      Deve ter algum problema com a sua variável $customers

      Revise os arquivos functions.php e database.php, para ver se está passando os parâmetros corretos.

  • Parabéns pelo excelente tutorial.

    Muito obrigado por disponibilizar de seu tempo para compartilhar seus conhecimentos, estou seguindo o tutorial, utilizo servidor próprio, ubuntu server, com algumas aplicações rodando normalmente.

    No ultimo tutorial tem esta chamada require_once(DBAPI); coloquei um echo antes disso e a configuração funciona normalmente, mas depois dessa chamada, o erro HTTP ERROR 500.

    Revisei todo o código, mas não identifiquei o porque que o DBAPI não carrega.

    Agradeceria muito a tua ajuda.

    Muito obrigado.

    • Estou de volta meu querido

      Novamente para te parabenizar, teu codigo não tem erro algum, publiquei na minha revenda, e funcionou corretamente.

      Parabéns.

      • Obrigado Washington!

        Provavelmente é alguma diferença de versão do PHP, ou do Apache.
        Esse DBAPI é apenas uma constante para o caminho do arquivo database.php, então erro 500 não é de código e sim de configuração no server.

        Abs.
        Ruan

  • Eduardo Santos

    Olá e Parabens pelo trabalho.

    O que houve com as partes 4,5 e 6? ou não foram publicadas ainda?

    Obrigado!

  • Pessoal saiu a parte 4?

  • Henrique

    Gostaria da ajuda para solucionar o problema abaixo

    Fatal error: Call to undefined function find_all() in C:xampphtdocscustomersfunctions.php on line 12 a função esta no database.php

  • Nicolas Pastorello

    Parabéns meu amigo, projeto ótimo gostaria de saber quando sai os próximo estou usando seu projeto para eu estudar CRUD e realizar para um projeto de faculdade

  • wilson pascoal

    ola Ruan Carvalho

    Parabéns meu amigo, óptimo explicação para quem gosta de programar em bootstrap ,gostaria de saber quando é que sai os próximos tutorial sobre o como usamos o crud-bootstrap-php-mysql-parte 4 .

  • Excelente explicação, ainda um pouco avançado pra mim, mas acompanhando com jeitinho a gente vai pegando, gostaria de saber quando fará os proximos tutoriais, muito ansioso.
    Desde já, muito obrigado

  • A parte 4 está sendo finalizada, já. Ficou bem extenso.

  • Olá

    Tenho uma duvida no CSS. Tem alguns CSS que não sei da onde vem. Por exemplo, na parte dois

    href=”css/style.css”

    Pelo menos no bootstrap não existe esse CSS, logo, de onde ele vem?
    Está outra linha também
    js/main.js”

    • Esses dois arquivos devem ser criados e serão exclusivos da sua aplicação, apenas.
      Eles que vão ter os CSS personalizados, no caso do style.css, e o JS necessário, no caso do main.js, para realizar alguma função específica.

      Por exemplo, para criar validações de formulários, o main.js pode ser usado. Ou, se você quiser mudar cores ou fontes, o style.css é que deve ser usado.

  • Gustavo

    Boa noite. Excelente tutorial!
    Peço uma ajuda grande. Segui todos os seus passos, mas na tela de listagem de clientes só tenho um cadastro e está sendo feito um loop com vários cadastros na tela.
    Segue o link para verificação.
    https://gsftecnologia.com.br/crud-bootstrap-php/customers/index.php

    • Revise o seu arquivo index.php e o arquivo database.php.

      Deve ter algum erro de digitação nos índices nas tabelas, ou na consulta.

  • João Paulo Santana

    Excelente tutorial! de ótima qualidade!Parabéns!

  • Dielson

    Muito show suas aulas cara…..mas não sei em errei, pois estou conectado ao banco, mas os registros do banco não aparecem na tela(sei que estou conectado, pois insiro um novo cadastro no banco, logo em seguida é gerada uma nova linha na tela com visualizar, editar, excluir…o que será que eu errei??

  • Bruno luiz da silva

    Primeiramente lhe dou os parabéns cara, muito o conteúdo!

    Tenho uma duvida, na index, linha 25 tem uma função chamada clear_messages(), de onde ela vem? não encontrei nada no functions e também não parece ser uma função do PHP.

    • Muito obrigado, Bruno!

      Essa função clear_messages() seria para limpar as mensagens de status para o usuário (erros, sucesso, alertas, etc.)
      Precisa ser implementada, mas fica a seu critério. Pode retirar, se quiser.

      Abs.

  • Ola!, Estou com um problema os dados da pesquisa não aparece, onde vc chama o banco de dados?

  • Onde você coloca o nome da tabela?

    • Desculpe, achei… agora está dando essa mensagem de erro

      Erro fatal : Chamada para mysqli_result método indefinido :: fetch_all () in /home/dticom1/public_html/redemob/inc/database.php na linha 42

      Fatal error: Call to undefined method mysqli_result::fetch_all() in /home/dticom1/public_html/redemob/inc/database.php on line 42

      $found = $result->fetch_all(MYSQLI_ASSOC);

      • Provavelmente teu PHP está desatualizado.

        No arquivo database.php, na função find() existe um método alternativo pra pegar o resultado (que está comentado);
        Tente usar ele.

        Abs..
        Ruan

  • FERNANDO BITENCOURT

    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!

  • Ricardo

    Boa tarde Ruan, obrigado os tutoriais são perfeitos. Uma dúvida, montei tudo certinho, na primeira tela, quando clico “Customes”, o browser lista o conteúdo do diretório /Customers/, mas não executa o index.php. Eu perciso criar arquivo .htaccess pra esse diretório?

    —>Parent Directory
    —>functions.php
    —>index.php

    • Normalmente, o servidor detecta automaticamente e redireciona para a index.php.

      Então provavelmente você vai precisar criar o .htaccess, ou então tentar configurar o servidor para chamar direto.

  • Marcos

    Caro Ruan,

    Tudo perfeito, mas estou batando cabaça. Eu programava em php de forma completamente diferente.

    Por exemplo: Como faço o display na listagem de clientes em ordem descendente, ou seja, o último em primeiro ?

    Grato

    • Tem algumas opções:
      1. Você pode mudar a consulta SQL e colocar em ordem decrescente. Mas, isso afetará todas as consultas.

      2. Você pode reverter o array $customers, para somente ele ficar em ordem decrescente.

      3. Você pode criar parâmetros nas funções para definir a ordenação. Esse dá mais trabalho.

      Não existe só uma forma de programar em PHP. E nem a “forma certa”.
      O importante é tentar manter a simplicidade, a reutilização do código, os princípios SOLID, etc…
      É sempre um aprendizado.

      Abs.
      Ruan
      Ruan

      • Marcos

        Foi mais simples e ‘limpo’ apenas ordenar o array.

        Grato !

  • Arthur Mingacci Junior

    estou com dificuldade:

    por favor, não está mostrando registros, como devo proceder.

    mensagem parte III do tutorial :
    Notice: Trying to get property of non-object in /opt/lampp/htdocs/GGFinanceiro/inc/database.php on line 45

    Nenhum registro encontrado.

    Obrigado

  • Sérgio Santos

    Boa noite, Ruan!
    Estou começando agora com PHP e, pesquisando o melhor modo de acesso a dados, me deparei com suas dicas. Parabéns pelo modo como vem conduzindo, porém, encontrei um problema ao tentar adaptar o seu código ao meu, pelo que observei está conectando no banco de dados, certinho, mas recebo esta erro:

    Notice: Undefined index: descricao in C:Program Files (x86)EasyPHP-DevServer-14.1VC9datalocalwebprojectsportalcadIdioma.php on line 145

    Esta linha tem o seguinte código:

    Na verdade são 3 colunas do banco de dados q quero exibir e, as 3 linhas estão retornando este erro.

    Em pesquisas pelo erro vi que é necessário q seja dado um $_POST para carregar os dados, porém, tenho um menu que ao clicar abre uma tela de cadastro de idiomas exibindo todos os idiomas cadastrados, inicialmente pensei q fosse problema de conexão, mas vi que não era, pois acrescentei mais um linha na tabela e o erro se repetiu, ou seja, a rotina conseguiu ver as 2 linhas do banco e, trouxe no loop o erro, pois não conseguiu localizar a informação.

    Poderia me ajudar?

  • Igor Federizi

    Bom dia Ruan,

    Primeiramente, parabéns pelo tutorial.
    Estou tendo o mesmo problema que alguns mencionaram acima, sobre não aparecer nenhum registro, mas eles não postaram a solução, ou pelo menos não encontrei. Minha página vem sem registros.

    att,
    Igor Federizi

  • lazaro

    Parabéns amigão estou seguindo as ulas.

  • Emilio Araujo

    Parabens pelo tutorial, aprendi nesse tutorial, oque não havia aprendido em horas de videoaula e tutoriais.

    Só estou com um pequeno problema, o botão delete não tem função, ele devia ser um modal, mas não está sendo esse o caso, poderia alguem que conseguiu habilitar a função, postar como fez?

    Grato!

  • Edinei

    Boa Tarde, tentei adaptar seu codigo em um projeto meu, mas na hora de cadastrar aparece o seguinte erro: Fatal error: Call to undefined function clear_messages()

    • “Call to undefined function” significa que você chamou uma função, sem criá-la antes, no caso a clear_messages().

      Ou você remove a chamada, ou implementa ela.

      • Edinei

        Tenho uma dúvida: Segui o Tutorial certinho, funcionou tudo beleza, mas quando tentei implementar no meu projeto dá o erro: “Fatal error: Call to undefined function clear_messages()”. Você disse que não criei a função, mas a única coisa que fiz foi adicionar mais alguns campos no formulário add.php. Removi a chamada da função como me indiciou, mas então as mensagens de sucesso ou erro não somem, mesmo depois que fecho elas no ícone “x”. Esta Função não deveria estar no script “functions.php”? Revisei todo o código e não encontrei nada diferente, a não ser os campos que adicionei conforme mencionei antes. Tenho outra dúvida, como faço pra enviar a senha criptografada para o banco, já tentei, pesquisei e nada. Com outros métodos de submeter o formulário consegui, mas o seu código é um pouco diferente.
        Seu tutorial é perfeito e organizado. Obrigado pela partilha de conhecimento.

  • Jfjunior86

    Parabéns pelo Trabaljo

  • Ruan, muito obrigado por sua colaboração. Até agora, foi o melhor tutorial sobre o assunto que achei. Quando você começar a vender seus cursos, por favor, avise. Muito obrigado.

  • thlobo

    ola Ruan Carvalho, acompanhei todo o tutorial e deu certinho.
    Entao eu precisei adicionar mas dois modulos alem do cliente , e possivel aproveitar o arquivo database.php ou tenho que criar um arquivo pra cada?. Lembrando que em todas as tabelas desses modulos usei id.

  • André

    Bom dia, estava lendo este conteúdo sobre crud e boostrap, e gostaria de saber quando terá continuidade da quarta parte. Obrigado.

  • Olá Ruan!
    Já revisei todo o código e testei em mais de um SERVER e só da o erro 500.
    Você sabe o que pode ser?
    PS: Quando comento o index(); ele funciona mas não traz os dados por estar comentado…

    Abraços

    • Erro 500 é um erro genérico de servidor.
      Você deve verificar seu server e as versões instaladas, permissões, etc.

  • Olá Ruan, primeiramente quero parabenizá-lo pelo tutorial..a unica diferença do meu projeto para o seu é o nome da pasta que estou utilizando sistema.. até aqui tudo funcionou perfeitamente..
    Porém agora eu estou tendo um erro que é:
    Fatal error: Call to undefined function find_all() in /home/apostech/www/sistema/customers/functions.php on line 11..
    Ja veriquei os arquivos, mas estao iguais ao do tutorial…

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

Acima ↑