Escolar Documentos
Profissional Documentos
Cultura Documentos
Agosto/2000
CAPTULO I - INTRODUO ............................. 1. 2. 3. 4. 5. 6. CLIENT-SIDE SCRIPTS ...............................1 SERVER-SIDE SCRIPTS ...............................1 O QUE PHP ......................................2 UMA BREVE HISTRIA DO PHP.......................3 ASP X PHP.......................................3 INSTALAO EM AMBIENTE WINDOWS..................4 6.1 SERVIDOR APACHE.............................4 6.2 PHP3 .......................................5 6.3 MYSQL ......................................7
CAPTULO II - MYSQL .................................. 1.O BANCO DE DADOS MYSQL ...........................8 2. CARACTERSTICAS DO MYSQL........................9 3. HABILITANDO O MYSQL PARA CONEXES...............9 4. SISTEMA DE SEGURANA DO MYSQL..................10 5. GUIA DE REFERNCIA DO MYSQL....................12 5.1 MYSQL MONITOR .............................12 5.2 COMO ESCREVER STRINGS E NMEROS ...........13 5.3 TIPOS DE COLUNAS SUPORTADOS PELO MYSQL ....14 5.4 OPERADORES ................................16 5.5 COMANDOS ..................................18 5.6 CRIANDO USURIOS NO MYSQL .................22
CAPTULO III - A LINGUAGEM HTML ...................... 1. INTRODUO.....................................26 2. CRIANDO DOCUMENTOS HTML........................26 2.1 HTML MNIMO ...............................26 2.2 MARCAES BSICAS .........................27 3. INTERLIGANDO DOCUMENTOS........................29 4. INTERLIGANDO DOCUMENTOS EM OUTRO DIRETRIO.....29 5. FORMULRIOS HTML...............................31 5.1 CODIFICAO BSICA ..........................32 5.2 ENTRADA DE TEXTO COMUM -TEXT ................33 5.3 ENTRADA DE TEXTO PROTEGIDO - PASSWORD .......34 5.4 ENTRADA DE VRIAS LINHAS DE TEXTO - TEXTAREA 35 5.5 LISTBOX E COMBO BOX .........................36 5.6 CHECKBOX ....................................37 5.7 RADIO BUTTON ................................39 5.8 SUBMIT BUTTON E RESET BUTTONX ...............40 5.9 CONCLUSO ...................................41
NOTAS DO AUTOR
Na maior parte do tempo, escrever um livro desafiante, frustrante, tedioso, excitante e muito trabalhoso, tudo simultaneamente. Mas a criao de Programando para Web com PHP/MySQL teve um componente quase que
intangvel. Eu assumi a responsabilidade de criar uma fonte de referncia para o programador que deseja migrar para tecnologias Intranet.
Este livro foi escrito para um pblico principiante, com o mnimo de conhecimento necessrio para programar em PHP. Saber como funciona a
linguagem html e possuir noes de lgica de programao de fundamental importncia para a compreenso dos captulos.
Procurei resumir o contedo, da melhor forma possvel, descartando tudo que for desnecessrio, tornando assim, uma leitura assimilao e entendimento. acessvel e de rpida
O autor
fredcox@ig.com.br http://membros.option-line.com/fredcox
AGRADECIMENTOS
Inicialmente gostaria de agradecer a Maria Jos, minha me, pelo incentivo publicao dessa obra. Sinceros agradecimentos a todos da lista de discusso php-pt (http://br.egroups.com/group/php-pt).
No se mede o valor de um homem Pelas suas roupas Ou pelos bens que possui. O verdadeiro valor de um homem o seu carter, Suas idias E a nobreza do seus ideais. Charles Chaplin
I N T R O D U O
1. Client-Side Scripts
So responsveis pelas aes executadas no browser, sem contato com o servidor. Os exemplos mais comuns de aplicaes client-side so imagens e textos que mudam com o passar do mouse e os java scripts. Os scripts client-side sem utilizar so muito teis do para fazer validaes com isso de no
formulrios
processamento
servidor,
2. Server-Side Scripts
So responsveis pelas aes executadas no servidor. Os exemplos mais comuns de aplicaes server-side so os scripts cgis e php. No momento em que o usurio solicita uma URL, o servidor apresentar no browser um cdigo html dinmico, isto muito til para construes de aplicaes baseadas em informaes on-line.
Servidor (www)
Cliente
(Figura 1)
server-
side scripts para criar sites dinmicos. Sites dinmicos so aqueles que retornam para o cliente uma pgina criada em tempo real. Um exemplo de server-side scripts so os sistemas de busca (www.yahoo.com,
www.cade.com.br, etc...); nele, quando voc digita a palavra chave da busca e clica no boto pesquisar o resultado da busca processado online; outro exemplo so as salas de chat; nelas, quando voc digita e clica no boto enviar, a dos as informaes so processadas resultando em tempo cdigo real HTML
conjuntamente
com
outros
usurios,
num
(Figura 2)
Utilizando a linguagem PHP voc permite a interao direta do usurio com o site, atravs de formulrios, contadores de acesso, estatsticas do site, ou criar aplicaes para uma rede local baseadas numa Intranet.
Aplicaes em PHP so geradas com excelente performace e automaticamente pelo servidor. O usurio no v o cdigo PHP, somente o HTML; isto muito importante quando se est lidando com senhas.
Cliente Requisio (formulrio HTML) Servidor Processamento do Script (pgina de resuldado HTML )
(Figura 3)
O PHP foi concebido no outono (l nos EUA, aqui no Brasil seria primavera) de 1994 por Rasmus Lerdorf. As primeiras verses foram usadas na sua homepage para saber quem estava consultando o currculo online. A primeira verso, utilizada por outras pessoas, foi disponibilizada em meados de 1995, e era conhecida como Personal Home Page Tools (Ferramentas para Homepages Pessoais). Ela consistia num motor de interpretao bem simples, que entendia algumas macros especiais e alguns utilitrios de uso comum nas homepages de ento. Um livro de visitas, um contador e outras coisas. Em meados de 1995, o interpretador foi reescrito e batizado de PHP/FI Version 2. O sufixo FI veio de um outro pacote escrito por Ramus, que interpretava dados de formulrio html. Ele combinou os scripts das Ferramentas para Homepages Pessoais com o Interpretador de Formulrio e adicionou o suporte ao mSQL; o PHP/FI estava criado. O PHP/FI cresceu num ritmo incrvel e as pessoas comearam a adicionar-lhe cdigo. muito difcil estimar corretamente, mas, em fins de 1996, o PHP/FI estava sendo usado em pelo menos 15,000 web sites pelo mundo afora. Na metade de 1997, este nmero havia aumentado para mais de 50,000. Nesta poca, o desenvolvimento do PHP tambm sofreu mudanas. De um projeto de estimao de Rasmus, com contribuies de um pequeno grupo de pessoas, se tornou um esforo de uma equipe mais organizada. O interpretador foi reescrito do zero foi a por base Zeev para Suraski o PHP e Andi Gutmans, 3. Muito e do este cdigo novo dos
interpretador
Verso
5. ASP x PHP
Enquanto o ASP, s executado em plataformas micro$oft, o PHP suporta a maioria das plataformas que provem acesso e servios da internet,
distribudo sobre GPL (Licena Pblica Geral), ou seja, no se precisa pagar para usar o PHP.
servidor http, a ser utilizado neste curso, o Apache, que est para download em http://www.apache.org. Para instalar o
disponvel
Execute o utilitrio de instalao (apache1.3.1.exe) e siga os passos de instalao normalmente. Quando o programa de instalao solicitar o diretrio de destino, clique o boto browse e digite C:\Apache na janela PATH. Isto garantir uma performance considervel no acesso ao diretrio htdocs (onde ficaro
armazenadas as pginas html e php reconhecidas pelo apache), visto que, por default, o Apache ser instalado em: C:\Arquivos de Programas\Apache Group\Apache\.
pelo arquivo httpd.conf que fica localizado em C:\Apache\conf, edite este arquivo com qualquer editor de textos de escrita rpida (Edit do DOS ou Bloco de Notas). Adicione as seguintes linhas no final do arquivo httpd.conf.
ServerName localhost ScriptAlias /php3/ "c:/php3/" AddType application/x-httpd-php3 .php3 .php Action application/x-httpd-php3 "/php3/php.exe"
A primeira linha informa ao apache o nome do servidor. No caso localhost porque cada estao no decorrer do curso estar funcionando como um
execute scripts php. A terceira informa as extenses dos scripts php que sero executados pelo servidor de web, ou seja, qualquer arquivo com extenso .php3 ou php ativar o client side script. A quarta linha informa o caminho path do PHP.
C:\php3
3.2 - Descompacte o arquivo php-3.0.16-win32.zip neste diretrio. 3.3 Copie o arquivo php3.ini.dist.txt para o diretrio C:\Windows , renomeando-o para php3.ini. 3.4 Procure pela linha extension_dir no arquivo php3.ini e inclua o seguinte parmetro: c:\php3
;;;;;;;;;;;;;;;;;;;;;;;;; ; Paths and Directories ; ;;;;;;;;;;;;;;;;;;;;;;;;; include_path=; UNIX: "/path1:/path2" Windows: "\path1;\path2"
/~username, used only if nonempty ;upload_tmp_dir=; temporary directory for HTTP uploaded files (will use system default if not specified) upload_max_filesize=2097152 extension_dir=C:\PHP3 ./
Este o parmetro que deve ser adicionado!!!
3.5 Procure pelo trecho Dynamic Extensions do PHP3 e descomente as linhas. Obs: vrgula que antece cada
no arquivo de configurao
;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; ; if you wish to have an extension loaded automaticly, use the ; following syntax: extension=modulename.extension
; for example, on windows, ; extension=msql.dll ; or under UNIX, ; extension=msql.so ; Note that it should be the name of the module only, no directory information ; needs to go here. Specify the location of the extension with the
Apache Server no menu iniciar, carregue o browser e digite o endereo: http://localhost. Se o endereo carregar porque o seu servidor de web est instalado corretamente; caso contrrio, repita os passos acima.
6.3 MySQL
A verso do MySQL, que ser utilizada neste curso, a 3.23.11-alpha. O MySQL um robusto Servidor Banco de Dados, multiusurio, multitarefa que Query Language), linguagem de
ser discutido posteriormente. Este servidor de banco de dados pode ser facilmente conseguido pelo
endereo http://www.tcx.se .
3.1 Crie uma pasta temporria; por exemplo : c:\tempo 3.2 Descompacte o MySQL para win32 neste diretrio e execute o
M y S Q L
MySQL
servidor
de
banco
de
dados
multiusurio,
multitarefa
que
trabalha com uma das linguagens de manipulao de dados mais popularizadas do mundo. SQL uma linguagem simples, em que voc facilmente pode gravar, alterar e recuperar informaes num web site com segurana e rapidez. Ela foi
desenvolvida pelo Departamento de Pesquisas da IBM como forma de interface para o Sistema de Banco de Dados Relacionais SYSTEM R, no incio dos anos 70; em 1996, a American National Institute (ANSI) publicou um padro SQL. A SQL estabeleceu-se como linguagem padro de Banco de Dados Relacional. A linguagem SQL tem como grande virtude sua capacidade de gerenciar
ndices sem a necessidade de controle individualizado de ndice corrente, algo muito comum nos Sistemas Gerenciadores de Arquivos, o Dbase por exemplo. Nunca trabalhe com arquivos do Dbase (*.DBF)! Esses falsos bancos de dados no oferecem integridade alguma para os dados; uma simples
recuperao de dados resulta num cdigo complicado e extenso, visto que consiste numa busca de registro a registro, alm de no passar de uma simples e frgil gravao sequencial de strings. Voc foi avisado!
MySQL
foi
originalmente
desenvolvido
pela
empresa
sueca
TCX
que
necessitava de um servidor de banco de dados que operasse com grandes escalas de dados rapidamente sem exigir carssimas plataformas de
hardware. A TCX opera desde 1996 com 40 bancos de dados, contendo 10.000 tabelas, sendo 500 delas com mais de 10 milhes de linhas.
2. Caractersticas do MySQL
suporta
diferentes
plataformas:
Win32,
Linux,
FreeBSD,
Unix,
C,C++,Java, Pynthon, etc... Suporte a mltiplos processadores Um sofisticado sistema de senhas criptografadas flexvel e
Seguro. Suporte ODBC, voc pode facilmente conectar o Access a um banco de dados do MySQL Suporta at 16 indices por tabela Cdigo fonte escrito em C e C++ e testado com uma variedade de diferentes compiladores O Cliente conecta no MySQL atravs de conexes TCP/IP. Nenhum problema com o Y2K, visto que o MySQL Unix que no apresentar problemas at 2069 usa o relgio do
Para efetuar qualquer conexo com o MySQL necessrio que o daemon (demnio), programa que roda em standallone, esteja carregado na memria; para isso, execute o binrio mysqld-shareware.exe pelo prompt do ms-dos. Veja figura abaixo e siga o esquema:
O MySQL possui um avanado sistema de segurana, a ser tratado neste captulo. Quando voc se conecta a um MySQL Server, normalmente solicitada uma senha de usurio. Esta informao poder ser lida no momento em que ela passar do cliente para o servidor. O ideal instalar o servidor de web com um protocolo de compresso e criptografia, o Apache web server para o Red Hat 6.1 j vem com mod_ssh e mod_ssl; com isto, a conexo TCP/IP entre o cliente e o servidor estar sendo uma transao criptografada. O MySQL criptografa as senhas dos usurios atravs de um algoritmo
semelhante ao processo de autenticao de login do Unix Quando se instala o MySQL para win32 pela primeira vez, ele por padro, vem com dois usurios: um superusurio (root) e outro usurio padro. Para trocar a senha do root (superusurio) e apagar o usurio padro, siga os passos a seguir, supondo que o daemon (mysqld-shareware.exe) j est ativado na memria: No prompt do MS-DOS digite os comandos abaixo:
Voc apagou o usurio padro e definiu a senha do root ('sua_senha'). No se preocupe quanto sintaxe SQL; isto ser amplamente discutido no
captulo seguinte.
O MySQL monitor o cliente que vem no pacote do MySQL para win32. Atravs dele podemos criar tabelas, bancos de dados, usurios e estabelecer
c:\mysql\bin>mysql -u usuario -p banco_de_dados ou c:\mysql>bin>mysql -u usuario -psenha banco_de_dados Veja figura abaixo:
O primeiro processo mais seguro, visto que o MySQL Server solicitar a digitao da senha (ver figura). extremamente necessrio acessar o MySQL monitor para efetuar as consultas da linguagem SQL.
Strings Qualquer sequncia de caracteres delimitados por ' ' ou " ". Exemplo: 'um string' "outro string"
Nmeros Inteiros so representados por uma sequncia de dgitos e ponto flutuante utiliza-se ' . ' como separador decimal.
O MySQL suporta uma ampla variedade de colunas. Esta seo descreve os tipos disponveis.
Os tipos de dados suportados pelo MySQL esto listados abaixo. O cdigo das letras usado nas descries o seguinte: * M - indica o tamanho mximo. O mximo valor que M pode assumir 255 D utilizado para ponto flutuante, indicando o nmero de casas
Note
que
se
for
especificado
um
parmetro
[ZEROFILL],
MySQL
TINYINT[(M)] [UNSIGNED] [ZEROFILL] Nmeros inteiros muito pequenos. Pode assumir intervalo de valores entre 128 to 127. O intervalo de valores para unsigned de 0 a 255.
SMALLINT[(M)] [UNSIGNED] [ZEROFILL] Nmeros inteiros pequenos. Intervalos de valores entre -32768 to 32767. O intervalo de valores para unsigned de 0 a 65535.
de 0 a
INT[(M)] [UNSIGNED] [ZEROFILL] Inteiros de tamanho normal. O intervalo de valores est entre -
unsigned
de 0 a 4294967295
BIGINT[(M)] [UNSIGNED] [ZEROFILL] Inteiros de tamanho grande. Assume intervalo de valores entre -
FLOAT[(M,D)] [ZEROFILL] Nmeros ponto flutuante pequenos (simples-preciso) . Assume valores entre -----3.402823466E+38 a -1.175494351E-38 . O valor de M
corresponde ao tamanho e D
'DOUBLE[(M,D)] [ZEROFILL]'
Nmeros
ponto
1.7976931348623157E+308'
`DATE' Para armazenar valores de data. `'9999-12-31''. Os *MySQL* so gravados no formato `'YYYY-MM-DD', porm h funes gravar e recuperar dados de data e hora que sero discutidas posteriormente. Assume valores entre`'1000-01-01'' a
Uma combinao de data e hora. Suporta valores entre`'1000-01-01 00:00:00'' a `'9999-12-31 23:59:59''.
`TIME'
Para
armazenar
valores
hora.
Assume
intervalo
de
valores
entre
`'-
838:59:59'' a `'838:59:59''.
`CHAR(M) [BINARY]'
5.4 - OPERADORES
ARITMTRICOS
`*' Multiplicao mysql> select 3*5; -> 15 mysql> select 18014398509481984*18014398509481984.0; -> 324518553658426726783156020576256.0
LGICOS
`NOT' `!' Operador lgico de negao NOT. Retorna `1' se o argumento falso, caso verdadeiro retorna `0'. The last example returns `1' because the expression evaluates the same way as `(!1)+1'.
COMPARAO
`=' Igualdade
5.5 - COMANDOS
CREATE DATABASE
Cria um banco de dados. Este comando cria uma rea lgica, diretrio, onde estaro armazenadas todas as tabelas do banco de dados.
Obs: Muito cuidado com este comando. O usurio com garantia DROP pode apagar todos os dados do seu banco. Voc foi avisado!
CREATE TABLE
Exemplo TABLE mysql>CREATE TABLE tipo alunos(matricula UNSIGNED tipo INT(10) NOT NULL,nome CHAR(40)
[NOT NULL], ... ,nome_atributoN NOT NULL,turma CHAR(20) NOT tipo [NOT NULL]); NULL, PRIMARY KEY (matricula));
No exemplo acima foi definida uma chave primria para a coluna matricula. Isto impede que hajam repeties no nmero de matrcula do aluno na tabela. Uma chave primria indica que o valor armazenado no registro nico.
ALTER TABLE
Sintax: ALTER TABLE nome_tabela ADD/DROP Especificao Nome_atributo1 tipo [NOT NULL], Nome_atributo2 tipo [NOT NULL], ...
(coluna_indice,...) ADD PRIMARY KEY (coluna,...) ALTER [COLUMN] CHANGE [COLUMN] antiga_coluna
O exemplo acima adicionou na tabela alunos uma coluna para cadastrar o turno, que primordial na tabela, mas que foi esquecida com o intuito de utilizar este comando.
DROP TABLE
INSERT
SELECT
Comando usado para recuperar valores de uma tabela. Este poderoso comando, em conjunto com funces, possibilita a recuperao de qualquer valor de uma tabela.
Sintax: SELECT coluna1, Coluna2,..., ColunaN FROM tabela WHERE condio ORDER BY coluna [ASC | DESC]
que
possuem nome igual a 'Fred Cox Junior' (O asterisco * indica que devem ser mostradas todas as colunas). O segundo exemplo matricula e turno, em ordem crescente numrica. mostra somente as colunas
DELETE
Apaga registros em uma tabela. Se no for especificada a condio where, todos os dados sero apagados.
UPDATE
trabalhosa. Para criar e dar garantias a um usurio no MySQL voc ter de especificar os privilgios e tabelas que este usurio pode acessar. Nunca garanta privilgios para um usurio no banco de dados mysql, pois somente o root (superusurio) deve possuir garantias para tal. O superusurio pode especificar quais os privilgios que o usurio comum possui no banco ou tabela do banco de dados. Veja a lista de privilgios abaixo:
Tipo
Descrio
Acesse o MySQL monitor como root Crie um banco de dados com o nome controle. Utilize o comando CREATE DATABASE.
'joao'
e senha
'joao', que possui todos os privilgios no banco de dados controle em qualquer tabela (controle.*). O Comando USE possibilita configurar o
banco de dados controle como o corrente. O FLUSH PRIVILEGES atualiza a tabela de privilgios do banco de dados MySQL, efetuando as mudanas e adicionando o usurio. Para fazer o teste, cadastrado, digite no prompt do ms-dos: se o usurio foi corretamente
C:\mysql\bin>mysql -u joao -p
tabela
Depois que o aluno aprender a linguagem de Script PHP, no decorrer do curso, o ideal construir uma aplicao para gerenciar o proceso de criao e manipulao de usurios, se for um caso de uma Intranet e o volume de usurios for extenso. A digitao da senha do usurio pelo administrador da rede no lhe agrada muito. Palavra de quem trabalha com isto. !
L I N G U A G E M
H T M L
1. INTRODUO
O propsito do curso resume-se a programao para web com linguagem de Script PHP e acesso a banco de dados MySQL. Pressupe-se que o aluno esteja familiarizado com as tags html, visto que requisito necessrio para fazer o curso, e alm do mais, estenderia o curso. Por isso, a abordagem desta linguagem ser apenas no intuito de entender o conceito de pginas web dinmicas, com comentrios voltados a esclarecer a passagem de parmetros de formulrios html para os scripts em PHP.
A aparente sofisticao das pginas html, no passam de documentos de texto simples. Podem ser produzidos com qualquer editor de texto, como o Notepad, Emacs, vi, joe, etc... A diferena que algumas pginas da web possuem caractersticas especiais de formatao de documento. H programas especializados em fazer pginas html, tais como Dreamweaver 3.0, Hot Dog, Homesite, etc... H uma ampla variedade de documentos, tutoriais e
templates na Internet. Um bom endereo para comear a pesquisar sobre webdesign : http://www.tol.pro.br
Todo documento deve ser identificado como HTML (<html> </html>), ter uma rea de cabealho (<head></head>) com o nome para o documento (<title> </title>), um ttulo principal e uma rea definida como
Ttulos
Todo documento em HTML deve possuir um ttulo. De um modo geral o ttulo aparece em lugar separado da pgina (por exemplo, alto da tela no
(por exemplo, buscas Wais). interessante que o ttulo possa sugerir claramente o contedo do documento.
Ateno porque o conceito de ttulo diferente de cabealho. O ttulo est mais para o nome do arquivo. No um elemento relevante na
Cabealhos
HTML possui seis nveis de cabealhos, numerados de 1 a 6, sendo o nmero 1 o de maior destaque. Cabealhos so exibidos em letras maiores e em negrito. O primeiro cabealho em cada documento deve estar marcado como <H1>.
ATENO: ao definir o tamanho de um cabealho, voc no est definindo o tamanho da letra (fonte 10, fonte 14). Voc apenas define que ele
aparecer com maior tamanho e destaque que o resto do texto. O tamanho exato com que ele ser visualizado definido pelo programa visualizador de html (browser) de cada pessoa que acessar a informao.
Pargrafos
A marcao <p> utilizada para definir o incio de um novo pargrafo, deixando uma linha em branco entre cada pargrafo.HTML no reconhece o caracter de quebra de linha dos editores de texto. Mesmo que exista uma linha em branco, os clientes Web s reconhecem o incio de um novo
Quebras de linha
A marcao <br> faz uma quebra de linha sem acrescentar espao extra entre as linhas. Veja a diferena do uso de <p> e <br> ,nos exemplos a seguir:
O principal poder do HTML vem da sua capacidade de interligar partes de um texto (e tambm imagens) a outros documentos. Os clientes exibem em
destaque estas reas ou pontos chaves (normalmente com cores diferentes ou sublinhado) para indicar que se trata de um link, ou interligao, no hipertexto.
A marcao <A>, que define o ponto de partida para os links, denominada de ncora. Para incluir uma ncora em seu documento:
1. Inicie a ncora com <A . ( H um espao depois de A.) 2. Especifique o documento a ser interligado, inserindo parmetro HREF="arquivo" seguido do sinal: > 3. Insira o texto que vai funcionar como link no documento corrente 4. Anote a marcao de final da ncora: </A>.
A palavra Praias'' definida como o marcador do link para se chegar ao documento ListaPraias.html, que est no mesmo diretrio do documento
corrente. Ou seja, "Praias" aparece em negrito e se eu clicar nessa palavra ser exibido o documento apontado - ListaPraias.html
possvel interligar documentos em outro diretrio especificando-se o caminho relativo a partir do documento corrente, em relao ao que est sendo interligado.
Por
exemplo,
um
link
para
arquivo
Sergipe.html
localizado
no
Estes so os denominados links relativos. tambm possvel usar o caminho completo (pathname absoluta) do arquivo desejado. Para isso, utiliza-se a sintaxe padro do sistema UNIX. Importante: se voc quiser referenciar um diretrio a partir da raiz do seu servidor www, inicie a notao com /. Isto , se voc tiver uma notao desta forma. <A HREF=/imagens/incon1.gif>, significa que o arquivo incon1.gif dever ser buscado no diretrio imagens que est imediatamente acima do diretrio raiz do seu servidor WWW.
5. FORMULRIOS HTML
Esta constitui a seo mais importante deste captulo, visto que, a partir de um formulrio html que o usurio interage, com o servidor enviando e recebendo informaes. Cada comando ser comentado, a fim de que o aluno se familiarize o mais rpido possvel com o conceito de passagem de parmetros de formulrios html para scripts php, visto que esta uma das maiores dvidas.
Existem vrios tipos de campos de entrada de um formulrio, como: campos de entrada de texto menus de mltipla escolha ou escolha nica botes sim-ou-no botes para submisso ou limpeza de formulrio Cada um destes campos tem funcionalidade prpria e voc vai aprender em que situao utiliz-los em seus formulrios.
Se voc j conhece HTML, as marcaes utilizadas em formulrios seguem a mesma conveno, e portanto, ser fcil aprender.
Um formulrio comea com a marcao <FORM> e termina com </FORM>. Outros itens devem ser especificados: Primeiro, o formulrio precisa saber como enviar a informao para o servidor. Existem dois mtodos: GET e POST.
METHOD="GET" A maioria dos documentos HTML so recuperados a partir da requisio de uma nica URL ao servidor. Assim, um formulrio que utilize este mtodo, envia toda sua informao ao final da URL ativada.
imediatamente aps a URL ativada. Ou seja, quando o servidor recebe uma ativao de um formulrio, utilizando POST, ele sabe que precisa
continuar "ouvindo" para obter a informao. Este o mtodo que iremos utilizar para direcionar um script. Segundo: o formulrio precisa saber para onde enviar a informao. Esta a URL sendo ativada a partir do formulrio, e ela referenciada atravs da marcao ACTION. Esta URL apontar para um script PHP que ir receber e decodificar os resultados.
ACTION="teste.php3"
Aps voc construir estas marcaes, seu formulrio geralmente ter a seguinte estrutura:
</FORM>
Observe que este formulrio utiliza o mtodo POST e envia as informaes digitadas para um script PHP chamado teste.php3 no diretrio padro do servidor.
Outra informao importante: cada marcao de entrada em um formulrio tem uma opo NAME associada, de tal forma que o script que apontado pelo parmetro ACTION receba uma varivel com o valor digitado pelo usurio. Certamente voc pode definir mais de um campo de entrada textual ou menu dentro de um formulrio, mas certifique-se de que cada um possui um nome diferente; assim sendo, o script receber campos digitados com variveis diferentes.
A forma mais simples de campo de entrada a marcao text. Este campo permite a digitao de uma nica palavra ou linha de texto, e possui uma largura default de 20 caracteres.
Opes:
VALUE="" OPCIONAL Utilizando a marcao VALUE voc especifica que texto aparecer no campo quando o formulrio for exibido.
SIZE="" OPCIONAL Esta marcao altera o tamanho deste campo exibido na tela. Obs.: o usurio sempre poder digitar mais caracteres do que o tamanho do campo na tela, pois o texto ir se deslocar esquerda dentro do campo.
MAXLENGTH="" OPCIONAL Se voc deseja limitar o nmero de caracteres que o usurio pode digitar, basta usar esta marcao. O formulrio ir emitir um bip de erro se o usurio tentar digitar alm do permitido em MAXLENGTH.
Observe
exemplo
abaixo.
Note
que
parmetro
NAME="primeiro_nome",
indica que ao submeter este formulrio, o script apontado pelo parmetro ACTION="teste.php3" receber uma varivel chamada $primeiro_nome
(variveis no PHP comeam com '$' ), contendo o primeiro nome digitado pelo usurio ou o valor padro especificado no parmetro VALUE="Fred".
Marcaes de entrada do tipo password so idnticas aos campos do tipo text, exceto pelo fato de todos os caracteres serem exibidos como
asteriscos ( *).
Opes: VALUE="" OPCIONAL A marcao VALUE especifica um valor default para este campo. Obs: Esta opo no deve ser usada, lgico!
MAXLENGTH="" OPCIONAL Limita o nmero de caracteres que o usurio pode informar como password.
A marcao TEXTAREA no utiliza o formato convencional INPUT TYPE="text" dos exemplos anteriores. Ao contrrio, uma marcao <TEXTAREA> delimita o seu incio e a marcao </TEXTAREA> o seu fim.
Texto default OPCIONAL Se voc deseja que um texto seja exibido no campo textual ao abrir o formulrio, simplesmente coloque este texto entre as marcaes de incio e fim da TEXTAREA.
COMBO BOX
Select
Esta entrada de formulrio muito importante, visto que a partir dela que poderemos carregar base de dados inteiras atravs de comandos de recuperao SQL (SELECT) com suas respectivas clusulas e sintaxe
Se voc deixar de especificar o parmetros BOX na tela; caso contrrio, uma LISTBOX.
Parmetros: Size nmero de linhas exibidas. Default: 1; Multiple parmetro que, se presente, permite que sejam selecionadas duas ou mais linhas, atravs das teclas Control ou Shift; option Cada item do tipo option acrescenta uma linha ao select;
selecionado. Default: o texto do item; text valor a ser exibido para aquele item. No definido por um parmetro, mas pelo texto que fica entre as tags <option> e </option> Observe os exemplos abaixo:
5.6 - CHECKBOX
Esta tag de formulrio html muito utilizada na internet. Voc, com certeza, j deve ter aberto para um amigo uma conta de e-mail ou pedido um desses servio grtis, onde so solicitadas pesquisas, tais como;
Retornando ao formato de INPUT TYPE="", a marcao CHECKBOXES perfeita para escolher entre vrias opes.
Opes:
VALUE=""
OBRIGATRIO
Especifica o valor da opo enviado ao script PHP. Esta opo deve conter o mesmo valor
Note que ao submeter o formulrio acima, ser enviado ao script PHP um array chamado $pesquisa numerado de 0 a 3, contendo os valores
selecionados pelo usurio. Por exemplo: Vamos supor que o usurio marcou as opes Cinema e Cincia e Tecnologia. O script receber os seguintes valores:
Utilizado para campos de mltipla escolha, onde o usurio pode marcar apenas uma opo. Para agrupar vrios elementos deste tipo, fazendo com que eles sejam exclusivos, basta atribuir o mesmo nome a todos do grupo. Parmetros: Value o valor que ser enviado ao servidor quando o formulrio for submetido, no caso do campo estar marcado Checked O estado inicial do elemento. Quando presente, aparece marcado; o elemento j
Note que, ao submeter o formulrio, a varivel $opcao conter a escolha do usurio. Por exemplo: vamos supor que o usurio clicou na opo Recife; o formulrio enviar ao script PHP uma varivel chamada $opcao contendo o valor 'Recife'.
Em
vez
de
usurio
corrigir
cada
INPUT,
um
boto
RESET
pode
ser
utilizado para restaurar todos os campos a seus valores default, como se nenhuma informao houvesse sido digitada.
E finalmente, o FORM precisa de uma opo para enviar toda a informao digitada para o servidor, uma vez que o usurio terminou de preencher todos os campos de entrada. O boto SUBMIT transfere toda a informao para a URL especificada no elemento ACTION.
VALUE="Enviar">
Opes: VALUE="" OPCIONAL Especifica o texto a ser exibido no boto. Se no for especificado, os textos default "Reset" e "Submit Query" sero colocados nos botes RESET e SUBMIT, respectivamente.
NAME="" OPCIONAL Se NAME for definido em um boto SUBMIT, o formulrio ir transmitir o valor do contedo do elemento VALUE, permitindo que voc tenha mltiplos botes SUBMIT numa espcie de verso simplificada de um RADIOBUTTONS.
O conhecimento da linguagem de marcao html de extrema importncia, bem como a forma que os formulrios e as pginas da web interagem com o servidor, permitindo assim gerar pginas com cdigo dinmico.
O Captulo II abrangeu um html simples, ou seja, o curso fornece o mnimo e necessrio para o aluno comunicar-se com o servidor, gerando cdigos html dinmicos. Cabe ao aluno, caso no tenha conhecimento, se aprofundar na linguagem html. Na internet h um grande acervo de tutoriais, manuais e at mesmo livros, ensinando como elaborar pginas das mais simples s mais complexas. Voc pode comear coletando manuais no endereo:
No prximo captulo, estudaremos a linguagem de script PHP e ao final deste, o aluno estar preparado para escrever qualquer aplicao com
tecnologia Intranet.
L I N G U A G E M
P H P
1. Sintaxe Bsica
interpretador
reconhece
automaticamente
scripts
php
delimitados
da
seguinte maneira:
Veja o exemplo da pgina "curso.php3", no momento em que o apache web server verificar a incidncia de "<? ?>", ele automaticamente iniciar o interpretador php, que construir a pgina baseado no cdigo php existente entre as devidas delimitaes.
Observe que a marcao html utilizada a mesma do captulo anterior; o que muda o trecho compreendido entre "<?" e "?>" no caso.
2. Variveis
As variveis do PHP sempre comeam com $ e so declaradas quanto o tipo (inteiro,string,array, etc...) no momento em que atribudo o seu valor, no sendo necessrio indicar o nome e tipo da varivel como na linguagem C. O php case sensitive, portanto a varivel $fredcox diferente da varivel $Fredcox.
3. Comentrios
$a=1237; #isto um nmero inteiro $b='Fabiana Ferraz'; //isto um string /* Isto um comentrio de vrias linhas */
4. Tipos de Dados
4.1 - Integer Variveis inteiras so declaradas no PHP no momento da atribuio. Exemplo: $numero1=-12; #nmero inteiro negativo $numero2=64; #nmero inteiro positivo
4.2 - floating-point Nmeros com notao cientfica e decimais podem ser escritos da seguinte forma: $a=1.12; #nmero decimal positivo
4.3 - Array
Voc pode criar arrays usando as funes list() e array(), ou atribuindo valores aos seus respectivos elementos. Exemplo: $a[0]="Azul"; $a[1]="Amarelo"; $a[2]="Vermelho";
Veja a notao da funo array: $a = array( "cor" => "Vermelho", "gosto" => "Doce", "formato" => "Redondo", "nome" => "Ma"); Arrays sero amplamente utilizados com a clusula SELECT do MySQL...
4.4 - String
Strings podem ser declarados delimitados por " " (aspas). Exemplo: $nome="Fred cox Junior";
4.5 - CONSTANTES O php possui vrias constantes pr-definidas, alm de prover funes para cri-las em tempo de execuo define(). Algumas das constantes pr-definidas do php: CONSTANTE __FILE__ __LINE__ PHP_VERSION RETORNO Nome do arquivo de script. Nmero de linhas do script corrente. Verso do PHP que est sendo utilizada pelo servidor.
4.6.1 - Aritmtricos
Resultado Soma de $a mais $b. Diferena entre $a e $b Produto entre $a e $b Divide $a por $b
4.6.2 - Strings
4.6.3 - Lgicos
Nome Igual No Igual Menor que Maior que Maior ou igual Menor ou igual
Retorno Verdadeiro se $a for igual a $b Verdadeiro se $a for diferente de $b Verdadeiro se $a for menor que $b Verdadeiro se $a for maior que $b Verdadeiro se $a for maior ou igual a $b Verdadeiro se $a for menor ou igual a $b
5. Estruturas de Controle
5.1 - If and Else Frequentemente, o programador necessitar testar o valor de uma varivel para decidir ou no pela execuo de uma tarefa. O comando utilizado para tal o if. O "If" uma das mais importantes estruturas de controle de muitas
if (expresso) { //Cdigo se a expresso for verdadeira } else { //Cdigo se for falsa a expresso }
Exemplo: If ($a==$b) { Echo ("A igual a B."); } else { echo ("B diferente de A.");
Traduzindo: se $a for igual a $b ento imprima na tela "A igual a B". De outro modo, imprima "B diferente de A".
O primeiro lao disponvel em PHP o lao while. A sua forma geral : While (condio) { //Bloco de comandos... }
Esse comando permite que determinado processo seja executado vrias vezes. Sua sintaxe a seguinte: for (inicio; fim; incremento) { //Bloco de comandos... } Exemplo:
1.
A varivel $contador pode ser um nmero inteiro (integer) ou real (float), sendo a utilizao de nmeros inteiros mais frequente.
2.
A varivel contador pode ser inicializada com qualquer valor positivo, negativo ou zero.
O comando break utilizado para forar uma terminao imediata de um lao, evitando o teste condicional do lao. Quando o comando break e encontrado o controle dentro do de um lao, o no lao
imediatamente seguinte.
terminado
script
retorna
comando
5.5 - Switch
O PHP tem um comando interno de seleo mltipla, switch, que testa sucessivamente o valor de uma expresso contra uma lista de constantes inteiras ou de caracteres. Quando o valor coincide, os comandos associados quela constante so executados. A sintaxe desse comando a seguinte: switch (varivel) { case valor1: //Bloco de comandos Comandos... break; case valor2: //Bloco de comandos Comandos... break; case valor3: //Bloco de comandos Comandos... break; }
6. Funes
Funes so blocos de comandos executados independentementes do script. A qualquer momento da execuo voc poder solicitar uma funo. Voc pode passar argumento para as funes realizarem operaes especificadas em tempo de programao. A sintaxe bsica de construo de funes em php a seguinte:
function nome_funo ($arg_1, $arg_2, ..., $arg_n) { //Bloco de comandos... return $valor_retorno; } Importante: Toda funo em PHP tem de ser construda antes da sua
respectiva chamada, a fim de que o interpretador reconhea a solicitao do script. Caso contrrio, uma mensagem de erro retornada.
Exemplo de funes:
7. Gravando Cookies
Cookies so variveis gravadas remotamente pelo browser do usurio. muito til na hora em que um usurio executa uma rotina de login no sistema. Voc pode gravar o login e a senha dele e recuper-los de acordo com o tempo especificado na funo; se o parmetro tempo no for
especificado, o cookie ser gravado at o fim da aplicao, ou seja, at que o usurio feche o browser. Qualquer cookie enviado por um cliente automaticamente transformado numa varivel PHP. A funo para gravar
setcookie(string_nome,string_valor,tempo);
Os
cookies
gravados
pelo
script
PHP
ficam
armazenados
no
array
$HTTP_COOKIE_VARS[], cujo ndice o string nome especificado na funo setcookie. Para recuperar um cookie proceda da seguinte maneira:
echo $HTTP_COOKIE_VARS["usuario"];
9. header(Location...) Esta funo permite que um script php redirecione para outra pgina. A sintaxe :
header("Location: endereo"); O exemplo a seguir redireciona o script para localizada no servidor server e diretrio controle: a pgina index.php3
header("Location: http://server/controle/index.php3");
Veremos as funes mais importantes de comunicao entre um script php e um servidor de Banco de Dados MySQL. Colocar todas as funes e hipteses neste livro o tornaria tedioso e cansativo, estendendo demais a leitura. O proprsito impulsionar um programador para a tecnologia de Intranet. As demais funes e parmetros no contidos neste livro ficam a critrio do leitor pesquisar no manual do PHP, disponvel tambm gratuitamente no site: http://www.php.net
Esta funo habilita uma conexo com o servidor de banco de dados MySQL. H indispensvel necessidade de chamada dessa funo antes de qualquer transao na base de dados. Esta funo retorna o nmero inteiro 1 se a conexo funo: for bem sucedida, caso contrrio retorna 0. A sintaxe dessa
mysql_connect("host","seu_login","sua_senha");
onde; host - corresponde ao nome do computador que tem o servidor de Banco de Dados MySQL rodando. Pode ser o nome, por exemplo - localhost, ou o endereo de IP. seu_login - o nome de usurio do banco de dados sua_senha - a senha do banco de dados
9.2 - mysql_select_db()
Esta funo seleciona um banco de dados, retornando 1 se a transao foi bem sucedida e 0, caso contrrio. Possui a seguinte sintaxe:
mysql_select_db("nome_do_db",inteiro_conexao);
onde;
Exemplo: <? //Conectando com o MySQL Server $conexao=mysql_connect("localhost","login","senha"); //Selecionando o banco de dados $banco=mysql_select_db("usuarios",$conexao); ?>
10.3 - mysql_query()
Envia
um
comando
SQL
para se o
MySQL
Esta
funo
retorna
um
identificador
inteiro
comando
sucedido,
caso
contrrio
mysql_query(string_comando,inteiro_banco);
onde; comando = string contendo o comando SQL. inteiro_banco = identificador do banco de dados.
10.4 - mysql_num_rows( )
Esta funo retorna o nmero de linhas de uma query SQL. Sintaxe: mysql_num_rows(inteiro_query);
parmetro
inteiro_query
corresponde
ao
identificador
de
retorna
da
funo mysql_query().
mysql_fetch_array(inteiro_query);
onde
inteiro_query
corresponde
ao
identificador
retornado
pela
funo
mysql_query().
Exemplos:
Algumas
vezes,
usurio
precisa
ler
gravar
dados
de
arquivos
no
servidor. Por exemplo: um contador de pgina da web, seja grfico ou modo texto, possui um arquivo guarda o resultado da ltima visita no site, um livro de visitas pode gravar os dados num arquivo de texto, um simples gerador de estatsticas de um site pode ser um arquivo texto contendo o IP, domnio e hora que o usurio solicitou quela URL.
Muito frequentemente, o usurio de uma aplicao desejar armazenar dados para posterior anlise. Inicialmente, para que um arquivo possa ser
manipulado, ele precisa ser aberto ou criado. Para isso, vamos utilizar o comando fopen. O comando fopen, semelhante linguagem C, retorna um identificador
inteiro se a operao for bem sucedida ou 0, caso contrrio. Esta funo possui a seguinte sintaxe:
int fopen("arquivo",atributo); Onde; arquivo - string contendo o nome do arquivo Modo - um dos especificadores abaixo.
R R+ W
W+
A+
Abre o arquivo com permisso apenas para leitura. Abre o arquivo com permisso para escrita e leitura, posicionando o ponteiro no incio do mesmo. Abre o arquivo com permisso apenas para escrita. Se o arquivo existir, todo o contedo apagado. Se no existir, o PHP tenta crilo. O ponteiro posicionado no incio do arquivo Abre o arquivo com permisso para escrita e leitura. Se o arquivo existir, todo o contedo apagado. Se no existir, o PHP tenta crilo. O ponteiro posicionado no incio do arquivo Abre o arquivo com permisso apenas para escrita. Se o arquivo no existir, o PHP tenta cri-lo. O ponteiro posicionado no final do arquivo Abre o arquivo com permisso para escrita e leitura. Se o arquivo no existir, o PHP tenta cri-lo. O ponteiro posicionado no final do arquivo.
string fread(id,tamanho);
onde
Programando para Web com PHP/MySQL
11.3 - Gravando Dados Para gravar dados em arquivos utiliza-se o comando fputs. A sintaxe desse comando :
int fputs(id,valor);
Os comandos vistos anteriormente, juntamente com os captulos anteriores, fornecem embasamento suficiente para qualquer programador inserir,
alterar, apagar e recuperar dados de um MySQL Server atravs de scripts PHP. Os demais comandos podero ser encontrados na documentao oficial no site http://www.php.net. O principal objetivo deste livro fornecer
1 2 -
LERDORF, Rasmus - PHP Manual, 1999 by PHP documentation group. CRTES, Pedro - C Auto Explicativo, So Paulo, rica Editora Ltda 1992.
3 -
4 -
ABS(X) FLOOR(X)
Retorna o valor absoluto do nmero X Retorna o maior valor inteiro de um nmero. Mysql> select FLOOR(1.23); -> 1 mysql> select FLOOR(-1.23); -> -2
ROUND(X)
Arredonda
argumento
`X',
retornando
um
inteiro.
mysql> select ROUND(-1.23); -> -1 mysql> select ROUND(-1.58); -> -2 mysql> select ROUND(1.58); -> 2
LOG(X) SQRT(X)
Retorna o logartmo natural de 'X' Retorna a raiz quadrada de `X'. Mysql> select SQRT(4); -> 2.000000 mysql> select SQRT(20); -> 4.472136
PI()
COS(X)
Retorna o cosseno de `X'. Obs: X em radianos Mysql> select COS(PI()); -> -1.000000
Retorna a tangente de X. Obs: X em radianos. Retorna o arco-cosseno de `X'. Retorna o arco-seno de X. Retorna o arco-tangente de X Converte o argumento X de radianos para graus. Converte o argumento X de graus para radianos.
Funo LOWER(str)
minsculos. UPPER(str) CONCAT(str1,str2,...) SUBSTRING(str,pos,len) Fora caracteres minsculos aparecerem maisculos. Concatena os strings Extrai um substring comeando em pos e terminando em len. LTRIM(str) RTRIN(str) TRIM(str) Extrai espaos em branco esquerda do string Extrai espaos em branco direita do string Extrai espaos em branco esquerda e direita do string.
APNDICE C
Funo WEEKDAY(data)
Retorno Dia da semana (`0' = Monday, `1' = Tuesday, ... `6' = Sunday). mysql> select WEEKDAY('1997-10-04 22:23:00'); -> 5 mysql> select WEEKDAY('1997-11-05'); -> 2
DAYOFMONTH(data)
Dia do ano. Assume valores de 1 a 366. Ms do ano. Assume valores de 1 a 12 Ano referente a data. Assume valores entre 1000 a 9999
Data atual. Formato (yyyy-mm-dd) Hora atual. Data e hora atual. mysql> select NOW(); -> '2000-08-01 23:50:26'
APNDICE D
Banco de dados corrente Usurio corrente String contendo a verso do MySQL Server Nmero de vezes que acontece a expresso Mdia aritmtica entre os valores da expressso Menor valor da expresso Maior valor da expresso Somatrio da expresso