Tecnologia WEB III - Instituto Siegen: cursos online de ... · de livros e bibliotecas que...
Transcript of Tecnologia WEB III - Instituto Siegen: cursos online de ... · de livros e bibliotecas que...
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
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.