54
Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br Tecnologia WEB III Prof. Erwin Alexander Uhlmann PHP e MySQL UHLMANN, Erwin Alexander. Introdução ao PHP. Instituto Siegen. Guarulhos, 2012.

Tecnologia WEB III - institutosiegen.com.brinstitutosiegen.com.br/documentos/euhl.13384218943562.pdf · PDF ... O PHP necessita do compilador PHP. ... vários, ao longo do curso iremos

Embed Size (px)

Citation preview

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Tecnologia WEB III

Prof. Erwin Alexander Uhlmann

PHP e MySQL

UHLMANN, Erwin Alexander. Introdução ao PHP.

Instituto Siegen. Guarulhos, 2012.

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Agradecimentos

Agradeço à minha esposa Kátia por entender

minha ausência, meus pais Mirtes e Günter por

terem criado meu caminho, aos meus alunos que

viabilizaram este trabalho e a todos os autores

de livros e bibliotecas que consultei para que

pudesse devidamente embasar este.

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Sumário

Introdução ........................................................................................................................ 1

Aula 1 ................................................................................................................................. 2

Pré-requisitos ................................................................................................................ 2

Fontes de referência ................................................................................................ 2

Software .................................................................................................................... 2

PHP ................................................................................................................................ 7

Exercício .................................................................................................................. 10

Aula 2 ................................................................................................................................ 11

Conexão, Busca e Impressão ...................................................................................... 11

conecta.php ............................................................................................................. 11

index.php ..................................................................................................................... 11

Exercício .................................................................................................................. 15

Aula 3 ............................................................................................................................... 16

Conteúdos das páginas .............................................................................................. 16

Exercício .................................................................................................................. 18

Aula 4 ............................................................................................................................... 19

Página Modelo ............................................................................................................ 19

Menu de navegação .................................................................................................. 20

Exercício .................................................................................................................. 21

Imagens ....................................................................................................................... 21

Exercício .................................................................................................................. 22

Aula 5 ............................................................................................................................... 23

Inserção de Dados ...................................................................................................... 23

Exercício ................................................................................................................. 24

Upload de arquivos ............................................................................................... 24

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Exercício .................................................................................................................. 25

Aula 6 .............................................................................................................................. 26

Edição de dados ......................................................................................................... 26

adm_pag_editar.php ................................................................................................. 26

Exercício .................................................................................................................. 27

Aula 7 .............................................................................................................................. 28

Exclusão de dados ..................................................................................................... 28

Método de status ...................................................................................................... 28

Exercício ................................................................................................................. 29

Aula 8 .............................................................................................................................. 30

Login ........................................................................................................................... 30

valida_sessao.php .................................................................................................. 31

logout.php .............................................................................................................. 31

Páginas protegidas ................................................................................................. 32

Aula 9 ............................................................................................................................... 33

PDF .............................................................................................................................. 33

pdf.php .................................................................................................................... 33

Aula 10 .............................................................................................................................35

XML ..............................................................................................................................35

Leitura do XML ........................................................................................................35

Geração de arquivo XML ........................................................................................35

Inserir dados do XML no MySQL .......................................................................... 36

Aula 11 .............................................................................................................................. 37

Sistema de busca ........................................................................................................ 37

Método de buscar tudo em todas as tabelas ....................................................... 37

Respostas ....................................................................................................................... 40

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Resposta do Exercício da Aula 1 ............................................................................... 40

Resposta do Exercício da Aula 2 ............................................................................... 40

Resposta do Exercício da Aula 3 ............................................................................... 40

Resposta do Exercício da Aula 4 ............................................................................... 42

Resposta do exercício 1 da aula 5. ............................................................................ 44

Resposta do exercício 2 da aula 5. ............................................................................ 46

Resposta do exercício da aula 6. .............................................................................. 46

Resposta do exercício da aula 7 ................................................................................ 46

Bibliografia ..................................................................................................................... 48

Índice de Figuras

Figura 1 - PHPEditor ......................................................................................................... 3

Figura 2 - Dreamweaver .................................................................................................. 4

Figura 3 - Expression Web ............................................................................................... 5

Figura 4 - Propriedades do Windows para o Vertrigo ................................................... 6

Figura 5 - PHPMyAmin ...................................................................................................... 7

Figura 6 - PHPMyAdmin ................................................................................................... 8

Figura 7 - Nomeação do BD ............................................................................................. 8

Figura 8 - Nomeação de tabela ....................................................................................... 8

Figura 9 - Nomeação dos campos, tipos e tamanhos .................................................... 9

Figura 10 - Modelo de Entidade Relacional .................................................................... 9

Figura 11 - A página deverá ter esta aparência .............................................................. 13

Figura 12 - Leitura estática e leitura dinâmica ............................................................... 17

Figura 13 - Tabela de todos os campos e registros ....................................................... 18

Figura 14 - Tabela de Páginas ......................................................................................... 19

Figura 15 - Tabela de Conteúdos .................................................................................... 19

Figura 16 - Tabela de Imagens ........................................................................................ 19

Figura 17 - Menu de navegação ..................................................................................... 20

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Figura 18 - Usando a função GET para envio de dados pela URL ................................. 21

Índice de scripts

Script 1 - Conexão com o BD ........................................................................................... 11

Script 2 - Inclusão da conexão na página index.php e estrutura html. ....................... 13

Script 3 - Query PHP MySQL ........................................................................................... 14

Script 4 - Leitura do campo e do registro ...................................................................... 14

Script 5 - Impressão dos dados ...................................................................................... 14

Script 6 - Para buscar, ler e imprimir .............................................................................. 14

Script 7 - Busca dos conteúdos ...................................................................................... 16

Script 8 - Leitura e impressão dos conteúdos ............................................................... 17

Script 9 - Menu de navegação ....................................................................................... 20

Script 10 - Formulário para inserção de dados ............................................................. 24

Script 11 - Gravção de dados .......................................................................................... 24

Script 12 - script de upload e gravação .......................................................................... 25

Script 13 - Formulário de edição de dados ..................................................................... 27

Script 14 - Edição de dados ............................................................................................. 27

Script 15 - Exclusão de dados ........................................................................................ 28

Script 16 - Formulário de login ...................................................................................... 30

Script 17 - Página de login: recepção dos dados, criação da sessão e busca no BD ... 31

Script 18 - logout ............................................................................................................. 32

Script 19 - Proteger as páginas ....................................................................................... 32

Script 20 - Leitura do XML ..............................................................................................35

Script 21 - Geração de arquivo XML .............................................................................. 36

Script 22 - Inserir dados do XML no MySQL ................................................................. 36

Script 23 - Script de busca .............................................................................................. 37

Script 24 - Leitura de todas tabelas .............................................................................. 38

Script 25 - Campos e Registros ...................................................................................... 38

Script 26 - Script completo do sistema de busca ......................................................... 39

1

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Introdução

O objetivo deste trabalho é introduzir as técnicas básicas de programação do PHP

com o MySQL para a construção de um site gerenciável pelo cliente sem a

necessidade de conhecimento de HTML e PHP.

2

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 1

Pré-requisitos

Fontes de referência

http://php.net/manual/pt_BR/index.php

Livros

Software

PHPEditor

Este é um dos principais editores de PHP. Simples, rápido, prático e com um amplo

suporte à linguagem.

$ : Grátis.

Avaliação:

http://filestore.softwaredownloadwebsite.com/h92/743753-

phpeditor_setup_en.exe

3

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Figura 1 - PHPEditor

Dreamweaver

Este é o melhor! O problema é que é pago, e bem pago. Este editor da Adobe tem

longa história de desenvolvimento. Atende diversas ferramentas que permitem até

um usuário com pouco conhecimento criar uma página, além de suporte a diversas

linguagens de programação e Banco de Dados.

http://www.adobe.com/cfusion/tdrc/index.cfm?product=dreamweaver&loc=pt_br

$: US$ 229,00 (13/12/2011)

Avaliação:

4

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Figura 2 - Dreamweaver

Expression Web

A Microsoft definitivamente entrou para a briga dos editores web. Para encarar o

Dreamweaver ela lançou o Expression Web 4, que pode ser avaliado como uma

versão antiga, de uma ou duas gerações passadas, do software da Adobe. Pago mas

com diversos recursos, segue a linha do principal concorrente.

http://www.microsoft.com/expression/products/web_overview.aspx

$: US$149,00

Avaliação:

5

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Figura 3 - Expression Web

Existem diversos editores PHP, ao longo deste trabalho, iremos utilizar o PHPEditor,

pois além de gratuito é a referência.

O PHP necessita do compilador PHP. http://windows.php.net/download/

Como em breve iremos trabalhar em conjunto com MySQL, aproveite para baixa-lo.

http://dev.mysql.com/downloads/

Além deles é fundamental um servidor, neste caso o Apache.

http://httpd.apache.org/download.cgi

Mas, você pode optar por baixar um suíte que já reúne todos os softwares. Existem

vários, ao longo do curso iremos utilizar o Vertrigo.

http://vertrigo.sourceforge.net/?lang=br

No caso da opção pelo Vertrigo, observe a instalação:

Para instalar é fácil e basta seguir os passos recomendados pelo programa.

Inicie sempre o Vertrigo, antes de começar a trabalhar com o PHP. Caso ele não

consiga iniciar e informe problemas com a porta 80, no Painel de Controle do

6

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Windows, em Ferramentas Administrativas, e em seguida em Serviços, interrompa

os programas que utilizem esta porta.

Na maioria dos casos são os softwares de comunicação como o Messenger, Skype,

entre outros e também o servidor ISS, caso o tenha.Este modelo de relatório está

completo com estilos para um sumário e um índice.

Também é importante lembrar que nos sistemas operacionais Windows Vista e

Windows 7 (Seven), ao instalar é necessário aplicar as permissões de segurança à

pasta, em Propriedades, na guia Segurança.

Figura 4 - Propriedades do Windows para o Vertrigo

7

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

PHP

O PHP é uma linguagem de programação simples e prática. Vamos trabalhar com ele

em conjunto com o MySQL. Caso você não esteja muito familiarizado com esta

linguagem, aproveite para baixar a apostila de PHP I.

http://www.institutosiegen.com.br/is_professor_materia01.php?user_mat01=UnG%2

0-%20Ci%EAncia%20da%20Computa%E7%E3o%20-%20Tecnologia%20Web%20II

Então vamos começar. Abra o PHPMyAdmin do Vertrigo

(http://www.phpmyadmin.net/home_page/index.php) conforme figura 5. O usuário

é root e a senha é vertrigo. Vamos criar um Banco de Dados para começarmos

trabalhar.

Figura 5 - PHPMyAmin

Esta apostila foi produzida com o Vertrigo versão 2.25, que inclui o PHPMyAdmin

versão 3.4.8 conforme figura 6.

8

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Atribua um nome ao BD. Nesta apostila iremos adotar volatil.

Figura 7 - Nomeação do BD

Agora vamos criar as tabelas no BD.

Figura 8 - Nomeação de tabela

Figura 6 - PHPMyAdmin

9

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Figura 9 - Nomeação dos campos, tipos e tamanhos

O BD ficará conforme o modelo da figura 10:

Figura 10 - Modelo de Entidade Relacional

Após esta fase de criação do BD vamos começar a programar o PHP.

10

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Exercício

Crie um novo BD e exporte como SQL, ANSI.

11

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 2

Conexão, Busca e Impressão

Sempre precisaremos conectar um programa a um Banco de Dados(BD). Então

vamos conectá-lo!

Inicie o Vertrigo, abra seu editor PHP, e vamos salvar uma página com o nome

conecta.php

conecta.php

<?php

$conecta = mysql_pconnect("localhost", "root", "vertrigo");

$banco = "volatil";

mysql_select_db("$banco");

?>

Script 1 - Conexão com o BD

A variável $conecta contém os dados da função mysql_pconnect. Existem duas

formas a mysql_connect e a mysql_pconnect, esta segunda torna a conexão

persistente, ou seja, você não precisará solicitar a conexão para cada novo script até

que você peça para encerrar com a função mysql_close($conecta), que deve ser

inserida na última linha de todas páginas.

A função mysql_pconnect contém 3 parâmetros, onde está o BD, qual o usuário e a

senha ("localhost", "root", "vertrigo"). Neste script vamos selecionar um BD

com a função mysql_select_db e o nome do BD.

Agora que a conexão está estabelecida, utilize a função include para incluir este

script em todas as páginas (<?php include("conecta.php"); ?>). Vamos criar a

página index.php

index.php

Vamos partir da seguinte estrutura html.

<?php include("conecta.php"); ?><!--inclua a página-->

<!DOCTYPE html>

<html lang="pt-br">

<head>

12

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<meta content="text/html; charset=windows-1252" http-equiv="Content-

Type">

<title>Site Volátil</title>

</head>

<body>

<table width="100%">

<tr bgcolor="#99BBFF">

<td>

<h1>Site Volátil</h1>

</td>

<td align="right">

<a href="index.php" border="0"><img src="img/Penguins.jpg"

width="20%" alt="Site Volátil"></a>

</td>

</tr>

<tr>

<td colspan="2">

<a href='index.php?pag_id=1'>Home | </a><a

href='index.php?pag_id=2'>Segunda | </a><a

href='index.php?pag_id=3'>Terceira | </a> <hr width="75%">

</td>

</tr>

<tr>

<td colspan="2">

<table width="75%" align="center" bgcolor="#DEDEDE">

<tr>

<td>

Conteúdo

<hr>

Conteúdo

<hr>

</td>

<td>

<table width='100%' bgcolor='#CCCCCC'>

<tr>

<td align='left'>

<img src='img/logo.jpg' width='20%' align='right'

alt='logo.jpg'>

</td>

</tr>

</table>

<table width='100%' bgcolor='#CCCCCC'>

<tr>

<td align='left'>

<img src='img/adler2.jpg' width='20%' align='right'

alt='adler2.jpg'>

</td>

</tr>

</table>

<table width='100%' bgcolor='#CCCCCC'>

<tr>

<td align='left'>

13

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<img src='img/i_adler_p-neg.jpg' width='20%'

align='right' alt='i_adler_p-neg.jpg'>

</td>

</tr>

</table>

</td>

</tr>

</table>

</td>

</tr>

<tr>

<td colspan="2" bgcolor="#999999" height="80" align="center">

<p>Nome da Empresa<br />

Endereço<br />

CEP<br />

Telefone<br />

e-mail</p>

<p><a href="login.php">Login</a></p>

</td>

</tr>

</table>

</body>

</html>

<?php mysql_close($conecta);?> <!--feche a variável -->

Script 2 - Inclusão da conexão na página index.php e estrutura html.

Figura 11 - A página deverá ter esta aparência

Ok, agora vamos começar a inserir a programação. Vamos começar pelo nome da

empresa. Vamos inseri-lo no alto à esquerda.

<?php include ("conecta.php");?>

<?php

14

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

//dados da empresa

$bd_empresa = mysql_query("SELECT * FROM empresa ORDER BY emp_id

DESC");

?>

<!DOCTYPE html>

<html lang="pt-br">

Script 3 - Query PHP MySQL

Para fazer a busca no BD vamos colocar os dados na variável $bd_empresa com uso

da função mysql_query seguida da instrução SQL entre aspas e parênteses. O PHP

realizou a seleção dos dados, agora precisamos fazer com que ele leia o campo e o

registro desejado.

<?php include ("conecta.php");?>

<?php

//dados da empresa

$bd_empresa = mysql_query("SELECT * FROM empresa ORDER BY emp_id

DESC");

$nom_empresa = mysql_result($bd_empresa, 0, "emp_nome");

?>

<!DOCTYPE html>

<html lang="pt-br">

...

Script 4 - Leitura do campo e do registro

<!DOCTYPE html>

<html lang="pt-br">

<head>

<meta content="text/html; charset=windows-1252" http-equiv="Content-

Type">

<title><?php echo $nom_empresa;?></title>

</head>

<body>

<table width="100%">

<tr bgcolor="#99BBFF">

<td>

<h1><?php echo "$nom_empresa";?></h1>

</td>

<td align="right">

...

Script 5 - Impressão dos dados

Bem, então a regra é simples: mysql_query para realizar a busca, mysql_result

para a leitura e imprima (echo) a variável deste último.

1. $bd_empresa = mysql_query("SELECT * FROM empresa ORDER BY emp_id DESC");

2. $nom_empresa = mysql_result($bd_empresa, 0, "emp_nome"); 3. echo "$nom_empresa";

Script 6 - Para buscar, ler e imprimir

15

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Exercício

Na mesma página que estamos trabalhando, imprima o nome da empresa,

conforme aprendemos, o logo e os dados, conforme apresentado na figura 11.

Lembre-se, você pode copiar a estrutura disposta no script 2.

DICA! Você pode inserir alguns

dados apenas para teste usando a

função inserir do PHPMyAdmin.

16

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 3

Conteúdos das páginas

Vamos agora partir para outra parte, a leitura dos conteúdos. Assim como feito na

aula anterior, os conteúdos seguem a mesma regra da “trinca de ouro”, busca,

leitura e impressão do script 6. Vamos fazê-lo!

//conteúdo

$bd_conteudo = mysql_query("SELECT * FROM conteudos WHERE pag_id =

'$pag_id'");

$con_qte = mysql_num_rows($bd_conteudo);

//imagens

$bd_imagens = mysql_query("SELECT * FROM imagens INNER JOIN conteudos

WHERE conteudos.con_id = imagens.con_id AND conteudos.pag_id =

$pag_id");

$img_qte = mysql_num_rows($bd_imagens);

Script 7 - Busca dos conteúdos

Neste script 7 realizamos a busca e a contagem dos conteúdos textuais e de

imagens, por quê a contagem?

1. A página pode ter mais de um conteúdo?

2. Cada conteúdo pode ter mais de uma imagem?

Isto é respondido e resolvido com a função mysql_num_rows. Ela conta quantos

registros foram encontrados na instrução SQL anteriormente escrita, como em

$bd_conteudo e $bd_imagens, isto é, se lá tiver um filtro para encontrar todos

registros (* FROM) a função vai contar todos, mas se tiver um filtro (WHERE

pag_id=x) ele vai contar apenas 1, ou parcialmente também, como (WHERE

pag_nome=%xpto% - [tudo que contiver xpto]), vamos ver mais um pouco sobre isto

na próxima aula em Página Modelo.

Mas, já fizemos a busca, e a leitura e impressão?

Por uma questão de simplicidade vamos escrever no corpo da página.

<!DOCTYPE html>

<html lang="pt-br">

<head>

<meta content="text/html; charset=windows-1252" http-equiv="Content-

Type">

17

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<title><?php echo $nom_empresa;?></title>

</head>

<body>

<table width="100%">

<tr bgcolor="#99BBFF">

<td>

<h1><?php echo "$nom_empresa";?></h1>

</td>

<td align="right">

<a href="index.php" border="0"><img src="img/<?php echo

$log_empresa;?>" width="20%" alt="<?php echo "$nom_empresa";?>"></a>

</td>

</tr>

<tr>

<td colspan="2">

<?php

$pag_ini = 0;

do{

$nom_paginas = mysql_result($bd_paginas, $pag_ini,

"pag_nome");

$id_paginas = mysql_result($bd_paginas, $pag_ini, "pag_id");

echo "<a href='index.php?pag_id=$id_paginas'>$nom_paginas |

</a>";

$pag_ini++;

}while($pag_ini<$pag_qte);

?>

<hr width="75%">

</td>

Script 8 - Leitura e impressão dos conteúdos

Com uso do método do...while, vamos programar para ler quantos registros foram

encontrados, buscados, no Script 7 - Busca dos conteúdos. Diferentemente do Script

4 - Leitura do campo e do registro, não iremos determinar qual o número do registro,

vamos colocar uma variável em seu lugar, veja o comparativo.

$pag_ini = 0;

do{

$nom_paginas = mysql_result($bd_paginas, $pag_ini, "pag_nome");

$pag_ini++;

}while($pag_ini<$pag_qte);

Figura 12 - Leitura estática e leitura dinâmica

Opa! A variável $pag_ini também tem o valor 0! Que difereça faz?

A diferença está no contador $pag_ini++ que acrescentará 1 a cada laço de

repetição que se repetirá tantas vezes quantas foram indicadas na variável

18

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

$con_qte e $img_qte da função mysql_num_rows que está no script 7! Não disse que

iríamos usar?

Caramba, mas tenho que pensar em tudo antes?! Sim!!!

Então lá vai um exercício para você entender melhor:

Exercício

Faça a busca, leitura e impressão com uso de um laço de repetição (while, forreach,

for...) para todas as imagens.

DICA! Imprimir um nome é simples, para imprimir como imagem basta colocar

dentro de uma TAG HTML <img src=”<?php echo $variavel;?>” />. Se tiver em uma

pasta coloque o caminho antes do PHP e se você deseja que toda imagem sempre

saia com o mesmo tamanho, indiferente do tamanho inserido, atribua um valor à

propriedade width, como width=”20%”.

<img src='img/$img_nome' width='20%' align='right' alt='$img_nome'>

Hoje foi simples, não?

Ok, agora resolva este exercício!

Crie uma tabela em que serão exibidos todos os registros de todos os campos da

tabela, veja figura 13.

Figura 13 - Tabela de todos os campos e registros

19

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 4

Página Modelo

Programar é interessante, mas reduzir a programação, otimizar códigos é

fundamental, seja para ganhar tempo de criação, quanto para facilitar a

manutenção e descomplicar uma possível alteração. Tendo isto em mente vamos

pensar. Ok, já sei buscar e ler todos os dados do BD, eu poderia então montar um

site inteiro! Mas aí surge uma pergunta:

Como criar páginas distintas, com conteúdos distintos e permitir que qualquer

empresa possa criar seu próprio site?

Vamos aprender!

A página index.php já foi criada e mostra os dados conforme a figura 2. Mas e se eu

quiser criar mais páginas e vincular seus conteúdos à cada página?

Primeiro vamos dar uma olhada no MER (Modelo de Entidade Relacional), ou seja,

no BD, nas tabelas de Conteúdos, Páginas e Imagens.

Figura 14 - Tabela de Páginas

Figura 15 - Tabela de Conteúdos

Figura 16 - Tabela de Imagens

Ao observar os dados das tabelas, podemos notar que a página Home tem o ID 1,

que é referenciado na tabela de Conteúdos. Os conteúdos de ID 1 e 2 estão ligados À

página de ID 1 a Home, observe os campos pag_id das duas tabelas. O mesmo

ocorre com a tabela de Imagens que os registros 1 e 2 estão vinculados ao conteúdo

1, veja os campos con_id das duas tabelas. Neste raciocínio a imagem 2 será exibida

no conteúdo 2 da página 1.

20

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Já que os dados estão no BD, precisamos fazer o PHP relacioná-los. Como o site

funciona com a escolha do usuário vamos fazer um link e adicionar a ele seu nº de

registro.

<a href="index.php?pag_id=1">$nom_paginas | </a>

Como o 1 é fixo, vamos transforma-lo em variável

<a href="index.php?pag_id=$id_paginas">$nom_paginas | </a>

E de onde vem esta variável?

$id_paginas = mysql_result($bd_paginas, $pag_ini, "pag_id");

Mas um link tem nome, então...

$nom_paginas = mysql_result($bd_paginas, $pag_ini, "pag_nome");

Opa! E essa variável $pag_ini??? De onde surgiu?

Antes de responder vamos mostrar o que iremos criar.

Menu de navegação

Figura 17 - Menu de navegação

O menu de navegação lê a quantidade de páginas existentes na tabela Paginas e as

repete com um laço de repetição, vamos ver.

<?php

$pag_ini = 0;

do{

$nom_paginas = mysql_result($bd_paginas, $pag_ini, "pag_nome");

$id_paginas = mysql_result($bd_paginas, $pag_ini, "pag_id");

echo "<a href='index.php?pag_id=$id_paginas'>$nom_paginas | </a>";

$pag_ini++;

}while($pag_ini<$pag_qte);

?>

Script 9 - Menu de navegação

Depois de criar o laço de repetição, vamos ver ele funcionando.

21

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Como é possível observar na URL dos 3

quadros, o link é index.php?pag_id=x

Assim teremos a página, um separador

(?), um marcador textual qualquer

(pag_id) e o nº do ID que vem da

programação.

Figura 18 - Usando a função GET para envio de dados pela URL

Com o menu construído a URL vira uma memória e os dados lá dispostos é que

faremos o filtro por conteúdo, com uso da função $_GET.

$pag_id = $_GET['pag_id'];

Em seguida vamos fazer o filtro.

$bd_conteudo = mysql_query("SELECT * FROM conteudos WHERE pag_id =

'$pag_id'");

$con_qte = mysql_num_rows($bd_conteudo);

Exercício

Construa um menu de navegação e realize os filtros pela função $_GET.

OPS! E as imagens???

Imagens

Para trazer as imagens é preciso vincular o conteúdo à página e a imagem ao

conteúdo, isto é feito pelo SQL.

$bd_imagens = mysql_query("SELECT * FROM imagens INNER JOIN conteudos

WHERE conteudos.con_id = imagens.con_id AND conteudos.pag_id =

$pag_id");

$img_qte = mysql_num_rows($bd_imagens);

22

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Traduzindo... SELECIONE TUDO da tabela imagens JUNTO com a tabela conteudos

ONDE os dados do campo con_id da tabela conteudos sejam os mesmos no campo

con_id da tabela imagens E o id da página na tabela conteudos seja o mesmo

recebido pela função $_GET.

Exercício

Construa a página index.php com todo conteúdo. Empresa, logo, dados, menu de

navegação, conteúdos e imagens.

23

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 5

Inserção de Dados

Inserir pelo PHPMyAdmin não é adequado, então, vamos criar um formulário para

isso.

Vamos usar os seguintes comandos: INSERT no SQL.

Construa uma página com um campo para inserir o nome da página, veja a estrutura

do script 10.

<?php include("conecta.php"); ?>

<?php

//dados da empresa

$bd_empresa = mysql_query("SELECT * FROM empresa ORDER BY emp_id

DESC");

$nom_empresa = mysql_result($bd_empresa, 0, "emp_nome");

$log_empresa = mysql_result($bd_empresa, 0, "emp_logo");

$dad_empresa = mysql_result($bd_empresa, 0, "emp_dados");

?>

<!DOCTYPE html>

<html lang="pt-br">

<head>

<meta content="text/html; charset=windows-1252" http-equiv="Content-

Type">

<title><?php echo $nom_empresa;?></title>

</head>

<body>

<table width="100%">

<tr bgcolor="#99BBFF">

<td>

<h1>Administração da <?php echo "$nom_empresa";?></h1>

</td>

<td align="right">

<img src="img/<?php echo $log_empresa;?>" width="20%">

</td>

</tr>

<tr>

<td colspan="2">

<hr width="75%">

</td>

</tr>

<tr>

<td colspan="2">

<table width="75%" align="center" bgcolor="#DEDEDE">

<tr>

<td>

<?php include("menu.html");?>

<h3>Crie suas páginas</h3>

<form method="post" action="adm_paginas.php"

name="form_paginas">

<input type="text" value="" name="pagina" size="25"

placeholder="Atribua um nome à sua página" />

24

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<br />

<input type="submit" name="Gravar" />

</form>

<form method="post" action="">

<input type="submit" id="logout" name="logout"

value="logout" />

</form>

</td>

<td>

</td>

</tr>

</table>

</td>

</tr>

<tr>

<td colspan="2" bgcolor="#999999" height="80" align="center">

<p><?php echo nl2br($dad_empresa);?></p>

<p><a href="login.php">Login</a></p>

</td>

</tr>

</table>

</body>

</html>

<?php mysql_close($conecta);?>

Script 10 - Formulário para inserção de dados

Para que se faça a gravação dos dados vamos criar o seguinte script.

<?php

if(isset($_POST['Gravar'])){

$nom_pag = $_POST['pagina'];

mysql_query("INSERT INTO paginas (pag_nome) VALUES ('$nom_pag')");

}

?>

Script 11 - Gravção de dados

Adicione este script antes do início da estrutura html.

Exercício

Crie uma página para adição de dados de usuário, conteúdos e dados da empresa.

Muito bem, já aprendemos a gravar, agora precisamos aprender a gravar a imagem

e fazer seu upload.

Upload de arquivos

Para fazer o upload são precisas poucas alterações, vamos passo a passo. Na página

de adição de dados da empresa, chamada de adm_empresa.php, encontre a linha

do formulário.

<form method="post" action="adm_empresa.php" name="form_empresa">

25

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Adicione o tipo de encaminhamento de dados do HTML:

<form method="post" action="adm_empresa.php" name="form_empresa"

enctype="multipart/form-data">

No campo da imagem, vamos fazer da seguinte forma:

<input type="file" name="logo" />

E antes do HTML vamos criar o seguinte código PHP e MySQL.

<?php

if(isset($_POST['Gravar'])){

1. $dir = "img"; 2. $arq = $_FILES['logo']['name']; 3. $arq_temp = $_FILES['logo']['tmp_name']; 4. move_uploaded_file($arq_temp,"$dir/$arq"); 5. mysql_query("INSERT INTO empresa (emp_logo) VALUES ('$arq')");

}

?>

Script 12 - script de upload e gravação

Explicando:

1. Crie uma variável para informar o nome da pasta que receberá o arquivo;

2. A função $_FILES receberá o conteúdo do campo com o botão Selecionar

Arquivo. Este campo tem o nome ['logo'] e o PHP quer saber somente o

nome do arquivo ['name'];

3. Não trabalhe com o arquivo do usuário, crie um temporário;

4. Mova (move_uploaded_file)o arquivo temporário para a pasta indicada;

5. Insira o nome ($arq) no BD;

Exercício

Como o usuário pode querer inserir mais de uma imagem com o mesmo nome, crie

um script em que cada imagem terá um nome único e impossível de ser duplicado.

26

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 6

Edição de dados

Para inserir dados basta criar um formulário e a programação, para editar é preciso

filtrar o registro a ser editado, criar o formulário, visualizar os dados dentro dos

campos do formulário e alterar seus dados. Serão utilizados os seguintes comandos:

mysql_query, mysql_result, SELECT e UPDATE.

Vamos começar. Crie uma página com um campo nome num formulário.

adm_pag_editar.php

<?php include("conecta.php"); ?>

<?php

//dados da empresa

$bd_empresa = mysql_query("SELECT * FROM empresa ORDER BY emp_id

DESC");

$nom_empresa = mysql_result($bd_empresa, 0, "emp_nome");

$log_empresa = mysql_result($bd_empresa, 0, "emp_logo");

$dad_empresa = mysql_result($bd_empresa, 0, "emp_dados");

?>

<!DOCTYPE html>

<html lang="pt-br">

<head>

<meta content="text/html; charset=windows-1252" http-equiv="Content-

Type">

<title><?php echo $nom_empresa;?></title>

</head>

<body>

<table width="100%">

<tr bgcolor="#99BBFF">

<td>

<h1>Administração da <?php echo "$nom_empresa";?></h1>

</td>

<td align="right">

<img src="img/<?php echo $log_empresa;?>" width="20%">

</td>

</tr>

<tr>

<td colspan="2">

<hr width="75%">

</td>

</tr>

<tr>

<td colspan="2">

<table width="75%" align="center" bgcolor="#DEDEDE">

<tr>

<td>

<?php include("menu.html");?>

<h3>Edite suas páginas</h3>

<form method="post" action="adm_pag_editar.php"

name="form_paginas">

27

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<input type="text" value="" name="pagina" size="25"

placeholder="" />

<br />

<input type="submit" name="Gravar" />

</form>

<form method="post" action="">

<input type="submit" id="logout" name="logout"

value="logout" />

</form>

</td>

<td>

</td>

</tr>

</table>

</td>

</tr>

<tr>

<td colspan="2" bgcolor="#999999" height="80" align="center">

<p><?php echo nl2br($dad_empresa);?></p>

<p><a href="login.php">Login</a></p>

</td>

</tr>

</table>

</body>

</html>

<?php mysql_close($conecta);?>

Script 13 - Formulário de edição de dados

Para editar os dados recebidos, vamos inserir o seguinte script php.

<?php

$registro = $_GET['usu_id'];

If(isset($_POST['Gravar'])){

$Eusu_nome = $_POST['usu_nome'];

mysql_query("UPDATE usuarios SET usu_nome='$Eusu_nome' WHERE

usu_id=$registro");

}

?>

Script 14 - Edição de dados

Exercício

Edite todos os dados dos usuários, da empresa e dos conteúdos.

Para editar as imagens, basta fazer um novo upload e inserir um novo nome no

registro filtrado com as mesmas funções criadas.

28

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 7

Exclusão de dados

Para excluir um dado ou registro vamos proceder da seguinte maneira:

Crie a página em que você possa escolher o registro (exibir todos);

No nome do registro, crie um link para a página adm_excluir.php e envie pela URL o

id do registro (Aula 4) e vamos ao seguinte script:

<?php

if(isset($_POST['sim'])) {

mysql_query("DELETE FROM usuarios WHERE usu_id = '$registro'");

}

?>

Script 15 - Exclusão de dados

Note que a opção de exclusão de dados está condicionada ao um botão chamado

“sim”. Crie um formulário com este botão para que funcione.

<form name="form" id="form" method="post" action="">

<input type="submit" name="submit" value="sim">

</form>

Seria bem interessante informar ao usuário qual registro você irá excluir, para que

ele tenha certeza!

Método de status

Muitas vezes não é interessante excluir os dados. Vamos imaginar que um assinante

de jornal queira suspender seu recebimento, ou que um usuário de um site por

ventura deixe de pagar a assinatura. Ele não receberá mais os jornais ou poderá ter

acesso ao site, mas ao solicitar sua readesão todos seus dados deverão ser

reestabelecidos sem que ele tenha que preencher tudo de novo ou mesmo que

você tenha um banco de dados repleto de registros atrelados a este usuário de

forma inútil.

Então vamos chamar de excluir, mas na verdade vamos criar uma página de edição.

Nesta página o que vamos fazer é trocar o status do usuário de 1 (ativo) para 0

(inativo), mesmo assim ele continuará existindo no BD, só que existirá um filtro que

29

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

terá a condição WHERE usu_status=1 ou WHERE usu_id = '$registro' AND

usu_status=1. Então vamos criar este campo no BD!

Agora é só criar a página da “falsa exclusão”.

Exercício

Crie um sistema com usuários e permita que eles sejam excluídos e recuperados.

30

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 8

Login

Nesta aula vamos criar um sistema de login por sessão.

Vamos lembrar como se cria uma sessão?

http://www.institutosiegen.com.br/documentos/eau_ung_ccomp_twii_a7.pdf

Crie uma página com um formulário com um campo para o e-mail e outro para a

senha, assim:

<form name="form1" method="post" action="">

<p>e-Mail<br />

<input type="text" name="email" /></p>

<!-- a frase de erro gerada pelo PHP -->

<?php if(isset($_GET['usu_inex'])){?>

<font color="red">e-Mail inexistente. Tente outro e-mail.</font>

<!-- somente aparecerá se digitar algo errado -->

<?php } ?>

<p>Senha<br />

<input type="password" name="senha" /></p>

<?php if(isset($_GET['senha_errada'])){?>

<font color="red">Senha errada. Tente novamente.</font>

<?php } ?><br />

<input type="submit" name="entrar" value="Entrar" />

</form>

Script 16 - Formulário de login

E vamos receber os dados, criar a sessão e procura-los no BD.

<?php

//login

//dispara somente depois de clicar em "entrar"

if(isset($_POST['entrar'])){

//recebe os dados do form

$email = $_POST['email'];

$senha = $_POST['senha'];

//realiza a pesquisa do e-mail

$usuario = mysql_query("SELECT * FROM usuarios WHERE

usu_email='$email'");

//retorna o nº de linhas

$registros = mysql_num_rows($usuario);

//se for 0, nenhum registro, retorne à página de login

if ($registros == 0){

//retorno à página login com o disparo de erro

"?usu_inex=true"

header("location: login.php?usu_inex=true");

}else{

//senão, se existir o usuário, compara a senha e retorna o

erro

if($senha != mysql_result($usuario, 0, "usu_senha")){

31

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

header("location: login.php?senha_errada=true");

}else{

//se tudo estiver certo, cria a sessão, os cookies

session_start();

$_SESSION['usu_email'] = $email;

$_SESSION['usu_senha'] = $senha;

header("location: adm.php");

}

}

}

?>

Script 17 - Página de login: recepção dos dados, criação da sessão e busca no BD

valida_sessao.php

<?php

//inicia a sessão

session_start();

//recebe os dados criados na página login

if(isset($_SESSION['usu_email']))

$usu_email = $_SESSION['usu_email'];

if(isset($_SESSION['usu_senha']))

$usu_senha = $_SESSION['usu_senha'];

//se não forem vazios(empty) realiza a busca no BD

if(!(empty($usu_email) || empty($usu_senha)))

{

$busca = mysql_query("SELECT * FROM usuarios WHERE

usu_email='$usu_email'");

//se encontrar 1 registro...

if(mysql_num_rows($busca)==1)

{

//...e se esse registro tiver a senha diferente do BD...

if($usu_senha != mysql_result($busca, 0, "usu_senha"))

{

//...desfaz a sessão

unset($_SESSION['usu_email']);

unset($_SESSION['usu_senha']);

header("location: login.php");

exit;

}

}

else

{

unset($_SESSION['usu_email']);

unset($_SESSION['usu_senha']);

header("location: login.php");

exit;

}

}

else

{

header("location: login.php");

exit;

}

?>

logout.php

<?php

//logout. Depende do disparo do botão "logout" no form

32

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

if(isset($_POST['logout']))

{

session_start();

$_SESSION = array();

session_destroy();

header("location: index.php");

}

?>

Script 18 - logout

Páginas protegidas

Adicione o script 19 em todas as páginas que deverão ser protegidas.

<?php include ("conecta.php"); ?>

<?php include("valida_sessao.php"); ?>

<?php include("logout.php"); ?>

...

Script 19 - Proteger as páginas

33

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 9

PDF

O PHP pode gerar diversos arquivos, como .txt, .jpg, .xml e o .pdf.

O interessante de se gerar um pdf é a geração de relatórios dos sistemas. Vamos

ver.

pdf.php

Crie um formulário com um título e uma caixa de texto.

<form id="form1" method="post" action="">

<p>

Título<br />

<input type="text" name="titulo" />

</p>

<p>Texto<br />

<textarea name="texto" cols="75" rows="10"></textarea>

</p>

<p>

<input type="submit" name="criar" value="Criar" />

</p>

</form>

1. Baixe o software DOMPDF do site oficial: http://code.google.com/p/dompdf/

2. Instale (descompacte) na pasta do seu site, na raiz.

3. Adicione o script20.

<?php

if(isset($_POST['criar'])){

$criar = $_POST['criar'];

$titulo = $_POST['titulo'];

$texto = nl2br($_POST['texto']);

$data = date('H:i:s | d/m/Y');

$html = "<h1>$titulo</h1><hr>".nl2br("<p>$texto</p>")."<p>Gerado em:

$data</p>";

//chame o DOMPDF

require_once("dompdf/dompdf_config.inc.php");

$dompdf = new DOMPDF();

//imprima o conteúdo da variável $html

$dompdf->load_html($html);

//defina o tamanho e posição do papel

$dompdf->set_paper('a4', 'portrait');

$dompdf->render();

$dompdf->stream($titulo.pdf");

}

?>

Explicando:

34

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

1. A variável $rand e $data servem para atribuir nome ao arquivo e adicionar a

data de criação como texto no PDF.

2. Receba os dados do formulário;

3. A variável $html é onde você irá criar o conteúdo a ser impresso.

35

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 10

XML

Leitura do XML

<?php

//Lê o arquivo XML e recebe um objeto com as informações

$xml = simplexml_load_file('usuarios.xml');

//Percorre o objeto e imprime na tela as informações de cada contato

foreach ($xml as $contato){

$a = "Id: " . $contato->id . "<br />";

$a .= "Nome: " . $contato->nome . "<br />";

$a .= "Email: " . $contato->email. "<br />";

$a .= "Senha: " . $contato->senha. "<br />";

$a .= "Foto: " . $contato->foto. "<br />";

echo "$a <hr />";

}

?>

Script 20 - Leitura do XML

Geração de arquivo XML

<?php

//método do while....

$dados = mysql_query('SELECT * FROM usuarios ORDER BY usu_id ASC');

$registros = mysql_num_rows($dados);

$registro = 0;

//escrever o xml

$arquivo = "usuarios.xml";

$cria = fopen($arquivo, "w");

?>

<?php

/*

Observe que o script php foi interrompido e reaberto, interrompido

novamente e reaberto. Isto é feito por que na codificação do cabeçalho

do xml, ele é encerrado com ?>, idêntico ao do php, o que leva o

compilador se confundir e não interpreta o restante do código, por

isso é feito em separado para que o “erro” fique apenas neste trecho.

*/

$xml = "<?xml version='1.0' encoding='ISO-8859-1'?>";

?>

<?php

fwrite($cria, $xml);

fwrite($cria, "<registro> ");

do{

$usu_id = mysql_result($dados, 0, "usu_id");

$usu_nome = mysql_result($dados, 0, "usu_nome");

$usu_email = mysql_result($dados, 0, "usu_email");

$usu_senha = mysql_result($dados, 0, "usu_senha");

$usu_foto = mysql_result($dados, 0, "usu_foto");

$tag = "<usuario> ";

$tag.= "<id>$usu_id</id> ";

$tag.= "<nome>$usu_nome</nome> ";

$tag.= "<email>$usu_email</email> ";

36

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

$tag.= "<senha>$usu_email</senha> ";

$tag.= "<foto>$usu_email</foto> ";

$tag.= "</usuario> ";

fwrite($cria, $tag);

$registro++;

}while ($registro < $registros);

fwrite($cria, "</registro>");

fclose($cria);

?>

Script 21 - Geração de arquivo XML

Inserir dados do XML no MySQL

<?php

if(isset($_POST['submit'])){

//upload do arquivo

$arq = $_FILES['arquivo']['name'];

$arq_temp = $_FILES['arquivo']['tmp_name'];

move_uploaded_file($arq_temp,"docs/usuarios.xml");

//Lê o arquivo XML e recebe um objeto com as informações

$xml = simplexml_load_file('docs/usuarios.xml');

//Percorre o objeto e salva as informações no banco de dados

$x = 0;

foreach ($xml as $regs){

mysql_query("INSERT INTO usuarios (usu_id, usu_nome, usu_email,

usu_senha, usu_foto)

VALUES ('$regs->id', '$regs->nome', '$regs->email', '$regs-

>senha', '$regs->foto')");

if(mysql_affected_rows() != -1){

$x++;

}

}

echo "$x contatos importados com sucesso!";

}else{

echo "<form method='POST' enctype='multipart/form-data'>

<input type='file' name='arquivo' size='20'>

<input type='submit' name='submit' value='Upload'>

</form>";

}

?>

Script 22 - Inserir dados do XML no MySQL

37

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Aula 11

Sistema de busca

Vamos começar criando um sistema de busca na tabela de usuários.

Crie um formulário de busca.

<form name="busca" method="POST">

<input type="text" name="busca" value="" />

<input type="submit" value="Buscar" name="buscar" />

</form>

Agora vamos criar o script para realizar a busca.

<?php

if(isset($_POST['buscar'])){

$busca = $_POST['busca'];

$dados = mysql_query("SELECT * FROM usuarios WHERE usu_nome LIKE

'%$busca%' OR usu_email LIKE '%$busca%'");

$num_reg = mysql_num_rows($dados);

for($i=0;$i<$num_reg;$i++){

$usu_nome = mysql_result($dados, $i, 'usu_nome');

$usu_email = mysql_result($dados, $i, 'usu_email');

echo "Foram encontrados $num_reg registros <br>";

echo "Nome: $usu_nome<br>e-mail: $usu_email<hr>";

}

}

?>

Script 23 - Script de busca

Então, depois de clicar em buscar, o valor do campo é armazenado na variável

$busca que servirá de filtro. O problema é que o usuário poderá não escrever

exatamente o que há no BD, por isso utiliza-se o % como caractere coringa, antes e

depois da variável. Coloque tudo dentro de um laço de repetição para que ele

mostre tudo o que encontrou.

Método de buscar tudo em todas as tabelas

Da mesma forma que procedemos com a busca simples, vamos aproveitar o

formulário criado.

Para buscar em tudo, dentro do BD, precisamos ler todas as tabelas.

<?php

//busca tudo

if(isset($_POST['busca'])){

//mostra todas as tabelas do BD

38

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

$tabelas = mysql_query("SHOW TABLES FROM $db");

//registra o nº de tabelas

$tab_num = mysql_num_rows($tabelas);

//Que tal imprimir para controlar?

echo $tab_num;

}

?>

Script 24 - Leitura de todas tabelas

Se queremos que busque em todas as tabelas, precisamos realizar a busca uma a

uma, por isso precisamos do total de tabelas, para criar um laço de repetição.

<?php

if(isset($_POST['busca'])){

$tabelas = mysql_query("SHOW TABLES FROM $db");

$tab_num = mysql_num_rows($tabelas);

$tn=0;

do{

$tab_nom = mysql_table_name($tabelas, $tn);

echo "<h3>$tab_nom <br /></h3>";

$tn++;

}

while($tn<$tab_num);

}

?>

Agora que temos as tabelas marcadas, vamos ler a quantidade e o nome dos

campos na tabela.

<?php

if(isset($_POST['busca'])){

$tabelas = mysql_query("SHOW TABLES FROM $db");

$tab_num = mysql_num_rows($tabelas);

$tn=0;

do{

$tab_nom = mysql_table_name($tabelas, $tn);

echo "<h3>$tab_nom <br /></h3>";

//laço de repetição para tabelas

do{

$tab_var = mysql_query("SELECT * FROM $tab_nom");

$cam_num = mysql_num_fields($tab_var);

$cam_nome = mysql_field_name($tab_var, $cn);

//adicione mais 1

$cn++;

}

while($cn<$cam_num);

echo "<br />";

//adicione mais 1

$tn++;

}

while($tn<$tab_num);

}

?>

Script 25 - Campos e Registros

39

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Script completo.

<?php

//busca tudo

if(isset($_POST['busca'])){

$cn=0;

//mostra todas as tabelas do BD

$tabelas = mysql_query("SHOW TABLES FROM $db");

//registra o nº de tabelas

$tab_num = mysql_num_rows($tabelas);

//$tn é o nº de tabelas da variável de interação da função DO

$tn=0;

do{

$tab_nom = mysql_table_name($tabelas, $tn);

echo "<h3>$tab_nom <br /></h3>";

//laço de repetição para tabelas

do{

$tab_var = mysql_query("SELECT * FROM $tab_nom");

$cam_num = mysql_num_fields($tab_var);

$cam_nome = mysql_field_name($tab_var, $cn);

//nova busca com o filtro aplicado dependendo do nome do campo

$tab_var_busca = mysql_query("SELECT * FROM $tab_nom WHERE

$cam_nome LIKE '%$busca%'");

$num_reg = mysql_num_rows($tab_var_busca);

//laço de repetição para busca dependendo da tabela e do campo

for($i=0;$i<$num_reg;$i++){

$campo_nome = mysql_result($tab_var_busca, $i, $cam_nome);

//esta busca serve somente para buscar o id e criar o link

$usu_id = mysql_result($tab_var_busca, $i, 0);

echo "<b>Campo:</b>$cam_nome: <a

href='usuario.php?usu_id=$usu_id'>$campo_nome</a><br />";

}

//adicione mais 1

$cn++;

}

while($cn<$cam_num);

echo "<br />";

//adicione mais 1

$tn++;

//zere a variável de interação para cada ciclo de tabelas

$cn=0;

}

while($tn<$tab_num);

}

?>

Script 26 - Script completo do sistema de busca

40

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Respostas

Resposta do Exercício da Aula 1

Criar o BD.

Resposta do Exercício da Aula 2

Busca e leitura

//dados da empresa

$bd_empresa = mysql_query("SELECT * FROM empresa ORDER BY emp_id

DESC");

$nom_empresa = mysql_result($bd_empresa, 0, "emp_nome");

$log_empresa = mysql_result($bd_empresa, 0, "emp_logo");

$dad_empresa = mysql_result($bd_empresa, 0, "emp_dados");

Impressão do topo

<table width="100%">

<tr bgcolor="#99BBFF">

<td>

<h1><?php echo "$nom_empresa";?></h1>

</td>

<td align="right">

<a href="index.php" border="0"><img src="img/<?php echo

$log_empresa;?>" width="20%" alt="<?php echo "$nom_empresa";?>"></a>

</td>

</tr>

Impressão do rodapé

</table>

</td>

</tr>

<tr>

<td colspan="2" bgcolor="#999999" height="80" align="center">

<p><?php echo nl2br($dad_empresa);?></p>

<p><a href="login.php">Login</a></p>

</td>

</tr>

</table>

</body>

</html>

<?php mysql_close($conecta);?>

Resposta do Exercício da Aula 3

Impressão dos conteúdos

<tr>

<td colspan="2">

<table width="75%" align="center" bgcolor="#DEDEDE">

41

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<tr>

<td>

<?php

if($con_qte!=0){

$con_ini=0;

do{

$con_texto = mysql_result($bd_conteudo, $con_ini,

"con_texto");

echo "$con_texto <hr>";

$con_ini++;

}while($con_ini<$con_qte);

}else{

echo "Página em construção!<br /> Por favor, retorne mais

tarde.";

}

?>

</td>

Impressão das imagens

<td>

<?php

if($img_qte!=0){

$img_ini = 0;

do{

$img_nome = mysql_result($bd_imagens, $img_ini,

"img_nome");

echo "

<table width='100%' bgcolor='#CCCCCC'>

<tr>

<td align='left'>

<img src='img/$img_nome' width='20%' align='right'

alt='$img_nome'>

</td>

</tr>

</table>";

$img_ini++;

}while($img_ini<$img_qte);

}

?>

</td>

</tr>

</table>

</td>

</tr>

Impressão de todos os dados de todos os campos

$dados = mysql_query('SELECT * FROM usuarios ORDER BY usu_id ASC');

$linhas = mysql_num_rows($dados);

$colunas = mysql_num_fields($dados);

echo "<table border='1' cellpadding='1' wicht='50%'>";

echo "<tr><th>Identificação</th>";

echo "<th>Nome</th>";

echo "<th>email</th>";

echo "<th>senha</th>";

echo "<th>Foto</th></tr>";

for($registro=0; $registro < $linhas; $registro++){

echo "<tr>";

for ($campo=0; $campo < $colunas; $campo++){

$usuario=mysql_result($dados ,$registro ,$campo);

42

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

echo "<td width=20%> $usuario </td>";

}

echo "</tr>";

}

echo "</table>";

Resposta do Exercício da Aula 4

<?php include ("conecta.php");?>

<?php

//dados da empresa

$bd_empresa = mysql_query("SELECT * FROM empresa ORDER BY emp_id

DESC");

$nom_empresa = mysql_result($bd_empresa, 0, "emp_nome");

$log_empresa = mysql_result($bd_empresa, 0, "emp_logo");

$dad_empresa = mysql_result($bd_empresa, 0, "emp_dados");

$bd_paginas = mysql_query("SELECT * FROM paginas");

$pag_qte = mysql_num_rows($bd_paginas);

//ao visitar (index.php) e ao clicar numa página (index.php?pag_id=x)

if(isset($_GET['pag_id'])){

$pag_id = $_GET['pag_id'];

//conteúdo

$bd_conteudo = mysql_query("SELECT * FROM conteudos WHERE pag_id =

'$pag_id'");

$con_qte = mysql_num_rows($bd_conteudo);

//imagens

$bd_imagens = mysql_query("SELECT * FROM imagens INNER JOIN conteudos

WHERE conteudos.con_id = imagens.con_id AND conteudos.pag_id =

$pag_id");

$img_qte = mysql_num_rows($bd_imagens);

}else{

//para definir a página como id=1

$pag_id = 1;

//conteúdo

$bd_conteudo = mysql_query("SELECT * FROM conteudos WHERE pag_id =

'$pag_id'");

$con_qte = mysql_num_rows($bd_conteudo);

//imagens

$bd_imagens = mysql_query("SELECT * FROM imagens INNER JOIN conteudos

WHERE conteudos.con_id = imagens.con_id AND conteudos.pag_id =

$pag_id");

$img_qte = mysql_num_rows($bd_imagens);

}

?>

<!DOCTYPE html>

<html lang="pt-br">

<head>

<meta content="text/html; charset=windows-1252" http-equiv="Content-

Type">

<title><?php echo $nom_empresa;?></title>

</head>

<body>

<table width="100%">

<tr bgcolor="#99BBFF">

<td>

<h1><?php echo "$nom_empresa";?></h1>

</td>

43

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<td align="right">

<a href="index.php" border="0"><img src="img/<?php echo

$log_empresa;?>" width="20%" alt="<?php echo "$nom_empresa";?>"></a>

</td>

</tr>

<tr>

<td colspan="2">

<?php

$pag_ini = 0;

do{

$nom_paginas = mysql_result($bd_paginas, $pag_ini,

"pag_nome");

$id_paginas = mysql_result($bd_paginas, $pag_ini, "pag_id");

echo "<a href='index.php?pag_id=$id_paginas'>$nom_paginas |

</a>";

$pag_ini++;

}while($pag_ini<$pag_qte);

?>

<hr width="75%">

</td>

</tr>

<tr>

<td colspan="2">

<table width="75%" align="center" bgcolor="#DEDEDE">

<tr>

<td>

<?php

if($con_qte!=0){

$con_ini=0;

do{

$con_texto = mysql_result($bd_conteudo, $con_ini,

"con_texto");

echo "$con_texto <hr>";

$con_ini++;

}while($con_ini<$con_qte);

}else{

echo "Página em construção!<br /> Por favor, retorne mais

tarde.";

}

?>

</td>

<td>

<?php

if($img_qte!=0){

$img_ini = 0;

do{

$img_nome = mysql_result($bd_imagens, $img_ini,

"img_nome");

echo "

<table width='100%' bgcolor='#CCCCCC'>

<tr>

<td align='left'>

<img src='img/$img_nome' width='20%' align='right'

alt='$img_nome'>

</td>

</tr>

</table>";

$img_ini++;

}while($img_ini<$img_qte);

}

?>

44

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

</td>

</tr>

</table>

</td>

</tr>

<tr>

<td colspan="2" bgcolor="#999999" height="80" align="center">

<p><?php echo nl2br($dad_empresa);?></p>

<p><a href="login.php">Login</a></p>

</td>

</tr>

</table>

</body>

</html>

<?php mysql_close($conecta);?>

Resposta do exercício 1 da aula 5.

<?php include("conecta.php"); ?>

<?php

//dados da empresa

$bd_empresa = mysql_query("SELECT * FROM empresa ORDER BY emp_id

DESC");

//Já que tivemos que repetir a construção....

$nom_empresa = mysql_result($bd_empresa, 0, "emp_nome");

$log_empresa = mysql_result($bd_empresa, 0, "emp_logo");

$dad_empresa = mysql_result($bd_empresa, 0, "emp_dados");

//vamos criar uma opção inteligente!

/*

$tb_qte = mysql_num_fields($bd_empresa);

for($i=0; $tb_qte<$i; $i++){

$var_empresa = mysql_result($bd_empresa, 0, $i);

}

*/

?>

<?php

$bd_paginas = mysql_query("SELECT * FROM paginas");

$qte_paginas = mysql_num_rows($bd_paginas);

?>

<?php

if(isset($_POST['Gravar'])){

$con_pag = $_POST['conteudo'];

$id_pag = $_POST['pagina'];

mysql_query("INSERT INTO conteudos (con_texto, pag_id) VALUES

('$con_pag', '$id_pag')");

}

?>

<!DOCTYPE html>

<html lang="pt-br">

<head>

<meta content="text/html; charset=windows-1252" http-equiv="Content-

Type">

<title><?php echo $nom_empresa;?></title>

</head>

<body>

45

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

<table width="100%">

<tr bgcolor="#99BBFF">

<td>

<h1>Administração da <?php echo "$nom_empresa";?></h1>

</td>

<td align="right">

<img src="img/<?php echo $log_empresa;?>" width="20%">

</td>

</tr>

<tr>

<td colspan="2">

<hr width="75%">

</td>

</tr>

<tr>

<td colspan="2">

<table width="75%" align="center" bgcolor="#DEDEDE">

<tr>

<td>

<?php include("menu.html");?>

<h3>Insira conteúdos nas páginas</h3>

<form method="post" action="adm_conteudos.php"

name="form_conteudos">

<select size="1" name="pagina">

<?php

echo "<option value='0'>Página</option>";

for($i=0; $i<$qte_paginas; $i++){

$id_paginas = mysql_result($bd_paginas, $i, 0);

$nom_paginas = mysql_result($bd_paginas, $i, 1);

echo "<option value='$id_paginas'>$nom_paginas</option>";

}

?>

</select><br />

<textarea name="conteudo" value="" rows="5" cols="30"

placeholder="Insira o conteúdo da página aqui."></textarea><br />

<input type="submit" name="Gravar" />

</form>

<br>

<form method="post" action="">

<input type="submit" id="logout" name="logout"

value="logout" />

</form>

</td>

<td>

</td>

</tr>

</table>

</td>

</tr>

<tr>

<td colspan="2" bgcolor="#999999" height="80" align="center">

<p><?php echo nl2br($dad_empresa);?></p>

<p><a href="login.php">Login</a></p>

</td>

</tr>

</table>

</body>

</html>

<?php mysql_close($conecta);?>

46

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Resposta do exercício 2 da aula 5.

<?php

if(isset($_POST['Gravar'])){

$tempo = time();

$dir = "img";

$arq = $_FILES['logo']['name'];

$arq_temp = $_FILES['logo']['tmp_name'];

move_uploaded_file($arq_temp,"$dir/$arq");

mysql_query("INSERT INTO empresa (emp_logo) VALUES ('$arq.$tempo

')");

}

?>

Resposta do exercício da aula 6.

<?php

$registro = $_GET['usu_id'];

if(isset($_POST['Gravar'])){

$Eusu_nome = $_POST['usu_nome'];

$Eusu_email = $_POST['usu_email'];

$Eusu_senha = $_POST['usu_senha'];

$Eusu_foto = $_POST['usu_foto'];

mysql_query("UPDATE usuarios SET usu_nome='$Eusu_nome',

usu_email='$Eusu_email', usu_senha='$Eusu_senha',

usu_foto='$Eusu_foto' WHERE usu_id=$registro");

}

?>

Resposta do exercício da aula 7

<?php

include("menu.php");

//note que o id do usuário vem pela URL, logo, não use $_POST e sim

$_GET

if(isset($_GET['usu_id'])){

$registro = $_GET['usu_id'];

$dados = mysql_query("SELECT * FROM usuarios WHERE

usu_id=$registro");

$id = mysql_result($dados, 0, "usu_id");

$nome = mysql_result($dados, 0, "usu_nome");

$email = mysql_result($dados, 0, "usu_email");

$foto = mysql_result($dados, 0, "usu_foto");

}else{

header('location:excluir.php');

}

?>

<form name="form" id="form" method="post" action="">

<?php

echo "<img src='img/$foto'><br>Você deseja excluir o usuário $nome, id

$id, email $email?";

?>

<input type="submit" name="apagar" value="apagar">

<hr>

<?php

47

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

echo "No entanto, se você deseja excluí-lo em definitivo da base de

dados para não haver mais recuperação, clique em \"destruir\".<br>

<font color='red'><strong>OBS.: Esta ação não poderá ser

revertida!</strong></font>";

echo "<img src='img/$foto'><br>Você deseja <font

color='red'><strong>destruir</strong></font> o usuário $nome, id $id,

email $email da base de dados?";

//$excluir = "DELETE FROM usuarios WHERE usu_id = '$registro'";

?><br />

<input type="submit" name="destruir" value="destruir">

</form>

<?php

if(isset($_POST['destruir'])) {

mysql_query("DELETE FROM usuarios WHERE usu_id = '$registro'");

header('location:excluir.php');

}

if(isset($_POST['apagar'])){

mysql_query("UPDATE usuarios SET usu_status=0 WHERE

usu_id='$registro'");

header('location:excluir.php');

}

?>

48

Prof. Erwin Alexander Uhlmann – www.institutosiegen.com.br

Bibliografia

HOGAN, Brian P. Web Design para Desenvolvedores. Rio de Janeiro. Editora Ciência

Moderna, 2011.Pressman, Roger S. Engenharia Web. Rio de Janeiro. LTC, 2009.

PRESSMAN, Roger S. Engenharia Web. Rio de Janeiro. LTC, 2009.

CYBIS, Walter. Ergonomia e Usabilidade: conhecimentos, métodos e aplicações. São

Paulo. Novatec, 2007.

SILVA, Maurício Samy. Construindo sites com CSS e (X)HTML: sites controlados por

folhas de estilo em cascata. São Paulo. Novatec, 2008.

POWERS, Shelley. Aprendendo Javascript. São Paulo. Novatec, 2010.

SILVA, Maurício Samy. Criando sites com HTML: sites de alta qualidade com HMTL e

CSS. São Paulo. Novatec, 2008.