Download - 177_Lógica de Programação
Visão Geral....................................................................................................................................................... 2
Bancos de Dados............................................................................................................................................. 3
Utilizando DNS de Sistema.............................................................................................................................. 3
Componentes ODBC32Bits.............................................................................................................................. 4
Como instalar um componente ODBC..........................................................................................................4
Quais os componentes de um sistema de banco de dados.............................................................................6
A SQL(Structured Query Language).................................................................................................................6
Operadores de Comparação......................................................................................................................... 7
Operadores Lógicos...................................................................................................................................... 7
Exemplos de instruções SQL........................................................................................................................ 8
Utilizando o Microsoft Access 8.0/97..............................................................................................................10
Criando um banco de dados no Microsoft Access......................................................................................10
Utilizando o My-Sql 3.2.3................................................................................................................................ 12
Conectando/Desconectando o MySql.........................................................................................................12
Criando e abrindo um banco de dados.......................................................................................................12
Criando tabelas e campos.......................................................................................................................... 13
Para criar uma tabela dentro do banco de dados você deve:.....................................................................13
Para exibir a estrutura da tabela................................................................................................................. 14
PHP................................................................................................................................................................ 15
Criando e executando um arquivo em PHP................................................................................................15
Enviando informações do cliente para o servidor(Navegador)....................................................................15
Enviando informações do servidor para o cliente(Servidor Web)...............................................................15
Integração do Formulário HTML e PHP......................................................................................................15
Tornando a informação persistente na aplicação........................................................................................16
Passando informações através de variáveis dinâmicas..............................................................................17
Enviando informações para o usuário.........................................................................................................18
Gerenciando um banco de dados MySql....................................................................................................19
Estabelecendo a comunicação com o banco de dados..............................................................................19
Utilizando rotinas atuárias........................................................................................................................... 19
Gravando Informações no Banco de dados MySQL...............................................................................19
Atualizando Informações no Banco de dados MySQL............................................................................20
Excluindo Informações no Banco de dados MySQL................................................................................20
Consultando Informações no Banco de dados MySQL...........................................................................20
ASP................................................................................................................................................................ 22
A Estrutura da Active Server Pages............................................................................................................22
Criando e executando um arquivo em ASP................................................................................................23
Informação persistente na aplicação...........................................................................................................23
Passando informações específicas para um usuário..............................................................................23
Integração do formulário HTML com ASP...................................................................................................24
Enviando informações para o usuário.........................................................................................................24
Gerenciando um banco de dados...................................................................................................................25
Utilizando ADO com Active Server Pages..................................................................................................25
Objeto Connection................................................................................................................................... 25
O objeto recordset (registros)..................................................................................................................26
Gerenciando componentes C.O.M com ASP..............................................................................................30
Utilizando o objeto aspmail......................................................................................................................... 30
Registrando componentes ActiveX no Servidor.............................................................................................32
XML................................................................................................................................................................ 33
XML Vs. HTML............................................................................................................................................ 33
Criando Documento XML............................................................................................................................ 33
Estrutura de um documento XML................................................................................................................34
Prolog...................................................................................................................................................... 34
Comnetários............................................................................................................................................ 35
Elementos ROOT.................................................................................................................................... 35
Elementos CHILD.................................................................................................................................... 35
Elementos Vazios.................................................................................................................................... 36
Criando Data Island com XML e HTML..........................................................................................................36
Utilizando Validação com Schemas................................................................................................................36
Melhorando a aparência com XSLT...............................................................................................................36
Mecanismos do XSLT................................................................................................................................. 36
Criando Um arquivo XSLT.......................................................................................................................... 36
UTILIZANDO ACTIVE SERVER PAGES E MSXML3.0.................................................................................36
Visão Geral
“... Neste módulo você vai aprender como as tecnologias ASP, PHP, ADO, SQL, XML, ACTIVEX, COM, Dlls
são utilizadas para tornar sua aplicação dinâmica e altamente produtiva. Para compreender os conceitos e
lições bem como os códigos mostrados e demonstrados neste material você tem que racionar como um
servidor Web”.
Saber analisar e responder aos pedidos do cliente através dos protocolos web (http, FTP) e principalmente
entender que o termo servidor é muito mais que um computador principal, é a maneira como os serviços de
uma aplicação se relacionam...”“.
Marcelo Costa
1
Bancos de Dados
Sistemas de bancos de dados são utilizados para armazenar grandes quantidades de informações sobre
um determinado assunto. Exemplo: informações sobre o estoque da sua empresa. Estas informações
podem estar relacionadas com outras informações no mesmo sistema de banco de dados ou de outros
bancos de dados em outras plataformas operacionais em um ambiente de rede como intranet e/ou internet.
Exemplo: as informações sobre os produtos que a empresa vende pode estar vinculado as informações
sobre os fornecedores.
Neste módulo você vai estudar sobre as ferramentas e recursos utilizados na criação e gerenciamento de
sistemas de bancos de dados através do Microsoft Access e do MySql. As aplicações servidor(ASP, PHP)
que utilizam estes bancos de dados trabalham com ODBC(open database conectivity) para efetuar a
comunicação com estes programas. A seção posterior mostra como criar uma comunicação utilizando
ODBC através do applet Fontes de dados ODBC contido no painel de controle.
Utilizando DNS de Sistema
Você pode utilizar o DNS(Data Source Name) ou NFD(Nome da Fonte de dados) para prover comunicação
com o banco de dados que contém informações a serem coletas pela sua aplicações Web. Para criar uma
comunicação você deve:
1. No Painel de Controle, clique 2x no ícone Fonte de dados ODBC 32 bits e,
em seguida, clique na guia DNS de sistema ou NFD de sistema.
2. Para criar uma instancia de conexão, clique em Adicionar. Para alterar os
parâmetros de uma conexão existente clique em Configurar. Para apagar uma conexão clique em
Remover.
2
3. Neste exemplo você deve clicar em Adicionar e, em seguida, clique no
nome do Driver de banco de dados desejado. Por fim clique em Concluir.
Componentes ODBC32Bits
Fornecer acesso aos dados de diversos aplicativos de bancos de dados pode ser uma operação muito
complexa. Os aplicativos que usam padrão ODBC, como o Microsoft Access e MYSql, aliviam essa carga
usando meios de fornecedor neutro para trabalhar com SGBDs(Sistemas de Gerenciamento de Bancos de
Dados). A tabela abaixo mostra as camadas do ODBC
Aplicativo – A.D.O.
Gerenciador de Driver (ODBC32.DLL)
Driver SGBD (DLL)
Software de Rede
Fonte de dados SGBD)
O aplicativo chama as funções ODBC para conectar-se a uma fonte de dados;
O gerenciador de driver fornece uma lista de fontes de dados disponíveis, carrega os drives
dinamicamente à medida que eles forem necessários.
O Driver SGBD, desenvolvido separadamente do aplicativo, processa as chamadas de função ODBC e
pode converter a sintaxe SQL padrão da fonte de dados de destino em SQL nativa.
Como instalar um componente ODBC
Nesta seção você vai aprender como instalar o componente ODBC para o banco de dados MySql atrvés do
arquivo MyODBC-3.51.01.exe
2. procure a pasta no servidor contendo o arquivo MyODBC-3.51.01.exe
3
3. Na tela de apresentação clique sobre o botão next. Será apresentada a tela de contrato.
4. Clique novamento sobre o botão next. Agora o sistema indica que você está pronto para instalar os
componentes do driver odbc para o MySql
5. Para iniciar a copia dos arquivos clique em next
4
6. Depois de terminada a instalação dos arquivos clique em Finish
Importante: Você pode utilizar o Driver instalado, a partir do applet Fonte de dados ODBC 32 bits contido
no painel de controle. Para obter maiores informações sobre a utilização do applet Fonte de dados ODBC
32 bitx consulte a seção
Quais os componentes de um sistema de banco de dados
Um sistema de banco de dados é constituído de um arquivo principal. Dentro deste arquivo principal existem
as tabelas. As tabelas são utilizadas para armazenar informações sobre um determinado assunto. Exemplo:
Uma tabela de produtos contém informações sobre os produtos que a empresa vende (nome, quantidade
etc..). A tabela é composta de campos. Os campos são utilizados para separar e organizar as informações
de um assunto em grupos. Exemplo: O campo Descrição pode conter o nome dos produtos da tabela de
produtos.
Para criar estes componentes bem como pesquisar as informações gravadas dentro dos campos de uma ou
mais tabelas você pode utilizar a aplicativos como Microsoft Access, Microsoft SQL Server, Mysql, entre
outros. A linguagem de programação SQL associada a estes aplicativos também permite a criação de
bancos de dados e seus componentes.
A SQL(Structured Query Language)
A linguagem SQL é utilizada para oferecer uma comunicação programável com as fontes de dados padrão
ODBC e OLEDB. Esta seção mostra exemplos sobre a utilização de alguns comandos SQL. Estes
Banco de
Dados
Tabela de Clientes Tabela de Produtos Tabela de Fornecedores
Nome
Endereço
Código
Descrição
Nome
CGC
5
comandos podem ser atribuídos a variáveis e utilizados em conjunto com os objetos do componente
ADO(ActiveX Data Object).
A tabela abaixo mostra uma descrição de algumas instruções em SQL organizadas por cláusulas e
comandos. Para maiores informações consulte Exemplos de instruções SQL posteriormente.
INSTRUÇÃO TIPO DESCRIÇÃO
SET cláusula Especifica a coluna(campo) e os valores que serão mudados na tabela do
banco de dados
ORDER BY cláusula Classifica uma ou mais colunas(campos0 em ordem crescente(ASC) ou
decrescente(DESC)
WHERE cláusula Determina(m) qual(is) linha(s), isto é, registro(s) que será(ão) atualizado(s) no
banco de dados. A cláusula where pode utilizar operadores de comparação,
Intervalos, Listas e Lógicos. Estes operadores podem ser utilizados de forma
isolada ou em conjunto.
UPDATE comando Muda uma única linha ou um grupo de registros em uma tabela
SELECT comando Especificar quais colunas(campos) do banco de dados você deseja utilizar
FROM Especificar as tabelas onde as colunas(campos) estão armazenados
INSERT comando Inserir linhas de informação, isto é, registros no banco de dados com a
palavra chave VALUES. A palavra-chave INTO possibilita especificar quais
colunas serão utilizadas
LIKE cláusula Seleciona registros que atendam uma parte do valor específicado na srting.
Exemplo: para selecionar todos os produtos que comecem pela letra A você
pode utilizar LIKE 'A%'
DELETE Comando Deletar
Operadores de Comparação
Você pode utilizar os operadores de comparação juntamente com a cláusula WHERE. Através dos
operadores você pode criar poderosas expressões para filtrar os dados de acordo com a necessidade da
sua aplicação.
= Igual a >= Maior ou Igual a
> Maior do que <= Menor ou igual a
< Menor do que <> Diferente
!> Não maior do que !< Não menor do que
% Todos
Operadores Lógicos
Você pode utilizar os operadores lógicos AND e OR em conjunto com a cláusula WHERE.
6
Exemplos de instruções SQL
As tabelas abaixo mostram rotinas em SQL utilizadas em consultas, atualização, Exclusão e inserção de
informações nos campos dos bancos de dados.
Importante: Você pode utilizar o programa Microsoft Query para testar os exemplos abaixo. Para iniciar o
programa Microsoft Query localize e abra o arquivo Msqry32.exe.
Os exemplos abaixo utilizam os campos das tabelas contidas no banco de dados GrupoAbc.MDB. Antes
de começar a utilizar as instruções SQL abaixo, é recomendável abrir o banco de dados citado e estudar o
relacionamento entre os campos e as tabelas do banco de dados.
CO
NS
ULT
AR
Utilizando a cláusula SELECT para todos os campos.
“select * from tblprodutos”
Utilizando a cláusula SELECT para alguns campos
“select nmprodutodb,pvprodutodb from tblprodutos”
Utilizando a cláusula SELECT com ORDER BY
“select * from tblclientes order by nmclientedb asc”
Utilizando a cláusula SELECT com WHERE e operadores de comparação
“select * from tblclientes where ufclientedb = ‘PR’”
Utilizando a cláusula SELECT com WHERE e operadores de comparação e Lógicos
“select * from tblprodutos where pvprodutodb >0 and pvprodutodb <=50”
Importante: O símbolo (*) indica que a instrução select vai buscar as informações de todos os campos do
banco de dados. Você pode substituir o símbolo do * pelo(s) nome(s) do(s) campo(s) do banco de dados
que você deseja consultar.
AT
UA
LIZ
AR
Utilizando a cláusula UPDATE e SET
“update tblclientes set cepclientedb = 81020500”
Utilizando a cláusula UPDATE e SET com WHERE e operadores de comparação
“update tblclientes set ufclientedb = ‘PR’ where ufclientedb = ‘SC’”
Utilizando a cláusula UPDATE e SET com WHERE, operadores de comparação e operadores
lógicos
“update tblclientes set ufclientedb = ‘PR’ where ufclientedb = ‘SC’ and
sxclientedb = ‘masculino’”
Utilizando a cláusula UPDATE e SET com operadores aritiméticos
“update tblprodutos set pvprodutodb = pvproduto + (pvprodutodb * 0.60)”
Os exemplos abaixo mostram como excluir informações de uma ou mais tabelas do banco de dados.
Utilizando a cláusula DELETE
“delete cepclientedb from tblcliente”
Utilizando a cláusula DELETE com WHERE
“delete * from tblclientes where ufclientedb = ‘SC’”
7
AP
AG
AUtilizando a cláusula DELETE e WHERE com operadores de comparação e operadores lógicos
“delete * from tblclientes where ufclientedb = ‘SC’ and sxclientedb =
‘masculino’”
Os exemplos abaixo mostram como inserir informações em uma tabela do banco de dados através da
cláusula INSERT INTO
INS
ER
IR
Utilizando a cláusula INSERT
“insert tblclientes values (‘Ana Cláudia’,’Rua das Flores,
900’,81020030,’[email protected]’)”
Utilizando a cláusula INSERT INTO
“insert into tblclientes (nmclientedb,enclientedb,cepclientedb,emclientedb)
values (‘Ana Cláudia’,’Rua das Flores, 900’,81020030,’[email protected]’)”
Utilizando a cláusula INSERT INTO e SELECT
Importante: Para adicionar textos que contenham apóstrofos, utilize o símbolo (‘) apóstrofo 2 vezes.
Exemplo: Marca D’água deve ser inserido como Marca D‘’água
8
Utilizando o Microsoft Access 8.0/97
Criando um banco de dados no Microsoft Access
No Microsoft Access, selecione a opção Banco de dados vazio e, em seguida, clique OK
Na caixa abaixo, informe o local (pasta), o nome do banco de dados. Na caixa salvar como tipo mantenha a
opção Banco de dados do Microsoft Access (*.MDB) e, em seguida, clique em Criar.
Selecione a guia tabela e, em seguida, clique em novo. Por fim marque a opção modo de estrutura e clique
em Ok
No modo estrutura, você deve criar os campos que serão utilizados para armazenar informações (estoque,
clientes, fornecedores etc...).
Na coluna Nome do campo você deve informar o nome do campo de acordo com a informação que será
armazenada neste. Exemplo: Campo NOME armazena os nomes dos cliente.
Na coluna Tipo de dados, você deve escolher o tipo de informação que será armazenada no campo.
Exemplo: a campo NOME receberá os nomes dos clientes, por este fato o tipo de dados é texto.
Na coluna Descrição, você pode digitar mensagens explicativas para indicar como os campos devem ser
preenchidos. Exemplo: "..o campo nome deve ser preenchido com letras maiúsculas.."
9
Neste ponto você já pode criar uma tabela utilizando a janela mostrada acima. Digite as informações da
tabela abaixo:
Nome do campo Tipo de dados
#Idprodb Autonumeração
coprodb Texto
nmprodb Texto
ctprodb Texto
qtprodb Texto
pcprodb Número
pvprodb Número
mgprodb Número
obprodb Memorando
Após digitadas as informações acima, selecione o campo idprodb e, em seguida, clique em editar chave
primária.
Salve a tabela com o nome produtosxyz e, em seguida, feche o banco de dados
10
Utilizando o My-Sql 3.2.3
O MySql é um sistema de banco de dados servidor, isto é, além de controlar diversos arquivos de bancos
de dados e seus componentes, o My sql controla os usuários e suas permissões de acesso aos
componentes dos bancos de dados. Para criar um banco de dados no MySql você deve se conectar ao
banco de dados e, em seguida, utilizar comandos da linguagem SQL a partir do console do programa para
criar e ativar o banco de dados e, em seguida, criar as tabelas contendo os campos.
Conectando/Desconectando o MySql
1. Acesse o prompt do ms-dos e, em seguida, digite c:\mysql\bin\mysql. Por fim pressione ENTER
D:\>mysql\bin\mysql -u root -p
Enter password:******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 3.23.44-max-debug
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
Importante: Algumas instalações do MySql permitem aos usuários se conectares como usuários anônimos
quando estão utilizando o servidor no computador local. Se este é o seu caso então para se conectar ao
MySql basta digitar: \mysql\bin\mysql e, em seguida, pressionar ENTER.
2. Para finalizar o MySql, na linha de comando mysql>, digite quit e, em seguida, pressione ENTER.
mysql> quit
Bye
Criando e abrindo um banco de dados
Para criar um banco de dados no MySql você deve:
1. no prompt do MySql, digite CREATE DATABASE nome_do_banco_de_dados e, em seguida,
pressione ENTER
mysql> CREATE DATABASE empresaxyz;
Query OK, 1 row affected (0.11 sec)
Importante: O MySql gera 03 arquivos para gerenciamento do banco de dados. A tabela abaixo descreve
cada um desses arquivos:
Arquivo Descrição
produtoxyz.frm Layout das tabelas
produtoxyz.MYI Dados das tabelas
produtoxyz.MYD Arquivo de Indice
11
Para abrir um banco de dados você deve:
1. na linha de prompt do MySql, digite USE nome_do_banco_de_dados
mysql> USE empresaxyz;
Database changed
Criando tabelas e campos
Antes de criar as tabelas e os campos do banco de dados você precisa conhecer os comandos SQL que
definem o tipo de dados e as propriedades dos campos.
Para definir um campo com o tipo texto você utiliza o comando CHAR(qte) aonde qte é o tamanho
do campo fixo. Você ainda pode utilizar o comando VARCHAR(qte) aonde qte é o tamanho do
campo não fixo.
Para definir um campo com o tipo de dados numérico e inteiro utilize o comando INT(qte) aonde qte
corresponde ao tamanho do campo
Para definir um campo numérico com casas decimais utilize o comando DOUBLE(qte,decimais)
aonde qte corresponde ao tamanho do campo e decimais corresponde a quantidade de casas
decimais
Para criar campos do tipo data ou hora utilize o comando DATE
Para definir um campo como chave primária da tabela utilize o comando PRIMARY KEY(campo1,
campo2) aonde campo1 e campo2 correspondem aos nome dos campos
Para evitar que um campo tenha preenchimento zero utilize o comando UNSIGNED ZERFILL
Para definir um campo com numeração automática utilize o comando AUTO_INCREMENT
Para definir um valor padrão para o campo utilize o comando DEFAULT ‘valor’ aonde valor
corresponde ao valor gravado por padrão no banco de dados.
Para criar uma tabela dentro do banco de dados você deve:
1. No prompt do MySql, digite CREATE TABLE nome_da_tabela (campo tipo, campo tipo..)
mysql> CREATE TABLE produtoxyz (idprodb SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
-> coprodb CHAR(20) UNSIGNED ZEROFILL DEFAULT ‘000’ NOT NULL,
-> nmprodb VARCHAR(100) NOT NULL,
-> ctprodb VARCHAR(20) NOT NULL,
-> qtprodb DOUBLE(10,2) NOT NULL,
-> pcprodb DOUBLE(10,2) NOT NULL,
-> pvprodb DOUBLE(10,2) NOT NULL,
-> mgprodb DOUBLE(10,2) NOT NULL,
-> obprodb VARCHAR(200) NOT NULL,
-> PRIMARY KEY(idprodb));
Query OK, 0 rows affected (0.44 sec)
12
Importante: Para visualizar as tabelas do banco de dados utilize o comando SHOW nome_da_tabela
Para exibir a estrutura da tabela
1. No prompt do MySql digite DESCRIBE nome_da_tabela
mysql> DESCRIBE produtoxyz;
Field Type Null Key Default Extra
idprodb smallint(5) unsigned PRI NULL auto_increment
coprodb varchar(20)
nmprodb varchar(100)
ctprodb varchar(20)
qtprodb double(10,2) 0.00
pcprodb double(10,2) 0.00
pvprodb double(10,2) 0.00
mgprodb double(10,2) 0.00
obprodb varchar(200)
9 rows in set (0.22 sec)
13
PHP
Criando e executando um arquivo em PHP
Para integrar seus script’s em php com o código HTML da sua página você pode utilizar as opções abaixo:
Neste primeiro exemplo é utilizado o sinal de menor(<) seguido do ponto de interrogação(?) e o nome PHP,
para indicar o início do script em PHP.
Para indicar o final do script é utilizado o ponto de interrogação (?) seguido do sinal de menor (<)
<?PHP
//exemplo de código eme PHP
echo phpinfo();
?>
A outra maneira é indicar o tipo de script dentro da tag <SCRIPT>. O atributo LANGUAGE recebe o nome
da linguagem enquanto o atributo RUNAT indica que os comandos serão interpretados pelo servidor.
<SCRIPT LANGUAGE=’php’ RUNAT=’server’>
//exemplo de código em php
echo phpinfo();
</SCRIPT>
Enviando informações do cliente para o servidor(Navegador)
Para compreender o envio de informações do cliente para o servidor imagine as situações abaixo:
Um usuário clicando no link de uma página Web;
Um usuário acionando o botão de um formulário para gravar informações de cadastro em um banco de
dados ou qualquer outro dispositivo de armazenamento.
Estas ações fazem o navegador enviar as informações do link ou do formulário através do protocolo HTTP.
Estas informações podem trafegar pelo cabeçalho(head) ou pelo corpo(body) do procolo HTTP.
As seções abaixo mostram como é possível controlar a maneira como as informações são enviadas para o
servidor a partir de um formulário ou link da página Web.
Enviando informações do servidor para o cliente(Servidor Web)
O servidor Web utiliza as linguagens ASP, PHP para coletar e analisar as informações do cabeçalho e do
corpo do protocolo HTTP.
Estas linguagens também se encarregam de efetuar a resposta do processamento para o cliente.
Integração do Formulário HTML e PHP
Para controlar a maneira como as informações dos campos de um formulário serão enviadas para o
servidor, você deve utilizar o atributo METHOD da tag FORM. Para maiores informações sobre o atributo
METHOD Consulte Criando formulário em HTML da apostila Script Enviroment.
14
Ao preencher todos os campos e
clicar sobre o botão inscrever-se
os nomes dos campos do
formulários e os valores digitados
dentro dos campos serão
transmitidos pelo navegador
através do protocolo HTTP, para
o servidor Web
Quando as informações de um formulário são enviadas para processamento por um script php, os nomes e
valores dos campos do formulário ficam armazenados em variáveis de ambiente do PHP. Caso o envio seja
feito através do método POST, então as informações ficarão armazenadas na variável $HTTP_POST_VAR.
Porém se o envio for feito através do método GET então as informações ficarão armazenadas na variável
$HTTP_GET_VAR. O formulário abaixo mostra um exemplo de cadastro de pessoas.
Importante: Se a diretiva register_globals do arquivo PHP.INI estiver definida com o valor true, o nome do
campo do formulário será transformado em variável com escopo global.
Tornando a informação persistente na aplicação
Antes de tornar as informações persistentes você deve pensar em duas situações:
As informações digitadas no formulário devem ser visualizadas somente pelo usuário que preencheu o
formulário.
As informações devem estar disponíveis para todas as páginas da aplicação em que o usuário visitar,
para evitar à necessidade de autenticação do usuário no banco de dados à cada página que o mesmo
visita.
Para estes casos você pode utilizar as variáveis de sessão. O PHP possui funções que permitem a você
instanciar estas variáveis. A tabela abaixo mostra as funções utilizadas para gerenciar as variáveis de
sessão
15
Função Descrição
Session_register Registra uma variável de sessão, na sessão atual.
Session_unregister Remove uma variável de sessão da sessão atual.
Session_destroy Destroi todas as variáveis da sessão atual.
Importante: as diretivas track_vars e register_globals do arquivo PHP.INI influenciam na forma como as
variáveis são armazenadas. A tabela abaixo mostra as comparações e valores destas diretivas.
Track_vars Register_globals Descrição
True(default) False As variáveis de sessão poderão ser criadas e utilizadas somente a
partir do array $HTTP_SESSION_VARS.
False True Todas as variáveis com escopo global poderão ser registradas como
variáveis de sessão. As variáveis de sessão poderão ser utilizadas
da mesma forma que as variáveis globais
True True Neste caso as entradas para variáveis globais e sessão possuirão
os mesmos valores.
O exemplo abaixo verifica se o campo txtnome do formulário foi preenchido, caso a condição seja
verdadeira a função session_register é utilizada para registrar 3 variável sessão e, em seguida, a variável
de ambiente $HTTP_POST_VAR busca informações digitadas no campo do formulário de cadastro de
clientes através e insere estes valores dentro das variáveis de sessão a partir do array
$HTTP_SESSION_VARS.
<?PHP
if ($HTTP_POST_VAR['txtnome'] != '')
{
$nome = $HTTP_POST_VAR("txtnome");
$senha = $HTTP_POST_VAR("txtsenha");
$profissao = $HTTP_POST_VAR("selprof");
session_register("nome","senha","profissao");]
echo ‘Bem vindo ‘. $HTTP_SESSION_VARS["nome"]
echo ‘Sua senha é “ . $HTTP_SESSION_VARS["senha"]
echo Sua área de atuação é : . $HTTP_SESSION_VARS["profissao"]
}
?>
Passando informações através de variáveis dinâmicas
Além dos campos dos formulários, você pode enviar variáveis através dos links de uma página. Este tipo de
variável é conhecida como variável do tipo caracter de consulta ou QueryString. O código abaixo mostra os
16
links da página consulta_produto.php, utilizando a variável categoria. O valor desta variável pode mudar
de acordo com o link escolhido pelo usuário.
<HTML><BODY>
<A HREF=’consulta_produto.php?categoria=mm’> Moda Masculina </A>
<A HREF=’consulta_produto.php?categoria=mf’> Moda Feminina</A>
<A HREF=’consulta_produto.php?categoria=mi’> Moda Infantil </A>
</BODY></HTML>
O exemplo abaixo mostra o script da página consulta_produto.php. Este script direciona o usuário para
uma página específica de acordo com o link escolhido na página acima.
<?PHP
if ($categoria == ‘mm’)
{ header(http://localhost/moda_masculina.php);}
else if ($categoria == ‘mf’)
{ header(http://localhost/moda_feminina.php);}
else if ($categoria == ‘mi’)
{ header(http://localhost/moda_infantil.php);}
?>
Importante: Você pode utilizar mais de uma variável, utilizando o separador &. A linha abaixo mostra um
link para a página consulta_cliente.php com as variáveis cidade e estado
<A HREF=’consulta_cliente.php?cidade=curitiba&estado=pr’> Curitiba/Pr </A>
Enviando informações para o usuário
Para gerenciar o processamento e envio de informações no servidor PHP você vai utilizar os métodos do
objeto string e as funções de Controle de Saída.
Funções Descrição
echo, print Envia informações para o cliente
ob_start Ativa o buffer
ob_end_flushEnvia as informações armazenadas no cache do
servidor e finaliza o buffer
ob_end_clean Apaga o conteúdo do buffer
No código abaixo o comando ob_start() indica que a linha echo será armazenada no cache do servidor e
apresentada ao cliente(browser) após o inerpretador PHP ler da linha de comando ob_end_flush.
<?PHP
ob_start();
echo “Bom dia “ . $HTTP_SESSION_VARS[“nome”]
ob_end_flush();
ob_end_clean();
?>
17
Gerenciando um banco de dados MySql
A PHP possui um objeto para comunicação com o banco de dados sevidor MySql. A tabela abaixo
apresenta alguns métodos que permitem a comunicação com o MySql e o gerenciamento do banco de
dados e seus componentes.
Método Descrição
Mysql_connect() Abre uma conexão com o MySql
Mysql_pconnect() Abre uma conexão persistente com o MySql
Mysql_select_db() Seleciona um banco de dados do MySql
Mysql_query() Envia uma consulta SQL para o banco de dados MySql ativo
Mysql_num_rows() Número de linhas retornado pela consulta SQL
Mydql_fetch_array() Retorna um array contendo os registros extraídos do banco de dados. Os
campos do array são numerados a partir de 0.
Mysql_close() Fecha a conexão com o MySql
A próxima seção mostra como utilizar as funções da tabela acima em tarefas báscias dentro de uma
aplicação PHP.
Estabelecendo a comunicação com o banco de dados
Nesta seção você vai aprender como criar uma conexão com o Mysql utilizando as funções mostradas na
tabela acima
<?
$conexao = mysql_connect("localhost","ODBC@localhost","");
$base = mysql_select_Db("grupoabc",$conexao);
?>
Utilizando rotinas atuárias
Esta seção mostra como inserir, atualizar, excluir e consultar informações em um banco de dados MYSQL
através da função mysql_query
Gravando Informações no Banco de dados MySQL
O Exemplo abaixo mostra a gravação dos dados de um formulário de cadastro de usuários dentro da tabela
tblusuarios do banco de dados grupoabc.
<?
ob_start();
$conexao = mysql_connect("localhost","ODBC@localhost","");
$banco = mysql_select_Db("grupoabc",$conexao);
$strsql = "insert into tblusuarios (nmusuariodb,emusuariodb,cfusuariodb,rgusuariodb)";
$strsql = $strsql . "values ('$txtusuario','$txtcorreio','$txtcpf','$txtrg')";
$registro = mysql_query($strsql,$conexao);
echo "Dados Gravados com sucesso !!!";
18
ob_end_flush();
?>
Atualizando Informações no Banco de dados MySQL
<?
ob_start();
$conexao = mysql_connect("localhost","ODBC@localhost","");
$banco = mysql_select_Db("grupoabc",$conexao);
$strsql = "update tblprodutos set pvprodutodb = ";
$strsql = $strsql . "pvprodutodb + (pvcprodutodb * ($txtmargem/100))"
$strsql = $strsql . "where idfornedb = $selforn"
$registro = mysql_query($strsql,$conexao);
echo "Dados Atualizados com sucesso !!!";
ob_end_flush();
?>
Excluindo Informações no Banco de dados MySQL
<?
ob_start();
$conexao = mysql_connect("localhost","ODBC@localhost","");
$banco = mysql_select_Db("grupoabc",$conexao);
$strsql= "delete from tblprodutos where idprodutodb = $selproduto"
$registro = mysql_query($strsql,$conexao);
echo "Dados Excluídos com sucesso !!!";
ob_end_flush();
?>
Consultando Informações no Banco de dados MySQL
<?
$conexao = mysql_connect("localhost","ODBC@localhost","");
$base = mysql_select_Db("empresaxyz",$conexao);
$strsql = "select * from produto where ctprodudb = $co order by nmprodutodb asc";
$consulta = mysql_query($strsql,$conexao);
echo mysql_num_rows($consulta) . "<br>";
for($aux=0;$aux<mysql_num_rows($consulta);$aux++)
{
$campo = mysql_fetch_array($consulta);
echo $campo[0] ." ". $campo[1] . "<br>" ;
}
?>
19
Utilizando componentes COM no PHPO PHP possui um conjunto de funções utilizadas para manipular componentes COM desenvolvidos em
qualquer linguagem de programação. A tabela abaixo mostra estas funções.
Função Descrição
COM Oferece uma estrutura para integração com
componentes distribuídos e seu código em PHP
O exemplo de código abaixo mostra o componente ADO(ActiveX Data Object) instanciado através da
função COM.
<?
$conexao = new COM("ADODB.Connection");
$conexao->Open("dns_grupoabc");
$registros = $conexao->Execute("select * from tblprodutos order by nmprodutodb");
for (m==0;m<=registros-->recordcount-1;m++)
{
echo registros-->fields[m].value;
registros-->movenext;
}
?>
20
ASP
A Estrutura da Active Server Pages
ASP possui uma estrutura simples e objetiva, tornando o seu trabalho com desenvolvedor de soluções para
Web o menos complexo possível. Abaixo uma lista com os nomes dos objetos principais, as propriedades e
métodos associados a estes objetos, bem como algumas coleções de objetos.
Objeto Componentes
Application Permite ao desenvolvedor criar uma coleção de variáveis que armazenam
informações durante a execução da sua aplicação Web. Estas informações podem
ser utilizadas por todos os usuários da aplicação. As informações destas variáveis
ficam contidas na memória durante transmissões HTTP. A sintaxe para criação de
uma variável application é application(“nomedavariavel”).
Session O objeto session permite a você como desenvolvedor, armazenar informações sobre
o usuário(nome, produto escolhido etc..) Durante o período de utilização da
aplicação WEB, isto é, a navegação do usuário pelas páginas da sua Aplicação. O
Servidor cria automaticamente um objeto SESSION quando um usuário acessa uma
página da aplicação Web. O Servidor esvazia o objeto SESSION quando o tempo da
sessão Expira ou quando a sessão é abandonada
Request O objeto request armazena informações solicitadas pelo cliente e envia estas
informações para serem processadas no servidor. Estas informações serão
transmitidas ao servidor através do protocolo HTTP.
Form: representa o(s) campo(s) do(s) formulário(s) de uma aplicação Web;
Cookies: representa o(s) cookie(s) de uma aplicação Web
ServerVariables: representa as variáveis de ambiente de um servidor Web
QueryString: Armazenar conjuntos de variáveis que podem ser utilizadas para
passar valores como parametros para consultas à bases de dados, matrizes e etc...
Este objeto suporta coleções de objetos como: Form, Cookies e ServerVariables.
Response Utilizado para enviar informações do servidor para o lado cliente da conexão. O
objeto response oferece suporte somente a coleção Cookies
As propriedades do objeto response são: Buffer; ContentType; Expires;
ExpiresAbsolute; Status.
O objeto response oferece suporte aos métodos: AddHeader; AppendToLog;
BinaryWrite; Clear; End; Flush; Redirect; Write. Os exemplos de código da seção
Utilizando os objetos Request e Response mostram a utilização destes
componentes.
Server CreateObject Método Inicializa um componente activeX. Exemplo:
ADODB.Connection.
21
Objeto Componentes
Execute Método Executar um arquivo ASP. Alternativa aos arquivos include.
GetLastError Método Retorna uma descrição para o objeto AspError
Este objeto oeferece suorte a propriedade ScriptTimeout e aos métodos:
CreateObject, HTMLEncode, MapPath, URLEncode
AspError NUMBER propriedade Retorna um código de erro padrão representando o
componente que está falhando
Description Propriedade Retorna uma breve descrição sobre o erro ocorrido
ASPDescriptionPropriedade Retorna uma descrição mais detalhada do erro, se
este erro for um erro relacionado aos componentes ASP.
FILE Propriedade Indica o nome do arquivo que estava sendo processado
quando o erro ocorreu.
CATEGORY Propriedade Especifica se o erro ocorrido está relacionado ao
ASP, a uma linguagem de script ou um objeto activeX
Criando e executando um arquivo em ASP
Assim como os arquivos criados em PHP, os arquivos ASP são interpretados pelo servidor. Os comandos
em Active Server Pages podem aparecem de duas formas básicas. A tabela abaixo descreve as opções de
codificação.
<%
..Código em ASP
%>
Esta opção é mais utilizada quando você desejar
mesclar comandos em ASP e/ou VBscript com tags
HTML
<SCRIPT LANGUAGE=’vbscript’ RUNAT=’server’>
..Código em ASP
</SCRIPT>
Utilize a tag SCRIPT e o atributo RUNAT com o
valor Server para indicar que o script deverá ser
interpretado pelo servidor. Esta opção torna o
código mais organizado facilitando a depuração.
Informação persistente na aplicação
Tornar a informação persistente de forma global ou através de sessão através da ASP não é uma tarefa
difícil. Você pode utilizar o objeto Para passar a mesma informação para todos os usuários de uma
aplicação você deve utilizar o objeto application. Quandose tratar de informações específicas sobre um
usuário utilize o objeto Session.
Passando informações específicas para um usuário
O objeto session possui propriedades e métodos que ajudam você a controlar o estado de uma sessão. As
linhas de comando abaixo mostram como definir o tempo de duração da sessão, criar uma variável sessão,
finalizar uma sessão.
22
<%
session.timeout = 5
session(“nome”) = request.form(“nome”)
session(“senha”) = request.form(“senha”)
if err.number <> 0 then
session.abandon
response.write “Sessão finalizada”
end if
%>
<%=”Olá “ & session(“nome”) & “ sua senha é “ & session(“senha”)%>
Importante: Uma sessão termina automaticamente se um usuário não requisitar ou atualizar uma página
dentro da aplicação durante um período específico de tempo definido pela propriedade Timeout.
Integração do formulário HTML com ASP
O servidor web utiliza o objeto REQUEST para avaliar os pedidos feitos pelo aplicativo cliente via HTTP. No
objeto REQUEST você pode utilizar a coleção FORMS para buscar as informações enviadas a partir de um
formulário através do método POST.
Para manipular informações enviadas pelo método GET você deve utilizar a coleção QUERYSTRING do
objeto REQUEST.
Enviando informações para o usuário
Para controlar a forma como o resultado do processamento servidor serão enviados por HTTP para o
cliente(browser) você deve utilizar o objeto RESPONSE.
As linhas de comando abaixo mostram como armazenar o todo o processamento no cahce do servidor
antes de envia-lo para o cliente; Indicar se o navegador deve consultar a versão da página armazena no seu
cache ou buscar a página no servidor; Enviar os dados para o cliente e redirecionar sua aplicação para uma
página específica.
<%
response.buffer = true
response.expires = 0
response.write “Olá “ & request.form(“nome”)
if err.number <> 0 then
response.redirect “erro.htm”
end if
%>
Importante: Você pode utilizar a linha de comando response.flush para enviar a informação armazenada
no cache do servidor antes que o mesmo termine de processar todo o script da página.
23
Gerenciando um banco de dados
ASP conta com um série de componentes para manipulação de dados. estes componentes são
desenvolvidos pela própria Microsoft e por alguns fabricantes externos. Exemplo: CHILLISOFT que produz o
ChilliASP para ambientes Linux. Para maiores informações consulte http://www.chillisoft.com/
O componente mais utilizado para acesso e manipulação de dados é denominado ADO (ActiveX Data
Object) que como o próprio nome mostra, utiliza componentes ActiveX para acessar e manipular bases de
dados de diferentes fabricantes.
Utilizando ADO com Active Server Pages
Neste tópico você aprender sobre como é possível gerenciar informações de diferentes bases de dados
através da linguagem Active Server Pages e do componente ADO(ActiveX Data Object).
O ADO é composto por diversos objetos que permitem ao desenvolvedor estabelecer comunicação com
uma base de dados, além da manipulação dessa base.
A seguir os passos que você deve seguir para estabelecer uma conexão com a sua base de dados.
Para compreender com maior clareza e facilidade as explicações
Objeto Connection
Este objeto representa a conexão da aplicação Web com a base de dados. O objeto CONNECTION fornece
diversas propriedades e métodos que possibilitam abrir uma base de dados, executar uma instrução SQL
para consultar, inserir, deletar etc.. dados, fechar uma conexao com a base de dados. O objeto connection
também oferece propriedades que permitem ao desenvolvedor definir o “estado” de uma conexão. A tabela
abaixo mostra uma referência às propriedades e métodos do objeto CONNECTION
Nome Tipo Descrição
CommandTimeout Propriedade Período em segundos para execução de um comando. O valor padrão é
30 seg.
ConnectionString Propriedade Informações necessárias para comunicação com a base de dados.
CursorLocation Propriedade Define se o ponteiro de registros vai utilizar as informações do servidor
ou do cliente(cache)
Mode Propriedade Determina a permissão de abertura da fonte de dados
Close Método Fechar uma conexão aberta. Libera recursos que estavam sendo
utilizados para sustentar a conexão com o cliente
Execute Método Executar uma instrução em SQL, uma tabela ou um objeto Command do
ADO.
Open Método Estabelecer uma ligação com a fonte de dados
connection e sql para consulta a base de dados
Neste exemplo a variável CONEXAO recebe uma inicialização do objeto CONNECTION pertencente ao
componente activeX ADO, através do método CREATEOBJECT do objeto SERVER. Este procedimento faz
com que a variável CONEXAO possa utilizar as propriedades e métodos do objeto CONNECTION.
24
A variável CONEXAO utiliza a propriedade CONNECTIONSTRING para identificar informações referentes a
fonte de dados como por exemplo o driver(DRIVER) e o nome do banco de dados(DBQ).
A variável CONEXAO utiliza o método OPEN do objeto CONNECTION para fazer uma conexao com a fonte
de dados.
A variável STRSQL recebe uma linha de comando em SQL, contendo a instrução SELECT que retornará
todos(*) os registros da tabela produtos.
A variável REGISTRO armazena uma cópia de todos os registros da tabela produtos. Como? Lembre que a
variável CONEXAO representa o objeto CONNECTION e que o objeto CONNECTION possui um método
denominado EXECUTE, que está sendo utilizado para executar as instruções contidas dentro da variável
STRSQL, que consultam todos(*) os registros da tabela produtos.
Importante: um conjunto de registros coletados de uma banco de dados através do ADO é conhecido como
objeto RECORDSET. Sendo assim é possível associar a variável registros com as propriedades e métodos
do objeto RECORDSET do ADO. A linha de comando REGISTROS.MOVENEXT, por exemplo, faz o
ponteiro de registros descer uma vez na lista de valores contidos na variável REGISTRO.
<%Dim conexao, regafetadosDim sqlstr, registros, cateescoSet conexao = server.createobject("ADODB.Connection")conexao.connectionstring = "DRIVER=Driver do Microsoft Access (*.mdb);” &_ “DBQ=C:\empresaxyz\empresaxyz.mdb"conexao.opensqlstr = "SELECT * FROM produtosxyz"Set registros = conexao.execute(sqlstr,,adcmdtext)%><HTML><HEAD><TITLE>Arquivo objconn.asp</TITLE></HEAD><BODY><H1 ALIGN="center">Lista de Produtos EmpresaXyZ</H1><TABLE ALIGN="center" BORDER="1" CELLPADDING="5"><%Do While not registros.eof%><TR><TD><%response.write registros("idprodb").value%></TD><TD><%response.write registros("nmprodb").value%></TD><TD><%response.write registros("ctprodb").value%></TD><TD><%response.write registros("pvprodb").value%></TD><%registros.movenext%></TR><%Loopconexao.close%></TABLE></BODY></HTML>
O objeto recordset (registros)
De agora em diante você vai desenvolver consultas a fonte de dados através do objeto RECORDSET,
contido no componente ADO. Este objeto possui propriedades e métodos que permitem ao desenvolvedor
25
gerenciar os campos e registros de uma ou mais tabelas na fonte de dados. A tabela abaixo mostra as
propriedades e métodos mais utilizados por este objeto:
Componente Tipo Descrição
Open Método
ActiveConnection Propriedade Indica o objeto connection que será utilizado na consulta
CursorLocation Propriedade Indica se o ponteiro de registros será utilizado no lado cliente ou
servidor da conexão.
Source Propriedade Instruções em Sql para consultar, inserir, editar, apagar informações
do banco de dados relacionados a conexão
Update Método Atualizar informações no banco de dados
AddNew Método Adicionar um novo registro no banco de dados
Delete Método Deletar informações selecionadas por uma instrução SQL
MoveFirst Método Movimento o "ponteiro de registros" para o primeiro registro de uma
tabela
MoveLast Método Movimento o "ponteiro de registros" para o último registro de uma
tabela
MoveNext Método Movimento o "ponteiro de registros" para o próximo registro de uma
tabela
MovePrevious Método Movimento o "ponteiro de registros" para o registro anterior de uma
tabela
LockType Propriedade Determina o tipo de operação permita com os registros de uma base
de dados.
RecordCount Propriedade Indica a quantidade de registros indicados em um objeto recordset.
Para que você possa manipular os registros no cache cliente, atribua a
propriedade cursorlocation = 3
Ao executar uma consulta SQL à uma base de dados, o resultado será uma conjunto de registros. A este
conjunto de registros dá-se o nome RECORDSET
Consultando informações em um banco de dados
Neste exemplo a variável OBJCON recebe uma inicialização do objeto CONNECTION e, em seguida, a
variável OBJCON utiliza a propriedade CONNECTIONSTRING para definir o banco de dados que será
utilizado(aberto). Por fim a variável OBJCON utiliza o método OPEN para abrir a conexão com o banco de
dados.
A variável OBJREG recebe a inicialização do objeto RECORDSET e, em seguida, a variável OBJREG utiliza
a propriedade SOURCE para definir a instrução SQL que executará a consulta ao banco de dados.
A variável OBJREG utiliza a propriedade ACTIVECONNECTION para definir qual a conexão que será
utilizada para consultar o banco de dados e por fim a variável OBJREG utiliza o método OPEN para coletar
os dados no banco de dados.
<%dim objcondim objreg, strcon
26
set objcon = server.createobject("adodb.connection")objcon.connectionstring = "DRIVER=Driver do Microsoft Access(*.mdb);” &_ “DBQ=C:\empresaxyz\empresaxyz.mdb"objcon.openset objreg = server.createobject("adodb.recordset")objreg.source = "select * from produtosxyz"objreg.activeconnection = objconobjreg.cursorlocation = 3objreg.openresponse.write “<table align=center><tr><td>Código</td><td>Descrição</td>” &_ “<td>Preço</td></tr>”while not objreg.eof
response.write "<TR><TD>", &objreg("coprodb").value, "</TD><TD>" &_ objreg(“nmprodb”).value & “</TD><TD>” objreg(“pvprodb”).value &_ “</TD></TR>”
objreg.movenextwend%>
Inserindo Informações em um banco de dados
Neste exemplo você vai utilizar propriedades e métodos do objeto RECORDSET para inserir informações no
banco de dados através de um formulário.
A variável OBJREG, recebe a inicialização do objeto RECORDSET, através do método CREATEOBJECT
associado ao objeto SERVER. Após, a variável objreg utiliza a propriedade SOURCE para definir a
instrução SQL. Esta por sua vez, seleciona os registros da coluna nmprodb e ctprodb contidos na tabela
produtosxyz.
A variável objreg utiliza a propriedade activeconnection para buscar a conexão ativa através da variável
objcon e, em seguida, utiliza a propriedade LOCKTYPE para indicar a maneira como a tabela de tados será
manipulada. Por fim a variável OBJREG utiliza o método OPEN para executar o objeto recordset e assim
obter as informações do banco de dados.
A variável OBJREG utiliza o método ADDNEW para fazer uma abertura de registro no banco de dados.
<HTML><BODY><%dim objcondim objreg, strconset objcon = server.createobject("adodb.connection")objcon.connectionstring = "DRIVER=Driver do Microsoft Access (*.mdb);”&_ “DBQ=C:\empresaxyz\empresaxyz.mdb"objcon.open
set objreg = server.createobject("adodb.recordset")objreg.source = "select nmprodb, ctprodb, pvprodb from produtosxyz"objreg.activeconnection = objconobjreg.locktype = 3objreg.open
objreg.AddNewobjreg("nmprodb").value = request.form("txtnome")objreg("ctprodb").value = request.form("txtcategoria")objreg("pvprodb").value = request.form("txtprvenda")
objreg.update
27
objcon.close%></BODY></HTML>
Importante: O código abaixo executa a mesma tarefa do código anterior, a diferença está na utilização da instruções insert into da linguagem SQL<%dim objcondim nome, categoriadim strsql
nome = request.form("txtnome")categoria = request.form("txtende")
set objcon = server.createobject("adodb.connection")strsql = "insert into produtosxyz(nmprodb, ctprodb) values ('"&nome&"','"&categoria&"')"objcon.connectionstring = "DRIVER=Driver do Microsoft Access (*.mdb);”&_ “DBQ=C:\empresaxyz\empresaxyz.mdb"objcon.openobjcon.execute(strsql)objcon.close%>
Atualizando informações no banco de dados
Para atualizar as informações de uma banco de dados através do objeto recordset você pode utilizar o
código:
<HTML><BODY><%dim objcondim objregset objcon = server.createobject("adodb.connection")objcon.connectionstring = "DRIVER=Driver do Microsoft Access (*.mdb);”&_ “DBQ=C:\empresaxyz\empresaxyz.mdb"objcon.openset objreg = server.createobject("adodb.recordset")objreg.source = "select * from produtosxyz where ctprodb =”&_
“'"&request.form("selcategoria")&''"objreg.activeconnection = objconobjreg.locktype = 3objreg.openobjreg.movefirstwhile not objreg.EOF
objreg("ctprodb").value = request.form("selnovacategoria")objreg.updateobjreg.movenext
wendobjcon.close%></BODY></HTML>
Apagando informações no banco de dados
No exemplo abaixo o objeto recordset representado pela variável objreg seleciona o registro desejado
através de uma instrução SQL que compara o valor existente na coluna codprodb com o valor digitado no
28
campo txtende do formulário. A partir deste ponto, o método DELETE do objeto recordset é acionado a
partir da variável OBJREG. Após marcado o registro para deleção, o método UPDATE atualiza a base de
dados.
<HTML><BODY><%dim objcondim objregset objcon = server.createobject("adodb.connection")objcon.connectionstring = "DRIVER=Driver do Microsoft Access (*.mdb);”&_ “DBQ=C:\empresaxyz\empresaxyz.mdb"objcon.open
set objreg = server.createobject("adodb.recordset")objreg.source = "select coprodb from produtosxyz where coprodb =” &_ “’"&request.form("selcodigo")&"' "objreg.activeconnection = objconobjreg.locktype = 3objreg.open
if isempty(objreg) = true thenresponse.write "Não existe(m) registros para exclusão"
elseobjreg.deleteobjreg.updateresponse.write "o registro " & request.form("selcodigo") & " foi excluído com sucesso !!!"end ifobjcon.close%></BODY></HTML>
Gerenciando componentes C.O.M com ASP
Utilizando o objeto aspmail
O componente activeX ASPMAIL 4.x permite a você enviar mensagens usando o protocolo padrão
SMTP(simple mail transfer protocol).
Como a maioria dos componentes activeX, o ASPMAIL 4.x deve ser instalado no computador servidor para
que as suas bibliotecas(*.DLL). para maiores informações consulte...
O componente activeX SMTPsvg.Mailer que representa o ASPMAIL pode ser inicializado através do método
CREATEOBJECT do objeto SERVER.
O objeto SMTPsvg.Mailer possui diversas propriedades e métodos que podem ser utilizadas para definir as
partes do e-mail:
As variáveis NOME, MENS, EMAI e OPIN receberão os valores digitados pelo usuário no formulário de
correio eletrônico, através da coleção FORMS do objeto REQUEST.
A variável OBJCORREIO recebe uma inicialização do objeto SMTPsvg.Mailer(representa o controle ActiveX
ASPMAIL), através do método CREATEOBJECT do objeto SERVER. A variável OBJCORREIO poderá
29
utilizar as propriedades e métodos do componente ActiveX ASPMAIL. A tabela abaixo descreve as
propriedades e métodos associados ao objeto.
Componente Tipo DescriçãoRemoteHost Propriedade Definir o servidor SMTP(Simple Mail Transfer Protocol). O host deve ser
ajustado de acordo com o provedor de e-mail do remetente. Exemplo:Objcorreio.remotehost = "smtp.bol.com.br"
FromName Propriedade Nome do remetente. Exemplo:objcorreio.FromName = "Nome do Remetente"
FromAddress Propriedade Endereço do Remetente. Exemplo:Objcorreio.FromAddress = "[email protected]"
AddRecipient Propriedade Endereço do Destinatário. Exemplo:Objcorreio.AddRecipient "[email protected]"
Subject Propriedade Assunto do correio eletrônicoBodyText Propriedade Representa o corpo da página.SendMail Método Envia a mensagem para o destinatárioResponse Método Mostra respostas do procesamento de envio das mensagens.
<%
dim nome, mens, emai, opin
dim objcorreio
nome = request.form("txtcliente")
opin = request.form("optopina")
mens = request.form("msgnome")
emai = request.form("txtmailclie")
set objcorreio = server.createobject("SMTPsvg.Mailer")
objcorreio.RemoteHost = "smtp.bol.com.br"
objcorreio.FromName = nome
objcorreio.FromAddress = emai
objcorreio.AddRecipient "EmpresaXyz", "[email protected]"
objcorreio.Subject = "Sugestões em 2001"
objcorreio.BodyText = mens & "<BR>" & opin
If not objcorreio.SendMail then
response.write "A mensagem não foi enviada <BR>"
response.write objcorreio.response
else
response.write "Parabéns<BR>Sua mensagem foi enviada com sucesso !!!"
response.write "<A HREF="formcorreio.htm"> Clique Aqui</A> para voltar ao
formulário."
end if
%>
30
Registrando componentes ActiveX no Servidor
Para registrar um componente ActiveX você deve registrar a sua DLL utlizando o arquivo
31
XML
No modelo atual de transmissão de informação o servidor dispensa muito do seu tempo processando
informações dos pedidos feitos pelo cliente.
Cabe ao servidor por exemplo identificar o tipo de navegador que o cliente possui para então enviar o
conteúdo HTML correto para o mesmo. Do outro lado o navegador perde muito tempo aguardando esta
resposta do servidor. Para solucionar este problema imagine o servidor enviando o mesmo conteúdo web
para os clientes sem se preocupar com o tipo de navegador. O XML propõe este modelo de transmissão.
O XML(extensible markup language) é uma linguagem orientada por tags que oferece um formato para
descrever dados de forma estruturada, possibilitando obter e gerenciar conteúdo de/para diferentes
plataformas
XML Vs. HTML
XML pode ser visto como um HTML generalizado. Porém, a finalidade do XML não é substituir o HTML. O
XML e o HTML possuem diferentes finalidades e objetivos. O XML é uma linguagem que possibilita você
definir suas próprias tags para descrever de forma organizada, seqüências de dados(banco de dados) de
diferentes plataformas. O HTML possui tags específicas com o objetivo de determinar como as informações
serão mostradas no navegador. A tabela abaixo mostra exemplos em HTML e XML
HTML XML
Criando Documento XML
Antes de começar a desenvolver seu documento XML você deve entender seus componentes. A lista
abaixo mostra como trabalhar com estes componentes.
O nome das tags XML são sugestivas, isto é, definem o tipo de dados que elas armazenam.
<preco> 3500 </preco>. Estes nomes são sensíveis a maiúsculas e minúsculas.
As tags são denominadas elementos. Dentro de um documento XML os elementos são considerados
unidades de informação.
Os elementos são compostos, isto é, possuem uma tag de início e uma tag de finalização. Exemplo:
<quantidade> 900 </quantidade>
Dentro de um elemento podem existir os atributos. O exemplo abaixo mostra o atributo codigo do
elemento produto.
<produto codigo=001>
<descricao>Jaqueta de Couro</descricao>
<preco>450</preco>
</produto>
Os elementos podem estar aninhados. O exemplo abaixo mostra os elementos <descricao> e <preco>
aninhados ao elemento <produto>
<produto codigo=001>
32
<descricao>Jaqueta de Couro</descricao>
<preco>450</preco>
</produto>
Geralmente os elementos de um documento XML podem ser repetidos diversas vezes. O exemplo abaixo
mostra a relação de alguns produtos com suas descrições e preços.
<produto codigo=001>
<descricao>Jaqueta de Couro</descricao>
<preco>450</preco>
</produto>
<produto codigo=002>
<descricao> Calça Jeans</descricao>
<preco>120</preco>
</produto>
Estrutura de um documento XML
Além dos elementos, um documento XML é composto de instruções de processamento, Comentários, Os
elementos são classificados em Elemento ROOT, Elemento CHILD, Elementos Vazios. Estes elementos
serão exemplicados nos tópicos desta seção. O exemplo abaixo mostra um documento XML completo.
<?xml version=”1.0” encoding=”8859-1”>
<estoque>
<produto codigo=001>
<descricao>Jaqueta de Couro</descricao>
<preco>450</preco>
</produto>
<produto codigo=002>
<descricao> Calça Jeans</descricao>
<preco>120</preco>
</produto>
</estoque>
Prolog
O prolog possui diversos elementos que definem o início do processamento do documento XML, versão do
documento, tipo de codificação para os caracteres do document e os DTD(Document Type Definition) ou
Schemas.
Instruções de Processamento
Para iniciar o processamento de um documento XMl você deve utilizar <(sinal de menor) seguido do
símbolo ?(interrogação). O exemplo abaixo mostra a linha de início de um document XML.
<?xml version=”1.0” encoding=”8859-1”?>
A instrução Version determina a versão do código XML utilizado.
33
A instrução encoding determina o tipo de caracter que será utilizado no documento XML.
A tabela abaixo mostra os tipo de caracter mais utilizados nos documentos XML.
Código Especificação
Comnetários
Você pode inserir comentários em qualquer posição, entre os elementos de um documento XML. Os
comentários incial com <!—e terminam com -->, eles podem conter diversas linhas. O exemplo abaiixo
mostra um comentário para o elemento <quantidade>.
<quantidade> 900 </quantidade> <!—Valor do estoque mínimo -->
Elementos ROOT
Também conhecido como elemento principal. O elemento ROOT contém todos os outros elementos do
documento XML. O exemplo abaixo mostra o elemento ROOT <estoque>.
Cada documento XML pode conter apenas um documento ROOT.
<estoque>
<produto codigo=001>
<descricao>Jaqueta de Couro</descricao>
<preco>450</preco>
</produto>
<produto codigo=002>
<descricao> Calça Jeans</descricao>
<preco>120</preco>
</produto>
</estoque>
Elementos CHILD
Os dados dentro de um documento XML são hierárquicos. Um elemento pode conter outros elementos que
são denominados elementos CHILD. No exemplo abaixo:
Os elementos <descricao> e <preco> são denominados elementos CHILD;
Os elementos <dolar> e <real> são elemento CHILD do elemento <preco>
<produto>
<descricao> Calça Jeans</descricao>
<preco>
<dolar> 45 </dolar>
<real> 100 </real>
</preco>
34
</produto>
Elementos Vazios
Elementos que não necessitam de conteúdo de texto ou de outros elementos são denominados elementos
EMPTY. O exemplo abaix mostra s duas maneiras utilizadas na criação de elementos EMPTY.
<vendido></vendido> ou <vendido/>
Criando Data Island com XML e HTML
Data Island é o nome dado à união de um documento XML com um documento HTML. A partir do Internet
Explorer 5.0 você pode utilizar o comando <XML> para criar Data Island.
Um Data Island pode ser embutido dentro de um documento HTML, ou pode ser vinculado através de um
arquivo Externo. A tabela abaixo mostra os exemplos de Data Island Embutido e Data Island Vinculado. Os
dados XML são mostrados dentro de uma tabela HTML
Data Island Embutido Data Island Vinculado
Utilizando Validação com Schemas
Melhorando a aparência com XSLT
Através do XSL você pode especificar regras à serem seguidas pelos elementos de um documento XML.
Para associar um documento XML ã um arquivo XSL você deve utilizar a linha de comando abaixo.
<?xml-stylesheet type=”text/xsl” href=”formato_estoque.xsl”?>
O atributo TYPE define o tipo de documento utilizado.
O atributo HREF determina o arquivo XSL que será interpretado pelo analisador XSL
Mecanismos do XSLT
Criando Um arquivo XSLT
UTILIZANDO ACTIVE SERVER PAGES E MSXML3.0
Ao iniciar o estudo sobre a tecnologia XML(Extensible Markup Language), você deve tentar compreender a
estrutura do documento XML. O exemplo abaixo mostra um documento XML visto dentro do navegador IE5,
você vai notar que não existe muita diferença entre o código fonte e a apresentação, porém, você pode
utilizar inumeros recursos como DATAISLAND, XSLT para melhorar esta apresentação.
35
Você pode utilizar ASP para gerenciar o modelo de objeo XML proposto pela Microsoft, denominado
MSXML
O exemplo de código abaixo utiliza propriedade e métodos associados ao objeto XMLDOM. A seguir, uma
tabela descrevendo as propriedades e métodos do componente activeX Microsoft.XMLDOM.
Componente Tipo DescriçãoPreserveWhitespace Propriedade Preserva os espaços em branco dos dados
Load Método Efetua a leitura de um documento XML
documentElement Propriedade Retorna o nome do elemento ROOT
(principal)
createElement Método Cria um elemento(nó)
appendChild Método
createAttribute Método Cria um atributo para um elemento(nó)
Text Propriedade Representa a informação contida no
elemento
setAttributeNode Propriedade Ajustar o attributo para um elemento
específico
save Método Salva um documento XML
Arquivo: "aspxml.asp"
<%
dim objcon, objreg
dim objxml, existexml, objroot, objprod, objnome, objqte, objvend, attid, attco
set objcon = server.createobject("adodb.connection")
36
objcon.connectionstring = "DRIVER=Driver do Microsoft Access (*.mdb);DBQ=c:\empresaxyz\
empresaxyz.mdb"
objcon.open
set objreg = server.createobject("adodb.recordset")
objreg.source = "Select * from produtosxyz"
objreg.activeconnection = objcon
objreg.open
set objxml = server.createobject("Microsoft.XMLDOM")
objxml.PreserveWhiteSpace = true
existexml = objxml.load("c:\empresaxyz\empresaxyz.xml")
if existexml = true then
set objroot = objxml.documentElement
else
set objroot = objxml.createElement("produtos")
objxml.appendChild objroot
end if
while not objreg.eof
set objprod = objxml.createElement("produto")
set attid = objxml.createAttribute("id")
set attco = objxml.createAttribute("cod")
attid.text = objreg("idprodb").value
attco.text = objreg("coprodb").value
objprod.setAttributeNode attid
objprod.setAttributeNode attco
objroot.appendChild objprod
set objnome = objxml.createElement("nome")
set objqtde = objxml.createElement("qtde")
set objvenda = objxml.createElement("venda")
objnome.text = objreg("nmprodb").value
objqtde.text = objreg("qtprodb").value
objvenda.text = objreg("pvprodb").value
objprod.appendChild objnome
objprod.appendChild objqtde
37
objprod.appendChild objvenda
objreg.movenext
wend
objxml.save("c:\empresaxyz\empresaxyz.xml")
%>
38