Você está na página 1de 32

17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

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.

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.

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 1/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

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:

1 <?php
2
3 require_once('../config.php');

4 require_once(DBAPI);

5
6 $customers = null;

7 $customer = null;

8
9 /**

10 * Listagem de Clientes

11 */
12 function index() {

13 global $customers;

14 $customers = find_all('customers');
15 }

functions.php hosted with ❤ by GitHub view raw

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.

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 2/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

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:

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 3/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

1 <?php
2
3 /**

4 * Pesquisa um Registro pelo ID em uma Tabela

5 */

6 function find( $table = null, $id = null ) {

7
8 $database = open_database();

9 $found = null;

10
11 try {

12 if ($id) {

13 $sql = "SELECT * FROM " . $table . " WHERE id = " . $id;

14 $result = $database->query($sql);

15
16 if ($result->num_rows > 0) {

17 $found = $result->fetch_assoc();

18 }

19
20 } else {

21
22 $sql = "SELECT * FROM " . $table;

23 $result = $database->query($sql);
24
25 if ($result->num_rows > 0) {

26 $found = $result->fetch_all(MYSQLI_ASSOC);
27
28 /* Metodo alternativo

29 $found = array();
30
31 while ($row = $result->fetch_assoc()) {

32 array_push($found, $row);

33 } */

34 }

35 }

36 } catch (Exception $e) {

37 $_SESSION['message'] = $e->GetMessage();

38 $_SESSION['type'] = 'danger';

39 }

40
41 close_database($database);

42 return $found;

43 }

database.php hosted with ❤ by GitHub view raw

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 4/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

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:

1 <?php
2
3 /**

4 * Pesquisa Todos os Registros de uma Tabela

5 */

6 function find_all( $table ) {

7 return find($table);
8 }

database.php hosted with ❤ by GitHub view raw

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:

1 <?php
2 require once('functions php');
https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 5/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy
2 require_once( functions.php );

3 index();
4 ?>
5
6 <?php include(HEADER_TEMPLATE); ?>
7
8 <header>

9 <div class="row">
10 <div class="col-sm-6">

11 <h2>Clientes</h2>
12 </div>

13 <div class="col-sm-6 text-right h2">


14 <a class="btn btn-primary" href="add.php"><i class="fa fa

15 <a class="btn btn-default" href="index.php"><i class="fa

16 </div>
17 </div>
18 </header>

19
20 <?php if (!empty($_SESSION['message'])) : ?>
21 <div class="alert alert-<?php echo $_SESSION['type']; ?> alert-di
22 <button type="button" class="close" data-dismiss="alert"

23 <?php echo $_SESSION['message']; ?>


24 </div>
25 <?php clear_messages(); ?>
26 <?php endif; ?>

27
28 <hr>
29
30 <table class="table table-hover">

31 <thead>
32 <tr>

33 <th>ID</th>

34 <th width="30%">Nome</th>
35 <th>CPF/CNPJ</th>

36 <th>Telefone</th>

37 <th>Atualizado em</th>
38 <th>Opções</th>

39 </tr>

40 </thead>
41 <tbody>

42 <?php if ($customers) : ?>


43 <?php foreach ($customers as $customer) : ?>

44 <tr>

45 <td><?php echo $customer['id']; ?></td>


46 <td><?php echo $customer['name']; ?></td>

47 <td><?php echo $customer['cpf_cnpj']; ?></td>


https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 6/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

48 <td>00 0000-0000</td>
49 <td><?php echo $customer['modified']; ?></td>

50 <td class="actions text-right">

51 <a href="view.php?id=<?php echo $customer['id'];

52 <a href="edit.php?id=<?php echo $customer['id'];

53 <a href="#" class="btn btn-sm btn-danger" data-to


54 <i class="fa fa-trash"></i> Excluir

55 </a>

56 </td>
57 </tr>

58 <?php endforeach; ?>

59 <?php else : ?>

60 <tr>
61 <td colspan="6">Nenhum registro encontrado.</td>

62 </tr>

63 <?php endif; ?>


64 </tbody>

65 </table>

66
67 <?php include(FOOTER_TEMPLATE); ?>

index.php hosted with ❤ by GitHub view raw

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.
https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 7/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

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:

1 INSERT INTO `customers` (`id`, `name`, `cpf_cnpj`, `birthdate`, `address`,


2 `hood`, `zip_code`, `city`, `state`, `phone`, `mobile`, `ie`, `created`, `
3 VALUES ('0', 'Fulano de Tal', '123.456.789-00', '1989-01-01', 'Rua da Web,

4 'Internet', '1234568', 'Teste', 'Teste', '5555555', '55555555', '123456',


5 '2016-05-24 00:00:00', '2016-05-24 00:00:00');

customer.sql hosted with ❤ by GitHub view raw

Você pode alterar esse SQL para criar mais registros.

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

E a estrutura do seu projeto deve estar assim:

crud-bootstrap-php
https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 8/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

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.

Publicado por Ruan Carvalho


Ruan é especialista em Front-end e trabalha com Desenvolvimento Web desde 2007.

 Ver todos os posts por Ruan Carvalho

Tutoriais

Bootstrap, PHP

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 9/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

76 comentários em “CRUD com Bootstrap, PHP &


MySQL – Parte III”

Carlos
06/01/2016 às 07:08

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!

Ruan Carvalho
06/01/2016 às 08:43

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
06/01/2016 às 12:49

Verifiquei toda a estrutura e ela está de acordo


com o que você propôs.

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 10/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

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).

Eduardo Silva
06/02/2016 às 18:10

Amigo, estou com o mesmo problema,


pode me avisar se consegui resolver?
Grande abraço!

Marcello
07/05/2016 às 20:37

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
07/05/2016 às 20:39

Perdão erro meu. Existe sim a função . Mas


ela realmente não esta retornando nada

Marcello
07/05/2016 às 21:18

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

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 11/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

/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).

Ruan Carvalho
07/05/2016 às 23:41

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
06/06/2016 às 11:56

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

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 12/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

Ruan Carvalho
06/06/2016 às 11:59

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
06/08/2016 às 08:10

Ruan deu certo. Tem previsão quando vai


começar a sair a aula 4?

Ruan Carvalho
06/13/2016 às 10:27

Beleza, Julio. Devo publicar essa semana,


ainda.

Luandierison
09/27/2016 às 09:23

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.

Ruan Carvalho
09/27/2016 às 12:34

Obrigado pela contribuição, Luandierison.

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 13/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

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
06/08/2016 às 12:04

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

Antonio
06/08/2016 às 13:40

Sou meio devagar, mas ta indo.

Wellington Felix
06/09/2016 às 15:35

Ó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!

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 14/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

Ruan Carvalho
06/13/2016 às 10:25

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
06/09/2016 às 16:09

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.

Ruan Carvalho
06/13/2016 às 10:23

Obrigado, Paulo!
Vou verificar essas imagens.

Wemerson
06/11/2016 às 14:24

Opa, parabéns pelo Tutorial. Estou aprendendo e


adaptando às minhas situações e está dando certo.
Tem previsão da aula 4?

Ruan Carvalho
06/13/2016 às 10:20

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 15/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

Obrigado, Wemerson! Devo publicar essa semana


ainda.

Claudio
06/11/2016 às 18:27

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


perfeitamente.

Ruan Carvalho
06/13/2016 às 10:20

Obrigado, Claudio!

Matheus
07/05/2016 às 16:53

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
07/08/2016 às 08:47

Olá, parabéns pela iniciativa, me ajudou e aprendi


bastante, Mas, ainda vai ter continuação deste Tutorial ?

Ruan Carvalho
07/08/2016 às 14:30

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 16/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

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
07/18/2016 às 09:10

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…

Ruan Carvalho
07/18/2016 às 11:23

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


07/20/2016 às 14:48

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 17/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

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

Ruan Carvalho
07/20/2016 às 16:28

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.

Washington Campos
07/21/2016 às 15:32

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.

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 18/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

Washington Campos
07/21/2016 às 16:00

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.

Ruan Carvalho
07/21/2016 às 16:03

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
08/04/2016 às 11:10

Olá e Parabens pelo trabalho.

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


publicadas ainda?

Obrigado!

Gerson Correia
08/10/2016 às 15:55

Pessoal saiu a parte 4?

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 19/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

Henrique
08/23/2016 às 08:35

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
08/23/2016 às 11:37

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
09/05/2016 às 11:43

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 .

Werdeson
09/16/2016 às 21:58

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

Ruan Carvalho
https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 20/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

09/27/2016 às 12:36

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

Bruno Silva
10/03/2016 às 16:09

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”

Ruan Carvalho
10/03/2016 às 16:17

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
10/10/2016 às 23:29

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://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 21/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

https://gsftecnologia.com.br/crud-bootstrap-
php/customers/index.php

Ruan Carvalho
10/10/2016 às 23:42

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


10/18/2016 às 22:04

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

Dielson
10/23/2016 às 20:49

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


10/29/2016 às 17:07

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.

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 22/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

Ruan Carvalho
11/09/2016 às 14:56

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.

Dieure
11/09/2016 às 13:21

Ola!, Estou com um problema os dados da pesquisa não


aparece, onde vc chama o banco de dados?

Dieure
11/09/2016 às 13:51

Onde você coloca o nome da tabela?

Dieure
11/09/2016 às 14:31

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/databas
e.php na linha 42

Fatal error: Call to undefined method


mysqli_result::fetch_all() in
/home/dticom1/public_html/redemob/inc/databas
e.php on line 42

$found = $result->fetch_all(MYSQLI_ASSOC);
https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 23/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

Ruan Carvalho
11/09/2016 às 14:42

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
11/23/2016 às 18:31

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!

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 24/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

Ricardo
12/09/2016 às 11:50

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

Ruan Carvalho
12/09/2016 às 13:46

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
12/15/2016 às 13:50

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

Ruan Carvalho
12/18/2016 às 10:42

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 25/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

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
12/22/2016 às 12:46

Foi mais simples e ‘limpo’ apenas ordenar o


array.

Grato !

Arthur Mingacci Junior


12/18/2016 às 09:35

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

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 26/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

Sérgio Santos
12/18/2016 às 16:23

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
12/23/2016 às 07:57

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

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 27/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

lazaro
12/23/2016 às 23:53

Parabéns amigão estou seguindo as ulas.

Emilio Araujo
12/27/2016 às 13:34

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!

Ruan Carvalho
12/28/2016 às 12:33

O Modal é feito na parte VI:


https://webdevacademy.com.br/tutoriais/crud-
bootstrap-php-mysql-parte6/

Edinei
12/29/2016 às 17:13

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()

Ruan Carvalho
12/29/2016 às 17:48

“Call to undefined function” significa que você


chamou uma função, sem criá-la antes, no caso a
https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 28/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

clear_messages().

Ou você remove a chamada, ou implementa ela.

Edinei
12/30/2016 às 17:16

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
01/12/2017 às 14:12

Parabéns pelo Trabaljo

Márcio Rangel
01/26/2017 às 17:25

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.
https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 29/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

thlobo
02/15/2017 às 16:43

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é
03/29/2017 às 09:38

Bom dia, estava lendo este conteúdo sobre crud e


boostrap, e gostaria de saber quando terá continuidade
da quarta parte. Obrigado.

Ruan Carvalho
03/31/2017 às 11:21

https://webdevacademy.com.br/tutoriais/crud-
bootstrap-php-mysql-parte4/

Dênis KBça
03/30/2017 às 13:49

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

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 30/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

Ruan Carvalho
03/31/2017 às 11:30

Erro 500 é um erro genérico de servidor.


Você deve verificar seu server e as versões
instaladas, permissões, etc.

BRUNO APOSTOLICO SILVA


04/01/2017 às 13:41

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.p
hp on line 11..
Ja veriquei os arquivos, mas estao iguais ao do tutorial…

OS COMENTÁRIOS ESTÃO ENCERRADOS.

TAGS

Bootstrap CRUD Drupal HTML & CSS JavaScript jQuery PHP SQL Tooling

WordPress

MAIS ACESSADOS

» CRUD com Bootstrap, PHP & MySQL - Parte I


» Bootstrap: Criando Layouts e Grids

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 31/32
17/09/2021 22:34 CRUD com Bootstrap, PHP & MySQL – Parte III - Web Dev Academy

» Bootstrap 4: Como Começar


» Como Configurar um Servidor Local para Desenvolvimento Web
» Aprenda a Fazer um CRUD com Bootstrap, PHP & MySQL

ORGULHOSAMENTE FEITO COM WORDPRESS | TEMA: BASKERVILLE 2 POR ANDERS NOREN


ACIMA ↑

https://webdevacademy.com.br/tutoriais/crud-bootstrap-php-mysql-parte3/ 32/32

Você também pode gostar