3
1.7
Sobre este livro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2
O primeiro programa em PHP
7
2.1
Instalando o PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.2
PHP no Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.3
E vamos ao primeiro programa! . . . . . . . . . . . . . . . . . . . . . .
14
2.4
A minha página está mostrando a hora errada! . . . . . . . . . . . . .
15
2.5
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.6
Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3
Construindo um calendário com PHP
19
3.1
Definindo nosso calendário . . . . . . . . . . . . . . . . . . . . . . . .
19
3.2
Começando o calendário . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3
Usando funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.4
Entendendo e se entendendo com os erros . . . . . . . . . . . . . . . . 26
3.5
Meu PHP não mostrou os erros! . . . . . . . . . . . . . . . . . . . . . .
27
3.6
Finalizando o calendário . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.7
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.8
Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
vii
Sumário
Casa do Código
4
Entrada de dados com formulário
31
4.1
Definindo a lista de tarefas . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.2
O formulário de cadastro de tarefas . . . . . . . . . . . . . . . . . . . .
32
4.3
Entrada de dados
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.4
Pegando os dados da URL . . . . . . . . . . . . . . . . . . . . . . . . .
34
4.5
Sessões no PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.6
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
4.7
Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
5
Tratamento de diferentes campos de formulários
43
5.1
Organizando o código em arquivos separados . . . . . . . . . . . . . . 44
5.2
Adicionando mais informações às tarefas
. . . . . . . . . . . . . . . . 46
5.3
Conclusão do capítulo e do uso de sessões . . . . . . . . . . . . . . . . 50
5.4
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
5.5
Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
6
Acessando e usando um banco de dados
53
6.1
O banco de dados MySQL . . . . . . . . . . . . . . . . . . . . . . . . .
54
6.2
Instalando o MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
6.3
PHPMyAdmin, administrando o banco de dados . . . . . . . . . . . .
55
6.4
Criando o banco de dados . . . . . . . . . . . . . . . . . . . . . . . . .
57
6.5
Criando a tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
6.6
Cadastrando e lendo os dados de uma tabela . . . . . . . . . . . . . .
61
6.7
Filtrando os resultados
do SELECT . . . . . . . . . . . . . . . . . . . . 62
6.8
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
6.9
Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
7
Integrando PHP com MySQL
65
7.1
PHP e MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
7.2
Conectando ao MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.3
Buscando dados no banco . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.4
Cadastrando as tarefas no banco . . . . . . . . . . . . . . . . . . . . . .
72
7.5
Cadastrando o prazo das atividades . . . . . . . . . . . . . . . . . . . .
77
7.6
Marcando uma tarefa como concluída . . . . . . . . . . . . . . . . . .
81
7.7
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
7.8
Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
viii
Casa do Código
Sumário
8
Edição e remoção de registros
85
8.1
Edição de tarefas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
8.2
Remoção de tarefas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.3
Evitando o problema com a atualização de página
. . . . . . . . . . . 100
8.4
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.5
Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
9
Validação de formulários
103
9.1
Validação na lista de tarefas
. . . . . . . . . . . . . . . . . . . . . . . . 103
9.2
Entrada de dados usando POST . . . . . . . . . . . . . . . . . . . . . . 104
9.3
Validando o nome da tarefa . . . . . . . . . . . . . . . . . . . . . . . . 106
9.4
Adicionando o aviso de erro . . . . . . . . . . . . . . . . . . . . . . . . 110
9.5
Validando a data digitada . . . . . . . . . . . . . . . . . . . . . . . . . . 114
9.6
Expressões regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115