Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Programacao PHP e MySQL
Apostila Programacao PHP e MySQL
PHP
e
MySQL
PHP e MySQL
Sumrio
Reviso de HTML....................................................................................................
.8
Estrutura HTML......................................................................
.............................8
Atributos..........................................................................
...................................9
Principais Tag's HTML.........................................................................
...............10
<!-- e -->.........................................................................................
..............10
<Hn>..............................................................................
..............................10
<br>............................................................................
.................................10
<p>.......................................................................................................
........10
<a> ....................................................................................................
..........10
<font>.........................................................................
.................................11
<table>...................................................................................................
......11
<tr>.....................................................................................
.........................11
<td>..........................................................................
...................................11
Formulrios............................................................................
...........................12
Mtodo GET.........................................................................................
..........12
Mtodo POST......................................................................................
...........12
Formulrios usando GET e POST...................................................................13
Elementos do Formulrio..............................................................................13
Campo de Texto............................................................................................13
Campo de Senha.............................................................................
..............13
rea de Texto...............................................................
.................................13
Listbox e Combobox...........................................................................
...........14
Checkbox......................................................................................................
.14
Boto radio..............................................................................................
......14
Botes Submit e Reset................................................................
..................15
Exerccios:........................................................................................
.................15
PHP...................................................................................
....................................16
O que PHP?................................................................
....................................16
Caractersticas do PHP.....................................................................
.................16
ASP X PHP..........................................................................
...............................16
Requisitos........................................................................................................
..16
Instalao do PHP......................................................................
...........................17
Ambiente Windows........................................................................................
17
Ambiente Linux......................................................................
.......................17
Scripts Client-Side e Server-Side.....................................................................
..18
Sintaxe PHP............................................................................................
...........18
Comentrios ...............................................................................................
......19
Comentrios de uma linha............................................................................19
Comentrios de vrias linhas............................................................
............19
Variveis em PHP...............................................................................
...................19
Tipos de variveis.........................................................................................19
Atribuindo valor uma varivel....................................................................20
Exibindo o contedo na tela.........................................................................
.21
Arrays...............................................................................................
............21
Arrays superglobais....................................................................................
...22
2
PHP e MySQL
Operaes aritmticas.......................................................................
...............23
Operaes com Strings e Atribuio.................................................................23
Operador .............................................................................................
......23
Operador .= ...........................................................................
..................23
Operadores ++ e --...............................................................................24
Operadores += e -=.........................................................................
......24
Operadores *= e /=....................................................................
............24
Operador %=...........................................................................
..................24
Operadores de comparao.......................................................................
.......24
Operadores lgicos...............................................................
............................25
Operaes lgicas...................................................................................
.........25
Operao AND.........................................................................................
......26
Operao OR................................................................................
.................26
Operao XOR.............................................................................
..................27
Operao NOT..................................................................................
.............27
Exerccios......................................................................................
....................27
Blocos de comandos...........................................................................
..................28
Estruturas de controle.......................................................................................
28
Estrutura if.......................................................................
.............................28
Estrutura while.............................................................................
.................29
Estrutura do...while....................................................................
...................30
Estrutura for..................................................................................
................30
Estrutura foreach...........................................................
...............................30
Comandos break e continue........................................................................32
Estrutura switch....................................................................
........................32
Funes...............................................................................................
..............33
Valor de retorno............................................................................................33
Argumentos ou parmetros..........................................................................34
Passagem de parmetros por referncia......................................................34
Variveis globais e locais............................................................
......................35
Processando Formulrios com PHP.......................................................................35
Array superglobal $_GET............................................................................
.......36
Array Superglobal $_POST...............................................................................37
Formatao de dados........................................................................................
37
Funo htmlspecialchars()............................................................................37
funes addslashes() e stripslashes()...........................................................38
funes urlencode() e urldecode()................................................................38
funes intval() e doubleval().......................................................................39
funes trim(), ltrim() e chop().....................................................................39
Validao de formulrios com javascript..........................................................39
Validao com PHP........................................................................................
....41
Espaos em branco....................................................................
...................41
Quantidade mnima de caracteres................................................................41
Correo automtica...........................................................................
..........41
Valores numricos..........................................................................
..............42
Arquivos de texto.................................................................................
.............45
Manipulando Arquivos ..................................................................................
....45
Abertura...................................................................................
.....................45
3
PHP e MySQL
Fechamento..............................................................
....................................46
Leitura.........................................................................................
..................46
Escrita...............................................................................
............................48
Funes Require e Include................................................................................49
MySQL e PHP......................................................................................................
...49
Estrutura de um Banco de Dados.....................................................................50
Acessando MySQL...............................................................................
..............50
Comandos sql...............................................................
....................................50
Comando create..................................................................................
..........50
Chave primria e chave estrangeira.............................................................52
Criando tabelas.........................................................................
....................52
Comando insert..................................................................................
...........53
Clusula where......................................................................................
........54
Comando update.....................................................................................
......54
Comando alter table.....................................................................................54
Comando delete...............................................................................
............55
Comando select............................................................................................55
Chaves estrangeiras.....................................................................................58
Tipos de tabelas .......................................................................
....................58
Relacionando tabelas................................................................................60
Relacionamentos entre tabelas...............................................................
......60
Configurando usurios no MySQL.....................................................................61
Sistema de privilgios...................................................................
................61
Concedendo privilgios comando GRANT..................................................62
Conectando-se ao MySQL com o PHP...............................................................62
Conexo..............................................................................
..........................63
Executando query's SQL...............................................................................63
Organizando os dados da consulta...............................................................64
Retornando o nmero de linhas....................................................................64
Fechando a conexo.....................................................................................65
Aplicaes em PHP e MySQL...............................................................................
..66
Mdulo de cadastro.............................................................................
..........67
Mdulo de excluso....................................................................................
...67
Mdulo de pesquisa parte 1.......................................................................68
Mdulo de pesquisa parte 2.......................................................................69
Mdulo de alterao...................................................................................
...70
Cookies e Sesses - Autenticao..................................................................
...73
Cookies......................................................................................................
....73
Sesses...............................................................................
..........................73
PHP Orientado a Objetos......................................................................................77
Principais componentes ..............................................................
.....................77
Classes, atributos e mtodos........................................................................77
Mtodos construtores e destrutores.............................................................81
Modificadores de Acesso...........................................................................
........82
Modificador public..........................................................................
...............82
Modificador private...........................................................
............................82
Modificador protected............................................................
.......................83
Herana................................................................................................
.........83
4
PHP e MySQL
Sobrescrever mtodos..................................................................................84
Glossrio de funes do PHP................................................................................85
Datas............................................................................................................
.....85
Date()...........................................................................................
.................85
Getdate...............................................................................
..........................86
Gmmktime()....................................................................................
..............86
Gmstrftime()................................................................................................
..86
Microtime()........................................................................................
............86
Mktime().............................................................................................
...........87
Strftime()..............................................................................................
.........87
Time().................................................................................................
...........88
Diretrios..........................................................................
................................88
Chdir()....................................................................................
.......................88
Closedir()................................................................................................
.......88
Opendir().........................................................................................
..............88
Readdir().......................................................................
................................88
Execuo de Programas............................................................................
........88
Escapeshellcmd()........................................................................
..................88
Exec().......................................................................................
.....................89
Passthru().....................................................................................
.................89
System()................................................................................................
........89
Sistema de arquivos do servidor .....................................................................
.89
Basename().......................................................................................
............89
Chgrp()........................................................................................
..................90
Chmod()...........................................................................
.............................90
Chown()...............................................................................................
..........90
Copy()............................................................................................................
90
Delete()..................................................................................
.......................90
Dirname().....................................................................................
.................90
Fclose()........................................................................................................
..90
Feof()..............................................................................................
...............90
File()..................................................................................
............................91
File_exists()................................................................
...................................91
Filesize()..................................................................................
......................91
Filetype()...............................................................................
........................91
Fopen()..........................................................................................
................91
Fputs()................................................................................................
...........92
Fread()...............................................................................................
............92
Fwrite().................................................................................................
.........92
Readfile()..............................................................................................
.........92
Rename()......................................................................................................
.93
Matemtica................................................................................
.......................93
Abs()......................................................................................................
........93
Base_convert()......................................................................
........................93
Max()...........................................................................................
..................93
Min()..............................................................................................
................93
Mt_rand()................................................................................................
.......93
Pi().....................................................................................................
............93
5
PHP e MySQL
Pow()..................................................................................
...........................93
Rand()........................................................................
...................................93
Round()..........................................................................................................
94
Sin().........................................................................................................
......94
Sqrt()...........................................................................................
..................94
Tan()....................................................................................
..........................94
Funes diversas............................................................................................
...94
Eval()................................................................................................
.............94
Die().................................................................................
.............................94
Exit()............................................................................................................
..94
Mail().......................................................................................
......................94
Pack()................................................................................
............................95
Sleep()..................................................................................................
.........95
Tratamento de sesses.....................................................................................95
Session_decode()................................................................
..........................95
Session_destroy()...........................................................................
...............95
Session_encode()...............................................................
...........................96
Session_start()...........................................................
...................................96
Session_is_registered()...............................................................................
...96
Session_module_name()...............................................................................96
Session_name().................................................................................
............96
Session_register()......................................................................................
....96
Session_unregister()...................................................................................
...96
Strings......................................................................................................
.........96
Addslashes().............................................................................................
.....96
Chop()...........................................................................
................................97
Crypt()............................................................................................
...............97
Echo()...............................................................................................
.............97
Explode()..........................................................................................
.............97
Htmlentities().........................................................................
.......................97
Htmlspecialchars()...............................................................
.........................97
Implode()...............................................................................................
........97
Ltrim()...............................................................................
............................98
Md5()...................................................................................................
..........98
Parse_str()..............................................................................
.......................98
Strcmp()..............................................................................
..........................98
Strip_tags()...............................................................................................
.....98
Stripslashes().................................................................
...............................98
Strlen()..................................................................................
........................98
Strrev()........................................................................................
..................99
Strtolower()............................................................................
.......................99
Strtoupper().............................................................
.....................................99
Str_replace()............................................................................................
......99
Trim().................................................................................................
............99
Ucfirst()............................................................................
.............................99
Ucwords()...................................................................................
...................99
Variveis.....................................................................
....................................100
Doubleval()................................................................................................
..100
6
PHP e MySQL
Empty()..........................................................................
.............................100
Gettype()...........................................................................................
..........100
Intval()....................................................................................................
.....100
Is_array()..................................................................................
...................100
Is_double()..................................................................................................
.100
Is_float()............................................................................
..........................100
Is_int()...............................................................................
..........................100
Is_object()..................................................................................................
..101
Is_real()........................................................................
...............................101
Is_string().........................................................................
...........................101
Isset()....................................................................................
......................101
Settype()..........................................................................
...........................101
Strval()............................................................................
............................101
Referncias Bibliogrficas...........................................................................
........102
PHP e MySQL
Reviso de HTML
HTML significa Hiper Text Markup Language Linguagem de Marcao de Hiper
Texto. Com ela, podemos formatar documentos inteiros para exibio na Internet,
transformado textos simples em hipertexto.
A Internet nada mais do que uma grande rede de computadores, formada por
outras redes menores, compartilhando informaes. Para que essas informaes sejam
compartilhadas entre os mesmos, preciso que sejam disponibilizadas de forma que todo e
qualquer computador possa interpretar. HTML uma linguagem padro para divulgao de
documentos na rede, portanto, qualquer computador deve ser capaz de interpret-lo.
Um documento escrito em HTML , em geral, chamado de pgina web. O conjunto
dessas pginas forma um site (lugar, em ingls). Seu contedo chamado de hipertexto,
pois pode ser compreendido por qualquer computador, enquanto que o texto comum pode
ser visto em um computador de uma forma e em outro de outra forma. Um site pode conter
quaisquer informaes que se queira disponibilizar via internet, mas para que ele seja visto,
preciso que seja publicado. Para isso, existem os servidores web. Trata-se de
computadores que armazenam e disponibilizam esses sites para visitao, a custos
relativamente baixos.
Alm disso, deve-se usar um programa capaz de interpretar o cdigo HTML da
pgina, aplicar sua formatao ao documento e exibir o resultado. Este programa
chamado de browser ou navegador. Os navegadores mais conhecidos so o Mozilla Firefox,
Internet Explorer, Opera e Netscape.
HTML uma linguagem esttica, ou seja, uma vez escrito, sua estrutura permanece
inalterada.
Estrutura HTML
HTML composto por tag's, que so marcaes delimitadas pelos smbolos < e
>, usados para indicar uma formatao. Ex: Todo documento HTML deve iniciar com a tag
<html> e terminar com a tag </html>. Essas tags delimitam o documento, sendo que o
que estiver fora delas no ser considerado um documento HTML, e portanto no ser
interpretado como hiper texto, e sim como texto comum. Ex:
<html>
...
pginaweb
...
</html>
PHP e MySQL
o contedo entre as tags <title> e </title>. Esse ttulo aparecer na barra de ttulo do
navegador. Vejamos nosso exemplo:
<html>
<head>
<title>MinhaPginaWeb!!!</title>
</head>
...
</html>
Digite o cdigo acima e salve como pagina.html e abra-o usando o navegador de sua
preferncia.
Agora, definiremos o corpo da pgina. Todo seu contedo ser visualizado dentro do
navegador. O corpo da pgina comea com a tag <body> e termina com </body>.
<html>
<head>
<title>MinhaPginaWeb!!!</title>
</head>
<body>
...
</body>
</html>
Altere o arquivo pagina.html para que fique como o cdigo acima, depois salve. J
temos a estrutura de um documento HTML. Agora, vamos adicionar contedo a esta pgina.
Atributos
A grande maioria das tag's HTML possuem atributos, que so valores passados a elas
para que as mesmas assumam uma formatao diferente. Exemplo: Se quisermos o corpo
da pgina azul, podemos alterar o atributo bgcolor da tag body, alterando seu valor para
blue.
<html>
<head>
<title>MinhaPginaWeb!!!</title>
</head>
<bodybgcolor=blue>
...
</body>
</html>
PHP e MySQL
<!-- e -->
Usados para indicar um comentrio. comentrios no so exibidos no navegador. So
utilizados para uma melhor orientao pelo cdigo HTML.
<body> <!-- incio do corpo da pgina -->
<!-- colocar um ttulo aqui -->
</body> <!-- fim do corpo da pgina -->
<Hn>
Define um ttulo. n pode ser qualquer valor entre 1 e 6. Quanto maior o nmero,
menor o tamanho do ttulo.
<h1>Ttulo tamanho 1</h1>
<h2>Ttulo tamanho 2</h2>
<br>
Adiciona uma quebra de linha ao texto. forando-o a continuar na linha de baixo.
Mesmo que o texto dentro do documento ocupe apenas uma linha, o navegador far a
quebra de linha sempre que encontrar a tag <br>.
Este um texto que <br> recebeu uma quebra de linha <br> aqui
<p>
Inicia um novo pargrafo, separando assim, blocos de texto distintos.
<p> Iniciei um pargrafo. Dentro dele, posso adiconar qualquer contedo e usar
<br> quebra de linha para que no ocupe apenas uma linha. <br> Quando o
pargrafo terminar, eu posso simplesmente iniciar outro <p> Pargrafos no
precisam ser encerrados, pois o incio do prximo o final do anterior.</p>
<a>
Essa tag indica a presena de um link. Links so ligaes entre documentos HTML.
Eles direcionam o navegador para um ponto dentro do documento, para outro documento
10
PHP e MySQL
HTML, para outro arquivo ou at para outro site. Seu principal atributo href, que
determina para qual documento o link direcionado. O contedo contido entre as tag's <a>
e </a> torna-se o link em si. Pode ser uma frase, uma imagem ou um campo do
documento.
<a href=pagina2.html>Pagina 2</a>
<a href=pasta/arquivo.jpg>Abre uma imagem no navegador</a>
<ahref=http://www.umsitequalquer.com>Direcionaparaoutrosite</a>
<font>
Usada para formatar texto do documento. Seus principais atributos so:
<table>
Tabelas so estruturas utilizadas para organizar e posicionar os elementos na pgina.
Tabelas contm linhas, que por sua vez, contm clulas. Dentro das clulas, adicionamos o
contedo da pgina. Seus principais atributos so:
height: altura
<tr>
Marca o incio de uma linha da tabela
<td>
Marca o incio de uma clula dentro de uma linha. Seus principais atributos so:
11
PHP e MySQL
<tdcellpadding=0cellspacing=0bgcolor=red>ClulaVermelha</td>
<tdcellpadding=0cellspacing=0bgcolor=green>ClulaVerde</td>
</tr>
</table>
Formulrios
Formulrios so estruturas usadas para que o visitante possa interagir com o site,
enviando informaes para o site. Essas informaes so processadas por scripts que
capturam as informaes enviadas e as processam, retornando um resultado, gravando-as
no banco de dados do site, etc....
O campo pertencente ao formulrio delimitado pelas tag's <form> e </form>.
Dentro dessas tag's inserimos os elementos do formulrio (campos de texto, botes, etc).
Esses elementos iro capturar a informao fornecida pelo visitante e enviar ao script para
processamento. Cada elemento possui um nome que referenciado pelo script na captura
de informaes.
Os principais atributos da tag form so:
Mtodo GET
Usado para enviar pequenas quantidades de informao, visto que sua capacidade de
envio limitada. O mtodo GET usa a barra de endereos do navegador para enviar
informaes para o servidor. Possui um limite de 256 caracteres, sendo que o excedente
pode ( e acaba) se perdendo durante a transmisso. o mtodo de envio mais rpido e
tambm o menos seguro, pois as informaes enviadas atravs deste mtodo ficam
explicitamente visveis na barra de endereos, o que o torna um mtodo pouco seguro, visto
que informaes confidenciais (senhas, nmeros de cartes, etc) tornam-se visveis a
qualquer pessoa. A URL do site assume o seguinte aspecto:
http://www.sitequalquer.com?informao1=valor1&informao2=valor2
O sinal ? indica que o fim do endereo do site e o incio das informaes que
sero enviadas atravs do mtodo GET. Informao1 e Informao2 so as variveis,
que contm os valores que sero enviados para o servidor. Valor1 e valor2 so os valores
das respectivas variveis. O sinal & usado para separar uma varivel da outra.
Mtodo POST
Oposto ao anterior, as informaes so enviadas de forma mais segura, possibilitando
o uso de criptografia e outros recursos de segurana. No h um limite para a quantidade
de informaes que pode ser enviada atravs deste mtodo, porm, o mais lento. Para
us-lo.
12
PHP e MySQL
Elementos do Formulrio
A seguir, veremos os principais elementos de um formulrio. Os elementos do
formulrio possuem um atributo comum chamado name. Ele indica o nome de cada
elemento. Este nome ser tratado pelo script como uma varivel (algo que contm uma
informao), portanto, cada elemento deve ter um atributo name distinto, para que seja
diferenciado pelo script.
Campo de Texto
Permite a entrada de texto pelo usurio. Usado para preenchimento de nomes,
endereos e outras informaes simples. Seus principais atributos so:
Note que usamos a tag <input>. Esta tag pode assumir formas diversas, como
campos de texto, senhas, botes, etc. O que torna-a um campo de texto o valor do
atributo type. Quando indicamos o valor text, a tag input tornou-se um campo de texto.
Outras formas desta tag sero vistas a seguir.
Campo de Senha
Semelhante ao campo de texto, porm no aceita o atributo value. Utilizado para a
digitao de informaes confidenciais, principalmente senhas.
Senha: <input type=password name=senha size=12 maxlenght=12>
rea de Texto
Abre uma rea para digitao de texto. Devemos informar o nmero de linhas e
colunas que a rea de texto ir ocupar. Isto feito atravs dos atributos rows (linhas) e cols
(colunas).
Comentrio: <textarea name=comentario rows=10
cols=10>comentrio:</textarea>
13
PHP e MySQL
Listbox e Combobox
Cria uma lista de opes para serem selecionadas. O combobox mostra apenas um
valor de cada vez em um menu tipo cortina, enquanto o listbox mostra mais de um valor,
em forma de lista. Ambos utilizam a mesma tag (<select>), porm, o listbox recebe o
atributo size, informando quantos valores sero mostrados por ele. Ambos recebem o
atributo multiple, que permite a seleo de mltiplos valores.
<!-- exemplo de listbox -->
<select name=cidade size=5 multiple>
<optionvalue=guaira>Guaira</option>
<optionvalue=umuarama>Umuarama</option>
<optionvalue=lovat>Lovat</option>
<optionvalue=cascavel>Cascavel</option>
<optionvalue=cianorte>Cianorte</option>
</select>
<!-- mesmo exemplo, agora como combobox -->
<select name=cidade>
<optionvalue=guaira>Guaira</option>
<optionvalue=umuarama>Umuarama</option>
<optionvalue=lovat>Lovat</option>
<optionvalue=cascavel>Cascavel</option>
<optionvalue=cianorte>Cianorte</option>
</select>
Checkbox
Cria caixas de seleo, possibilitando ao visitante selecionar mais de uma opo. O
atributo checked faz com que a opo aparea marcada no formulrio. O atributo value
obrigatrio.
Selecione uma cidade:<br>
<p align=center>
<inputtype=checkboxname=pesquisa[]value=umuarama>Umuarama<br>
<inputtype=checkboxname=pesquisa[]value=guairachecked>Guaira<br>
<inputtype=checkboxname=pesquisa[]value=curitiba>Curitiba<br>
</p>
Obs: Note que o atributo name possui em seu valor, o nome pesquisa, seguido de colchetes. Isso ser
discutido mais adiante...
Boto radio
Semelhante ao Checkbox, porm, permite a seleo de apenas uma opo dentre as
oferecidas. (Diferencia-se do checkbox pelo formato arredondado).
Enquete:<br>
Que nota voc daria ao nosso formulrio?<br>
<p align=center>
<inputtype=radioname=notavalue=5>Otimo
<inputtype=radioname=notavalue=4>Bom
<inputtype=radioname=notavalue=3>Regular
<inputtype=radioname=notavalue=2>Ruim
<inputtype=radioname=notavalue=1>Pssimo
14
PHP e MySQL
</p>
Obs: Note que o atributo name de cada boto radio possui o mesmo valor. Isso ser discutido mais
adiante...
Exerccios:
Monte o layout do seu site. Use tabelas para organizar o contedo. O site deve ter
um banner na parte superior, uma coluna para o contedo, outra coluna para o menu
de navegao do usurio e um rodap contendo seu nome;
Na coluna ao lado, crie uma tabela contendo 3 linhas e uma coluna. Abaixo dela, crie
um formulrio de enquete e pea para que o visitante d uma nota ao seu site
Abaixo de seu curriculum, crie outro formulrio para que o visitante possa adicionar
comentrios ao contedo do site. O visitante deve informar o nome, localidade, email de contato, uma nota para o contedo e um comentrio.
15
PHP e MySQL
PHP
O que PHP?
PHP (Hypertext PreProcessor) uma linguagem de programao de scripts para
manipulao de pginas HTML. Criada por Rasmus Lerdorf em 1994, amplamente utilizada
na programao de web sites dinmicos, especialmente para manipulao de banco de
dados.
Caractersticas do PHP
PHP gratuito: Distribudo sob a licena GPL, possui seu cdigo-fonte (cdigo
utilizado para sua criao) aberto, o que facilita a correo de eventuais erros no
cdigo, permitindo seu rpido desenvolvimento
PHP compatvel com a a maioria dos servidores web disponveis no mercado, tendo
suporte nativo para o servidor Apache (atualmente o mais utilizado no mercado).
PHP suporta banco de dados: Possui suporte nativo ao MySQL, porm pode utilizar
outros sistemas de gerenciamento de banco de dados (SGBD), dentre eles, Oracle,
Sybase, mSQL, Firebird, PostgreSQL e DB2. Permite tambm o uso de mais de um
banco de dados na mesma aplicao.
PHP suporta uma grande variedade de protocolos, dentre eles, IMAP, POP3, SMTP,
XML, LDAP, HTTP e FTP.
ASP X PHP
A linguagem ASP foi desenvolvida sob os mesmos objetivos do PHP, porm, por ter
sido desenvolvida pela Microsoft, funciona apenas em plataformas Microsoft, exigindo que
seu servidor tenha Windows 2003 Server instalado, por exemplo. Isso faz do ASP invivel,
devido a custos de licena, podendo variar entre US$2.500,00 e US$10.000,00. Alm disso,
o fato do ASP ter seu cdigo fechado dificulta seu desenvolvimento e a correo de bugs,
tornando a linguagem suscetvel a erros.
Requisitos
PHP exige apenas a instalao de um servidor web compatvel. Caso queira utilizar
um banco de dados, instale um que seja compatvel. Recomendamos a utilizao do
Servidor web Apache e do banco de dados MySQL, por terem suporte nativo ao PHP.
16
PHP e MySQL
Instalao do PHP
Ambiente Windows
A instalao em ambiente Windows simples. O instalador ir configurar o ambiente
completo para o PHP. Voc s dever informar o nome do servidor (na dvida, deixe
localhost, seu nome e seu e-mail para contato.
Existe um instalador para Windows que contm o servidor Apache, o PHP e o banco
de dados MySQL, alm de outros recursos para administrao de sites. Trata-se do Xampp.
O instalador pode ser baixado em www.xampp.org.
Para saber se a instalao foi concluda com sucesso, abra o editor de texto de sua
preferncia e adicione as seguintes linhas:
<?
phpinfo()
?>
Ambiente Linux
Ao contrrio do que muita gente pensa, a instalao em ambiente Linux pode ser to
simples quanto a instalao em ambiente Windows, especialmente se houver conexo com
a internet. Sistemas operacionais Linux so baseados em pacotes, ou seja, cada programa
um pacote ou um conjunto de pacotes que podem ser instalados, atualizados e removidos
atravs de comandos simples ou utilitrios grficos, como o Synaptic. A instalao atravs
da linha de comando varia em cada caso. Se voc usa um sistema baseado em Debian,
como Ubuntu, Kurumin ou Knoppix, voc pode utilizar o comando apt da seguinte forma:
Abra o terminal;
Caso seu sistema seja baseado em Red Hat, como Fedora, Mandriva ou CentOS,
substitua o apt-get do comando acima por Yum. Caso use Mandriva, substitua-o por urpmi.
yum install apache2 php5 mysql5 mysqladmin phpmyadmin
urpmi install apache2 php5 mysql5 mysqladmin phpmyadmin
Este comando far com que o sistema instale o servidor Apache, o PHP, o banco de
dados MySQL, o administrador do MySQL e o PhpMyAdmin, usado para administrar
remotamente o site.
17
PHP e MySQL
Caso prefira uma maneira mais fcil de realizar esta tarefa, basta usar o gerenciador
de pacotes Synaptic. Se sua distribuio no o possui, ele pode ser instalado atravs do
mtodo acima. O Synaptic est disponvel para qualquer distribuio Linux. Aps instalado,
abra-o, digite a senha do Administrador (root), marque, clicando com o mouse, os pacotes
que voc quer instalar. Depois clique em aplicar. Ele ir baixar os pacotes necessrios e
instalar em seu sistema. Para saber se a instalao foi concluda com sucesso, abra o editor
de texto de sua preferncia e digite o seguinte cdigo:
<?
phpinfo()
?>
Sintaxe PHP
A linguagem PHP pode ser usada de duas formas: incorporado ao HTML ou de forma
pura, em scripts separados das pginas HTML. Em ambos sua sintaxe a mesma. Todo
cdigo PHP delimitado por tags de abertura e fechamento (como o html), como mostrado
abaixo:
Estilo php 'longo'
Estilo Javascript
Estilo ASP
<?php
...
?>
<?
...
?>
<%
...
%>
Tudo que estiver dentro dessas tag's PHP ser considerado script PHP, e no HTML.
Cdigo PHP digitado fora das tag's ser interpretado como erro.
18
PHP e MySQL
Obs: Cada linha de cdigo PHP deve terminar com ; para que a linguagem
reconhea o fim de uma linha de comando e o comeo de uma nova.
Comentrios
Comentrios no PHP podem ser de duas formas:
Variveis em PHP
Variveis so recipientes, com a funo de armazenar dados a fim de serem
utilizados a qualquer momento pelo programa. Diferente de muitas linguagens de
programao, no necessrio declarar a existncia de uma varivel, ou mesmo o tipo de
informao que ela armazenar. Variveis no PHP so identificadas pelo sinal $ antes de
seu nome. Os nomes de variveis no podem possuir caracteres especiais (espaos,
acentos, etc), com exceo do underline (_). De preferncia, use nomes que indiquem o
tipo de informao que a varivel ir armazenar. Exemplo de nomes vlidos:
$nome, $endereco, $idade, $data_inscricao, $20assustar, $123;
Tipos de variveis
Variveis devem armazenar um determinado tipo de informao. PHP no exige que
este tipo seja informado, pois reconhece-o automaticamente. Os tipos so:
Nmeros inteiros (int ou integer): Nmeros naturais positivos e negativos. Ex: 25, -7;
19
PHP e MySQL
Caracteres alfanumricos (String): Valores literais. Ex: Joo da Silva. Valores do tipo
String devem estar dentro de aspas ou apstrofos. Mesmo valores numricos, se
informados como strings, sero tratados como tal;
Na linha acima, a varivel salrio recebe o valor 700,00 que do tipo float
(fracionrio). Cada linha de cdigo do PHP (como em muitas linguagens de programao)
termina com o sinal ;. Ele indica o fim de uma linha de cdigo.
Voc pode forar a varivel a receber um tipo especfico de valor, indicando o tipo
desejado entre parnteses, antes da atribuio. Ex: Se quisermos que a varivel $salario
receba o valor como uma String em vez de um inteiro, podemos realizar a converso do
valor para String da seguinte forma:
$salario = (string) 700,00;
20
PHP e MySQL
No exemplo acima, imprimimos um valor literal, o valor de uma varivel e uma tag html.
Tambm podemos utilizar apstrofos no lugar de aspas, porm, apstrofos mostram o nome
de uma varivel em vez de seu contedo. Ex:
$variavel = qualquer;
echo 'Valor $variavel';
Dessa forma, $variavel fica unida ao comando echo, que imprime seu valor na tela.
Com o uso da concatenao, a varivel no precisa ficar entre apstrofo ou aspas. O
resultado ser:
Valor qualquer
Arrays
Array (ou Vetor) um conjunto ordenado de variveis. Em um array, todas as
variveis possuem um ndice, que pode ser um nmero ou texto. O ndice deve aparecer
entre [ e ], logo aps o identificador do array. Ex: $lista[] ou $lista[0].
No PHP, os arrrays iniciam-se em zero. Diferente de outras linguagens, voc no
precisa definir um nmero limite de posies dentro de um array, pois ele se expande
dinamicamente.
Caso o vetor no seja indicado entre os colchetes, o PHP ir procurar pelo ltimo
elemento do array e atribuir o novo valor na posio seguinte.
$lista[]; //isso
$lista[0] = 10;
$lista[1] = 11;
$lista[] = 12;
$lista[] = 13;
$lista[7] = 14;
$lista[] = 15;
indica que
//valor 10
//valor 11
//valor 12
//valor 13
//valor 14
//valor 15
Podemos utlizar a funo array para atribuir valore a um vetor. Os valores devem
estar entre parnteses e separados por vrgula. Ex:
$lista = array(10, 11, 12, 13, 14, 15);
21
PHP e MySQL
$usuario['estado'] = Paran;
Cada posio do array possui um nome, em vez de um valor numrico. Podemos exibir seu
contedo dessa forma:
echo O usurio .$usuario['nome']., de .$usuario['idade']. anos mora em .
$usuario['cidade']. - .$usuario['estado']..;
No exemplo acima, teramos uma tabela com 3 linha e 3 colunas. Podemos tambm
combinar ndices associativos matriz. Ex: Uma lista de times de futebol de cada cidade de
cada estado:
$time['MG']['BeloHorizonte'] = Atletico Mineiro;
$time['SP']['SaoPaulo'] = Corinthians;
$time['RS']['PortoAlegre'] = Gremio;
$time['PR']['Curitiba'] = Coritiba;
Arrays superglobais
So arrays pertencentes ao PHP, entre eles esto o array $_GET e $_POST que
armazenam o valor das variveis enviadas pelos formulrios atravs dos respectivos
mtodos GET e POST. Alm deles, temos o array $GLOBALS, que armazena variveis globais
definidas no script e os arrays $_SESSION e $_COOKIE, utilizados em sesses. Todos eles
sero vistos em detalhes mais adiante. A sintaxe para a utilizao destes array :
$ARRAY['variavel_ou_valor'];
Onde ARRAY o nome do array superglobal que ser utilizado e 'variavel_ou_valor'
o nome da varivel ou do valor a ser extrado do array.
22
PHP e MySQL
Operaes aritmticas
Para realizar operaes aritmticas no PHP utilizamos os seguintes operadores:
* para o exemplo abaixo, consideramos $a contendo o valor 4 e $b o valor 2
Operao
Operador
Exemplo
Resultado
adio
$a + $b
subtrao
$a - $b
multiplicao
$a * $b
diviso
$a / $b
$a % $b
Podemos realizar uma operao aritmtica e de atribuio em uma nica linha. Para
isso, precisamos apenas fazer com que uma varivel receba o valor da operao. Ex:
$resultado = $a + $b * 2;
Lembrando que voc tambm pode usar sinais como parnteses para indicar a ordem
de procedncia na operao aritmtica. Ex: Qual a metade de dois mais dois? O resultado
pode ser diferente, conforme a ordem de procedncia dos operadores.
$valor = 2+2/2;
/* nesse caso, a diviso possui procedncia na operao, sendo executada antes
da adio. O resultado ser 3 */
$valor = (2+2)/2;
/* j neste caso, o que est entre parnteses possui procedncia maior do que a
diviso, ou seja, deve ser realizado primeiro. Neste caso, o resultado ser 2 */
Operador .=
Utilizamos operadore de atribuio para adicionar a uma varivel um novo contedo,
sem que o contedo antigo seja perdido. Ex: Atribumos varivel $nome o nome do
usurio.
$nome = Leopoldo;
23
PHP e MySQL
Agora, o contedo da varivel $nome Leopoldo da Silva.
Operadores ++ e --
O operador ++ tem a funo de incrementar em 1 o valor da varivel. Utilizado em
variveis contadoras, equivalente expresso $varivel = $varivel + 1. Em oposio,
o operador -- decresce o valor da varivel em 1. Ex: iniciamos a varivel $contador como
tendo o valor 1 e utilizamos os operadores ++ e --. O resultado :
$contador = 1;
$contador++;
$contador++;
$contador--;
$contador--;
Operadores += e -=
Sua funo incrementar ou decrementar varivel o valor de outra varivel.
Equivalente expresso $variavel1 = $variavel1 + $variavel2 e
$variavel1 = $variavel1 variavel2, respectivamente. Ex:
$valor1 = 1; //inicia variveis
$valor2 = 2;
$valor3 = 3;
$cont = $valor3; //$cont agora vale 3
$cont += $valor2 //$soma $cont o valor em $valor2. $cont vale 5
$cont -= $valor1 //subtrai de $soma o valor de $valor1. $cont vale 4
Operadores *= e /=
Semelhante aos anteriores, porm o operador *= multiplica o valor das variveis,
enquanto o operador /= divide-os. Ex:
$valor1 = 4;
$valor2 = 2;
$cont = valor1; //$cont vale 4
$cont *= $valor2; //equivale a $cont = $cont * $valor2. $cont vale 8
$cont /= $valor1; //equivale a $cont = $cont / $valor1. $cont vale 2
Operador %=
Como podemos supor, semelhante aos anteriores, porm, o valor acrescentado
varivel o resto da diviso. Ex:
$valor1 = 2;
$valor2 = 4;
$cont = $valor2; //$cont vale 4
$cont %= $valor1
/*o resto da diviso entre $cont e $valor1 (4 e 2) acrescentado $cont, ou
seja. $cont = $cont + ($cont % $valor1). Como o resto da diviso entre 4 e 2
zero, a expresso seria equivalente a $cont = $cont + 0; */
Operadores de comparao
So utilizados para comparar dois valores ou duas expresses. Retorna o valor 1 em
caso verdadeiro e 0 em caso de falso. atravs dos operadores de comparao que
24
PHP e MySQL
construmos testes lgicos e estruturas de deciso, que permitem ao script executar
determinada funo se determinada condio for satisfeita. So operadores de comparao:
Operao
operador
Sintaxe
igual
==
diferente
!=
maior/menor
< ou >
maior ou
igual/menor ou
igual
>= ou <=
resultado
$a == $b
verdadeiro
$a != $b
falso
$a > $b
falso
$a < $b
falso
$a >= $b
verdadeiro
$a <= $b
verdadeiro
Operadores lgicos
Comparaes como as citadas no exemplo acima so possveis graas aos operadores
lgicos. Eles avaliam se uma expresso verdadeira ou falsa e retornam o resultado, sendo
valor 1 para verdadeiro e 0 para falso. Os operadores lgicos so:
Operador
Operao
and ou &&
E lgico
or ou ||
OU lgico
xor
OU exclusivo
NO (negao ou inverso)
&
Operaes lgicas
Em todas as linguagens de programao existem as estruturas chamadas estruturas
de deciso, que so blocos de comandos, escritos de forma que executem determinada
funo caso uma condio seja verdadeira e outra caso seja falsa. A prpria estrutura avalia
25
PHP e MySQL
a condio e se for verdadeira, executa determinada(s) funo(es); Caso seja falsa,
executa funo(es) diferentes. Porm, existem casos em que mais de uma condio deve
ser avaliada. Para isso, utilizamos operaes lgicas. Elas avaliam duas ou mais condies e,
atravs de operaes lgicas, determinam qual ser o resultado das condies avaliadas. O
programa, ento, ir utilizar este valor para determinar o que fazer. Existem basicamente,
quatro operaes lgicas chamadas: AND, OR, XOR e NOT (E, OU, OU EXCLUSIVO e NO).
Operaes lgicas permitem que o programa avalie se uma condio verdadeira ou falsa e
execute funes especficas com base nos resultados. Veremos agora as principais
operaes lgicas:
Operao AND
O operador AND retorna verdadeiro apenas quando todas as condies forem
verdadeiras. Uma tabela de possveis resultados mostrada abaixo.
condio 1
AND
condio 2
resultado
AND
AND
AND
AND
valor 2
Resultado
Operao OR
A operao OR no to rgida. O resultado ser verdadeiro caso uma das
condies seja verdadeira. Seria idntico uma operao de adio, porm com uma
exceo: Na operao OR, a soma 1 + 1 igual a 1. Vejamos a tabela:
condio 1
OR
condio 2
resultado
OR
OR
OR
OR
26
PHP e MySQL
Transformando Verdadeiro em 1 e Falso em 0, teremos:
condio 1
condio 2
resultado
Operao XOR
A operao XOR (OU EXCLUSIVO) tem uma particularidade: Seu resultado ser
verdadeiro apenas se e somente se uma das condies for verdadeira, retornando falsa caso
as duas tenham o mesmo valor.
condio 1
XOR
condio 2
Resultado
XOR
XOR
XOR
XOR
Operao NOT
Trata-se da mais simples de todas: Ela apenas inverte o resultado de uma operao,
ou seja, verdadeiro torna-se falso e vice-versa.
condio
NOT
resultado
NOT
NOT
Exerccios
Escreva um script php que armazene em variveis o nome e a idade de uma pessoa.
Depois escreva na tela, em uma nica mensagem, o nome e a idade da pessoa.
Escreva um script que armazene em variveis o seu nome e o nome de 5 cores (em
ingls). Utilizando apenas o comando echo, escreva seu nome 5 vezes na tela. Cada
ocorrncia do nome deve ser de uma das cores previamente armazenadas nas
variveis. Utilize a tag <font> para formatar os nomes.
27
PHP e MySQL
Blocos de comandos
Blocos so um conjunto de linhas de cdigo delimitadas pelos sinais { e }. Seu
objetivo agrupar comandos responsveis por determinada funo. Vejamos como blocos
de comando podem ser utilizados:
Estruturas de controle
Utilizamos estruturas a fim de executar determinados blocos de comandos quando
necessrio, possibilitando a reutilizao do cdigo. Existem 3 tipos de estruturas:
Estrutura if
A estrutura if (do ingls: se) executa um determinado bloco, caso uma condio
seja verdadeira. Sua sintaxe :
<?php
if(condio){
comandos;
}
?>
PHP e MySQL
Existem casos em que precisamos que a estrutura execute um determinado bloco de
comandos caso uma condio seja verdadeira e outro caso seja falsa. Para isso existe uma
variao da estrutura if chamado de if...else (se...ento).Essa estrutura executa um
determinado bloco caso a condio seja verdadeira e outro caso seja falsa. Ex:
<?php
if($a == $b){
echo Valor da
echo Varivel
}else{
echo Valor da
echo Varivel
}
?>
varivel: $valor<br>;
um nmero par!<br>;
varivel: $valor<br>;
mpar!<br>;
A condio a ser avaliada pela estrutura if faz um teste na varivel $a. Caso o
resultado seja verdadeiro ($a igual a $b), a estrutura executar o primeiro bloco de
comandos. Caso seja falsa, ela ir direto para o segundo bloco de comandos, ou seja, ir
pular a primeira parte da estrutura. Isso evita que o teste seja feito novamente, deixando
o programa duas vezes mais rpido.
Estrutura while
A estrutura while uma estrutura de repetio. Ela avalia a expresso e executa o
bloco de comandos enquanto a condio for verdadeira. caso a condio retorne falsa, o
while deixa de execut-la. Sua sintaxe :
<?php
while(expresso){
comandos;
}
?>
Na estrutura acima, definimos o valor de $cont como sendo 1. O lao while executar
um pequeno bloco de comandos enquanto o valor de $cont for menor que 10. O bloco do
while escrever uma frase informando o valor de $cont, depois ir acrescentar 1 ao seu
valor. Assim, o valor de $cont ir aumentar at chegar a 10, encerrando a execuo do
while.
29
PHP e MySQL
Estrutura do...while
A estrutura do...while semelhante a while, porm, enquanto a estrutura while avalia
a condio antes de executar, a estrutura do...while executa o bloco antes de fazer o teste.
Ex:
<?php
$cont = 1;
do{
echo Valor de \$cont: $cont<br>;
$cont++;
}while($cont < 10)
?>
Estrutura for
A utilizao do for idntica a do while, entretanto, sua sintaxe diferenciada. Nele,
definimos uma varivel contadora, uma condio para o final da repetio e uma regra de
modificao do contador. Sua sintaxe :
<?php
for(inicializao;condio;operador){
comandos
}
?>
No exemplo acima, definimos dentro do for uma varivel $cont e atribumos o valor 0
a ela. Em seguida, dizemos ao for para executar o bloco de comandos enquanto o valor de
$cont for menor que 10. Por ltimo, dizemos que cada vez que a estrutura for executada, a
varivel $cont receber + 1 (em virtude do operador ++). Aps a atribuio, a condio
testada novamente (como no while) at que a condio para o trmino do for seja satisfeita.
Estrutura foreach
Esta estrutura oferece uma maneira mais simples de percorrer os elementos de um
array. Possui duas sintaxes:
<?php
foreach($array as $elemento){
comandos;
}
?>
ou
<?php
foreach($array as $chave => $valor){
comandos;
}
?>
30
PHP e MySQL
No primeiro exemplo, a estrutura vai do primeiro ao ltimo elemento do array, e a
cada iterao o valor corrente do array atribuido a varivel $elemento, e o ponteiro interno
do array avanado. Dessa forma, podemos manipular os valores de $array atravs da
varivel $elemento.Ex:
<?php
$valor = array(1, 2, 3, 4);
foreach($valor as $v){
echo Valor : $v <br>;
}
?>
$a[um] => 1
$a[dois] => 2
$a[tres] => 3
$a[quatro] => 4
31
PHP e MySQL
O resultado ser:
Estrutura switch
Essa estrutura executa um determinado bloco de instrues de acordo com o valor
obtido pela expresso avaliada. Sua sintaxe :
<?php
switch(condicao){
case valor1 : comando1
break;
case valor2 : comando2
break;
case valorn : comandon
break;
default: comando_default
break;
}
?>
32
PHP e MySQL
break;
default : echo escolha uma cor<br>;
break;
}
?>
Caso o valor de $cor seja vermelho, a frase cor vermelha ser escrita na
tela, ento o comando break termina a execuo da estrutura, visto que a condio foi
satisfeita. Em caso contrrio, far a prxima verificao. Se nenhuma das condies for
satisfeita, executar a opo default, escrevendo na tela: escolha uma cor. O uso do
default no obrigatrio no switch, nem mesmo o uso de break, visto que a ltima
verificao a ser feita.
Funes
Funes so blocos de cdigos destinados a executar uma determinada tarefa. A
sintaxe de uma funo :
<?php
function nome_funcao(argumento1, argumento2, argumento_n){
comandos;
}
?>
Qualquer cdigo PHP vlido pode ser colocado dentro de uma funo. Ex:
<?php
function mensagem(){
echo Escreve uma mensagem.<br>;
echo Este um exemplo de funo<br>;
for($i=0;$i<5;$i++){
echo Usando for em uma funo<br>;
echo valor de \$i => $i<br>;
}
}
?>
Aps criarmos uma funo, podemos fazer com que o script a execute com uma
simples chamada. Ex:
<?php
echo pgina web em php<br>;
echo Vamos chamar a funo mensagem()<br>;
mensagem();
echo funo executada com sucesso!!!<br>;
?>
Valor de retorno
Uma funo pode ou no retornar um valor. Para isso necessrio usar o comando
return no final da funo, indicando o valor que ser retornado.Ex:
<?php
function retorna_valor(){
return 10;
33
PHP e MySQL
}
$valor = 3;
echo "\$valor => $valor<br>";
$valor = retorna_valor();
echo "\$valor => $valor<br>";
?>
//varivel inicializada
//valor antes da funcao
//$valor recebe o retorno da funo
//valor depois da funcao
Argumentos ou parmetros
So valores passados funo para serem manipulados pela mesma. A passagem de
parmetros no obrigatria. Os parmetros devem ser declarados entre parnteses, aps
o nome da funo. Os parmetros sero recebidos de acordo com a ordem de passagem e
transformados em variveis locais para que a funo possa utiliz-los. Ex:
<?php
function imprime($parametro){
echo $parametro<br>;
}
$argumento = argumento torna-se parmetro da funo.;
imprime($argumento);
?>
O resultado do script acima ser 5, pois houve uma passagem de parmetro por valor
para a funo soma10(). Neste caso, o valor de $a foi copiado e enviado funo, porm,
o contedo de $a foi mantido pelo PHP. Para que a funo possa alterar o valor de $a, a
varivel deve ser passada por referncia, ou seja, o endereo de memria da varivel deve
ser passado para a funo (afinal, variveis so endereos de memria que armazenam
determinado valor). A passagem por referncia feita utilizando o sinal &. Veja o exemplo
acima utilizando a passagem por referncia:
34
PHP e MySQL
<?php
function soma10(&$num){ //O & antes de $num indica passagem por referncia
$num += 10;
}
$a = 5;
soma10($a);
echo $a;
?>
Outra forma de acessar uma varivel global no PHP recorrendo ao array $GLOBALS.
Este array parte do prprio PHP (uma constante) e registra todas as variveis globais
declaradas no script. Podemos utilizar o array $GLOBALS da seguinte forma:
<?php
$frase = uma frase qualquer...;
function mostra_frase(){
echo $GLOBALS[frase];
}
mostra_frase();
?>
PHP e MySQL
anteriormente, formulrios so utilizados para que o usurio possa enviar informaes
pgina, como seu endereo de e-mail, ou um nome a pesquisar. As informaes so
enviadas pelo formulrio atravs dos mtodos GET ou POST, processadas pelo servidor e
armazenadas em arquivos ou bancos de dados. Muitas vezes, esse processamento retorna
um resultado (Ex: uma pesquisa) que enviado ao usurio. A linguagem HTML no capaz
de manipular essas informaes, exigindo para isso o uso de scripts, como o PHP. Para
compreendermos melhor o funcionamento do PHP no tratamento de formulrios, vamos
construir um exemplo simples. Faremos uma pgina chamada info.html, onde colocaremos
um formulrio que enviar informaes do visitante para o servidor. Faremos tambm um
script PHP que ir receber as informaes enviadas pelo formulrio e far um
processamento simples, retornando uma mensagem ao usurio. O cdigo para o formulrio
mostrado abaixo:
<html>
<head>
<title>informaes do usurio</title>
</head>
<body>
<form action="info.php" method="GET">
<p align="center">Nome: <input type="text" name="nome" size="30"></p>
<p align="center">E-mail: <input type="text" name="mail" size="30"></p>
<p align="center"><input type="submit" value="enviar"></p>
</form>
</body>
</html>
A pgina info.html contm um formulrio que pede ao usurio para que digite seu
nome e seu endereo de e-mail. Note que especificamos na tag <form> o atributo action
como info.php. Este o nome do script que ir processar as informaes enviadas pelo
formulrio. Tambm atruibumos tag method o valor GET, indicando que este ser o
mtodo utilizado para o envido das informaes ao servidor. Se nenhum valor for atribudo a
essa tag, o mtodo GET ser utilizado.
Como vimos anteriormente, o mtodo GET envia informaes ao servidor atravs de
uma cadeia de variveis, indicada logo aps o endereo de destino. Isso impe um limite no
tipo e na quantidade de informaes que podem ser enviadas ao servidor (Ex: no
possvel enviar fotos via mtodo GET), alm de tornar visveis as informaes enviadas,
sendo assim um mtodo pouco seguro de envido de dados.
36
PHP e MySQL
//mostra as informaes na tela
echo <p align='center'>Meu nome $nome</p>;
echo <p align='center'>Meu e-mail $mail</p>;
?>
Isso far com que o formulrio envie as informaes atravs do mtodo POST, em
vez do GET. Agora, basta alterar o script info.php para que possa capturar as informaes
do array $_POST:
<?php
$nome = $_POST['nome'];
$mail = $_POST['mail'];
...
?>
Formatao de dados
Funo htmlspecialchars()
Os dados enviados por formulrios no possuem nenhum tipo de controle ou
formatao, permitindo que ocorram diversos erros e/ou situaes indesejadas. Ex: Voc
cria um web site para seu comrcio e disponibiliza um espao para que os visitantes
comentem sobre seu trabalho. Um belo dia voc encontra entre os recados, um banner da
concorrncia. Isso aconteceu porque no foi implantado nenhum tipo de controle ou
formatao das mensagens, permitindo assim que o visitante adicionasse HTML
37
PHP e MySQL
mensagem. Para evitar esse tipo de transtorno, utilizamos a funo htmlspecialchars, que
converte HTML para texto simples, exibindo-o em forma de texto comum. No caso, o banner
do concorrente apareceria como <img src=http://www.concorrente.com/banner.jpg> . Ex:
<?php
$mensagem = <a href=www.senac.pr.gov.br>SENAC</a>;
echo $mensagem;
//mostra link
$mensagem = htmlspecialchars($mensagem);
echo $mensagem;
//mostra cdigo html
?>
Isso far com que os cdigos hexadecimais sejam removidos, mostrando na tela:
http://localhost/?nome=Jose Silva. Em seguida, a funo urlencode aplicada e o link volta
ao seu estado normal. Isso pode ser til caso o script precise retransmitir o link.
38
PHP e MySQL
O script PHP deve tratar os dois valores como inteiro e double, respectivamente. Para
isso podemso ter o seguinte cdigo:
<?php
$idade = intval($_GET['idade']);
$peso = doubleval($_GET['peso']);
?>
39
PHP e MySQL
Vamos criar a funo que ir validar os campos do formulrio. Essa funo deve ser
escrita no cabealho do cdigo html da pgina do formulrio. Todo o cdigo deve estar
dentro da tag <script>, que indicar que o cdigo javascript dessa forma:
<head>
<script language=Javascript>
function valida(nomeform){
...
}
</script>
...
</head>
Na tag <form>, devemos indicar que o formulrio dever passar pela funo valida
antes de ser enviada para o servidor. Essa condio definida configurando o atributo
onsubmit da seguinte forma:
<form method=POST action=form.php onsubmit=return valida(this)>
O formulrio utilizar o mtodo POST para envio das informaes. o script que ir
tratar as informaes do formulrio o form.php. O atributo onsubmit (ao enviar) desviar
a sada do formulrio para a funo valida. A palavra this indica que ser este formulrio
que ser tratado pela funo. A palavra return indica que a funo retornar um valor (no
caso, booleano). Se a funo retornar falso, o formulrio no ser enviado.
Vamos implementar a funo valida com as devidas validaes a serem feitas. Vamos
comear fazendo com que o formulrio no seja enviado caso o campo nome no tenha
sido preenchido, ou seja, seu valor nulo:
if(formulario.nome.value==)
alert(Nome no foi preenchido);
Se o valor no campo nome do formulrio no possuir nada, uma janela de alerta ser
mostrada na tela com a mensagem Nome no foi preenchido. O formulrio no ser
enviado.
Para descobrir se o usurio digitou o @ no campo de e-mail:
if(formulario.email.value.indexOf('@',0) == -1)
alert(E-mail invlido);
40
PHP e MySQL
}
return true;
Espaos em branco
Em muitos casos, devemos evitar que o usurio envie espaos em branco dentro do
campo (ex: campo de e-mail ou senha). Para remover os espaos em branco, utilizamos a
funo strstr(), que busca a ocorrncia de um caracter dentro de uma string. Ex:
<?php
if(strstr($senha,' ')==TRUE)
echo A senha no pode conter espaos em branco;
?>
A funo strstr buscou por espaos em branco na varivel $senha. Em caso de haver
espaos, uma mensagem de alerta enviada ao usurio (O cdigo tambm pode ser
adaptado para que mostre uma janela de alerta, usando javascript).
Correo automtica
Em muitos casos, especialmente no campo de e-mail, alguns caracteres so digitados
incorretamente, como vrgula no lugar de ponto, espaos antes e depois do @, etc. O script
PHP pode corrigir automaticamente estes erros com a funo str_replace(). Sua sintaxe :
str_replace(caracter_antigo,caracter_novo,string).
Isso far com que toda ocorrncia de hfen dentro da varivel $mail seja substituda
por underline. Se quisermos remover um caracter (ex: espao em branco), basta indicar que
o novo caracter ser 'nada'. Ex:
41
PHP e MySQL
<?php
$mail = str_replace( , ,$mail);
?>
Valores numricos
Para saber se um campo recebeu apenas valores numricos (ex: idade, telefone,
CEP), podemos utilizar a funo is_numeric(). Ela retorna 'verdadeiro' se o campo for
numrico. Ex:
<?php
if(!is_numeric($cep))
echo cep deve conter apenas nmeros;
?>
42
PHP e MySQL
<p>Nome: <input type=text name=nome size=20></p>
<p>E-mail: <input type=text name=email size=20></p>
<p>Estado:
<select name=estado>
<option value=AC>AC</option>
<option value=AL>AL</option>
<option value=AM>AM</option>
<option value=AP>AP</option>
<option value=BA>BA</option>
<option value=CE>CE</option>
<option value=DF>DF</option>
<option value=ES>ES</option>
<option value=GO>GO</option>
<option value=MA>MA</option>
<option value=MG>MG</option>
<option value=MS>MS</option>
<option value=MT>MT</option>
<option value=PA>PA</option>
<option value=PB>PB</option>
<option value=PE>PE</option>
<option value=PI>PI</option>
<option value=PR>PR</option>
<option value=RJ>RJ</option>
<option value=RN>RN</option>
<option value=RO>RO</option>
<option value=RR>RR</option>
<option value=RS>RS</option>
<option value=SC>SC</option>
<option value=SE>SE</option>
<option value=SP>SP</option>
<option value=TO>TO</option>
</select></p>
<p>Login: <input type=text name=login size=20></p>
<p>Senha: <input type=password name=senha1 size=20></p>
<p>Confirma Senha: <input type=password name=senha2 size=20></p>
<p><input type=submit value=enviar name=enviar></p>
</form>
</body>
</html>
43
PHP e MySQL
$email = str_replace(/,,$email);
$email = str_replace(@.,@,$email);
$email = str_replace(.@,@,$email);
$email = str_replace(,,.,$email);
$email = str_replace(;,.,$email);
//varivel que informar a ocorrncia de erros
$erro = 0;
//verifica se foi digitado o nome
if(empty(nome)){
$erro = 1;
$msg = Informe seu nome;
}
//verifica tamanho mnimo do e-mail e se existe @ e ponto.
elseif(strlen($email)<8 || substr_count($email, @)!=1 ||
substr_count($email,.)==0){
$erro = 1;
$msg = E-mail no foi digitado corretamente;
}
//verifica se o estado foi selecionado
elseif(strlen($estado)!=2){
$erro = 1;
$msg = Informe o estado;
}
//verifica o tamanho do login
elseif(strlen(login)<5 || strlen(login)>15){
$erro = 1;
$msg = Login deve ter entre 5 e 15 caracteres;
}
//verifica se a senha contm espaos em branco
elseif(strstr($senha,' ')!=false){
$erro = 1;
$msg = A senha no deve conter espaos em branco;
}
//compara senha1 e senha2
elseif($senha1 != $senha2){
$erro = 1;
$msg = Senhas digitadas no conferem;
}
//se h erro, exibe mensagem:
if($erro){
echo <html><body>;
echo <p align='center'>$msg</p>;
//cria um link 'voltar' usando javascript
echo <p align='center'><a href='javascript:history.back()'>Voltar</a></p>;
echo </body></html>;
}else{
//aqui podemos realizar o tratamento das informaes. Ex: gravando em arquivo
//ou banco de dados
echo <html><body>;
echo <p align='center'>Cadastro Realizado com sucesso!</p>;
echo </body></html>;
}
?>
PHP e MySQL
o preenchimento esteja correto, o script apenas escreve a mensagem Cadastro realizado
com sucesso e finaliza. At ento, este script tem apenas a funo de validao do
formulrio, mas podemos acrescentar funes para o tratamento de formulrios, como a
gravao em arquivos de texto ou bancos de dados.
Arquivos de texto
A soluo mais simples para o tratamento de informaes grav-las em arquivos de
texto. PHP disponibiliza funes para a criao e manipulao de arquivos de texto. A
utilizao de arquivos de texto recomendada quando o volume de informaes pequeno
e no exige um tratamento mais complexo. Ex: podemos utilizar arquivos de texto para criar
contadores de acesso para o site em geral ou para pginas especficas, criao de livros de
visitas, listas de discusso, anncios on-line ou qualquer outra aplicao simples, que no
exija um tratamento mais refinado, como oferecido por sistemas de gerenciamento de
banco de dados (SGBD), como o MySQL por exemplo, que deixaria o acesso ao site mais
lento. Entretanto, no aconselhvel utilizar arquivos de texto para tratar de informaes
sigilosas, como senhas de usurios, devido a limitaes de segurana (arquivos texto podem
ser lidos por qualquer pessoa). Nesses casos aconselhamos o uso de bancos de dados.
Manipulando Arquivos
As quatro operaes bsicas que podemos realizar em um arquivos so abertura,
leitura, escrita e fechamento. PHP oferece diversas funes para o tratamento de arquivos.
Vejamos as principais:
Abertura
Utilizamos a funo fopen() para realizar a abertura de um arquivo. Sua sintaxe :
fopen(nome_arquivo, modo);
45
PHP e MySQL
Modo
Descrio
'r'
'r+'
'w'
'w+'
'a'
'a+'
'x'
Cria e abre arquivo somente para escrita, posiciona ponteiro no incio do arquivo. Se
arquivo existir, retorna falso e gera um erro. Usado apenas em arquivos locais
'x+'
Cria e abre arquivo para leitura e escrita, posiciona ponteiro no incio do arquivo. Se
arquivo existir, retorna falso e gera um erro. Usado apenas em arquivos locais
Fechamento
Para fechar um arquivo, devemos usar a funo fclose() da seguinte forma:
fclose(ponteiro);
Leitura
A leitura de um arquivo pode ser feita utilizando-se a funo fread(), que possui a
seguinte sintaxe:
fread(arquivo,tamanho);
onde arquivo o nome do arquivo que deve ser lido e tamanho o tamanho em bytes que
46
PHP e MySQL
deve ser lido. Ex:
<?php
$arq = fopen('texto.txt', 'r');
$conteudo = fread($arq,4096);
echo $conteudo;
fclose($arq);
?>
O arquivo 'comentario.txt' foi aberto pela funo, que armazenou seu contedo na
varivel $texto e logo depois o fechou.
Outra alternativa seria o uso da funo readfile(). Ela abre o arquivo, exibe seu
contedo e o fecha, dispensando o uso de qualquer outra funo extra. Ex:
<?php
$texto = readfile(comentario.txt);
?>
Esse simples exemplo abre o arquivo comentario.txt, exibe seu contedo e o fecha.
Para ler apenas uma linha do arquivo, usamos a funo fgets(). Essa funo tambm
recebe um tamanho como parmetro, porm ela ir ler o arquivo at que o tamanho
informado seja alcanado ou at alcanar o final da linha. Ex:
<?php
$arq = fopen(comentario.txt, r);
$linha = fgets($arq,2048);
echo $linha;
fclose($arq);
?>
47
PHP e MySQL
No exemplo acima, uma atribuio feita dentro do while, onde a funo fgetc l um
caracter do arquivo e armazena na varivel $char, que exibida com echo. Em seguida o
prximo caracter lido e assim at que no haja mais caracteres a serem lidos (retorna
false). Ento, o arquivo fechado.
Existem casos em que o arquivo possui tag's html e php em seu contedo e elas
devem ser removidas para que o arquivo possa ser exibido ao usurio. Para eliminar essas
tag's, usamos a funo fgetss(), que possui a mesma sintaxe de fgets(), com a diferena de
eliminar tags do contedo. Ex: O arquivo texto.txt possui o seguinte contedo:
exemplo de <b>negrito</b> e </i> itlico</i>
O resultado seria:
exemplo de negrito e itlico
Podemos tambm atribuir cada linha de um arquivo a uma posio de um array, para
que seu contedo seja exibido atravs de um lao for ou foreach. Para isso, utilizamos a
funo file(), que armazena cada linha do arquivo em uma posio do vetor. Ex:
<?php
$vetor = file(comentario.txt);
foreach( $vetor as $v)
echo $v<br>;
?>
Escrita
Para escrever dados em um arquivo, utilizamos a funo fwrite. Seus parmetros so
o ponteiro do arquivo que deve receber os dados e a string que ser gravada no arquivo:
fwrite(ponteiro,string);
a string informada ser gravada no arquivo especificado pelo seu ponteiro. Ex:
<?php
$conteudo = Um pequeno exemplo de contedo que pode ser gravado em um arquivo;
$arq = fopen(exemplo.txt,w);
fwrite($arq,$conteudo);
fclose($arq);
?>
PHP e MySQL
Como foi visto anteriormente, podemos utilizar arquivos de texto para guardar
pequenas informaes e criar pequenas aplicaes, como contadores de acesso, livros de
visitas, mural de recados, entre outras. Entretanto, algumas aplicaes exigem um
gerenciamento mais completo das informaes, alm de uma maior segurana e
organizao, como um cadastro de clientes.
MySQL e PHP
Como dito anteriormente, informaes que precisam ser manipuladas com mais
segurana e flexibilidade exigem o uso de um banco de dados. Esse banco de dados exige
um sistema de gerenciamento (SGBD Sistema de Gerenciamento de Banco de Dados).
Existem muitos SGBD's disponveis no mercado, de forma gratuita ou atravs de pagamento
de licenas. Entre eles, est o MySQL, um sistema desenvolvido pela Sun Microsystems que
roda nativamente no PHP.
A linguagem PHP suporta diversos SGBD's como Oracle, Sybase, Interbase(Firebird),
mSQL, Microsoft SQL Server, MSSQL, MySQL, PostgreSQL, entre outros. Entretanto, o
MySQL, como SGBD nativo do PHP, no exige instalao de nenhum recurso adicional
(driver, extenso, etc), bastando apenas que o sistema esteja funcionando no servidor.
49
PHP e MySQL
Acessando MySQL
Podemos acessar o MySQL atravs do terminal utilizando o comando mysql. Sua
sintaxe :
prompt> mysql -u root -h localhost -p
Isso indica que o login foi efetuado e que voc se encontra agora dentro do MySQL.
Comandos sql
A linguagem sql (Struct Query Language) uma linguagem padro para a
manipulao de dados dentro de um SGBD. Desenvolvida pela IBM, possibilita o
armazenamento, organizao, atualizao e excluso de informaes dentro do banco de
dados.
A linguagem sql dividida em duas: Linguagem de Definio de Dados (DDL) e
Linguagem de Manipulao de Dados (DML). As DDL's so utilizadas para montar o banco
de dados e suas tabelas, enquanto as DML's so utilizadas para manipular os dados contidos
no banco.
Comando create
Este comando utilizado para criar novos bancos de dados ou tabelas. Sua sintaxe :
create database nome_do_banco ; //cria um novo banco de dados
create table nome_da_tabela(atributos); //cria uma nova tabela
50
PHP e MySQL
Ex: Vamos criar um novo banco de dados:
mysql> create database exemplo;
Query OK, 1 row affected (0.00 sec)
A linha abaixo do comando indica que a Query (comando SQL) executou com
sucesso, afetando uma linha, levando 0,00 segundos para ser executado.
Agora vamos informar ao MySQL que pretendemos utilizar este banco de dados Isso
feito atravs do comando use:
mysql> use exemplo;
Database changed
O MySQL mostrar uma pequena tabela com a relao dos bancos de dados
existentes no servidor.
Para uma melhor demonstrao, vamos criar uma tabela chamada Aluno. Essa tabela
ir armazenar os dados dos alunos de um curso on-line. Os atributos dessa tabela sero:
Nome do aluno, E-mail, data de nascimento, e sua matrcula. Cada um dos atributos
descrito ser uma coluna da tabela Aluno. Assim como as variveis, atributos de uma tabela
tambm possuem um tipo de dados que poder armazenar. Os tipos de cada atributo devem
ser informados no momento da criao da tabela, mas podem ser alterados posteriormente
(como veremos mais adiante). Os tipos de dados mais importantes so descritos na tabela
abaixo:
atributo
tipo
char
varchar
int
nmeros inteiros
float, double
date
not null
auto_increment
51
PHP e MySQL
primary key
foreign key
indica que o atributo uma chave estrangeira (chave primria de outra tabela)
text
Atributos definidos como varchar podem ocupar menos espao fsico no servidor,
visto que seu tamanho pode variar de acordo com o valor informado. Ex: um campo varchar
de 30 caracteres pode ter o tamanho mximo de 30 caracteres, mas se for informado um
valor menor, o campo se adaptar ao valor indicado, desde que no exceda o valor mximo
indicado. Ao contrrio, atributos do tipo char tem o tamanho fixo. O uso do atributo varchar
torna a tabela mais lenta em suas operaes.
Campos definidos como not null obrigatoriamente devem receber um valor. Em geral,
definido um valor padro atravs do parmetro 'default', que define um valor padro para
o campo.
Criando tabelas
Para a tabela aluno de nosso exemplo, teremos os atributos matricula, nome, email e
data de nascimento. Os atributos nome e e-mail sero do tipo varchar de 40 caracteres.
Data de nascimento ser do tipo date e a matrcula ser uma chave primria do tipo inteiro.
O uso de chaves primrias no obrigatrio no MySQL, mas muito til para aplicaes,
como o exemplo anterior. Para montar essa estrutura, o comando create ficar dessa forma:
mysql>
->
->
->
52
PHP e MySQL
-> dataNasc date
-> );
Query OK, 0 rows affected (0.02 sec)
Note que cada linha termina com uma vrgula, exceto a ltima linha que antecede o
sinal );. Ele indica o fim dos parmetros do comando create. Tudo o que estiver entre
estes parnteses far parte da estrutura da tabela aluno.
O comando show pode mostrar as tabelas dentro do banco de dados:
mysql> show tables;
+-------------------+
| Tables_in_exemplo |
+-------------------+
| aluno
|
+-------------------+
1 row in set (0.00 sec)
Para averiguar a estrutura da tabela, podemos utilizar o comando desc, que fornecer
uma descrio da tabela:
mysql> desc aluno;
+-----------+-------------+------+-----+---------+----------------+
| Field
| Type
| Null | Key | Default | Extra
|
+-----------+-------------+------+-----+---------+----------------+
| matricula | int(11)
| NO
| PRI | NULL
| auto_increment |
| nome
| varchar(40) | NO
|
|
|
|
| email
| varchar(40) | YES |
| NULL
|
|
| dataNasc | date
| YES |
| NULL
|
|
+-----------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
Comando insert
Utilizamos esse comando para inserir dados em uma tabela. Para cadastrarmos um
aluno, utilizamos insert e informamos os valores na ordem em que as colunas foram
definidas. Para cadastrar um aluno, devemos informar a matrcula, nome, e-mail e data de
nascimento nessa ordem, pois como se encontra na tabela. Ex:
mysql> insert into aluno values(null,'Z da feira','feira@localhost','1974-1217'); Query OK, 1 row affected (0.00 sec)
O comando acima insere um novo registro na tabela aluno, informando seu nome, email e data de nascimento. Note que o parmetro relativo sua chave primria foi definido
como null. Isso far com que o MySQL numere automaticamente o campo. Por ser o
primeiro registro da tabela, ter a matrcula nmero 1.
Existem casos em que a insero de dados em uma tabela ocorre apenas em alguns
campos especficos. Podemos informar os campos que sero preenchidos, lembrando que
todos os campos que so do tipo NOT NULL devem receber um valor obrigatoriamente.
Em nosso exemplo, a tabela aluno deve receber obrigatoriamente os valores
matricula e nome:
mysql> insert into aluno(matricula,nome) values (null,'maria bonita');
Query OK, 1 row affected (0.01 sec)
PHP e MySQL
+-----------+--------------+-----------------+------------+
| matricula | nome
| email
| dataNasc
|
+-----------+--------------+-----------------+------------+
|
1 | Z da feira | feira@localhost | 1974-12-17 |
|
2 | maria bonita | NULL
| NULL
|
+-----------+--------------+-----------------+------------+
Clusula where
A clusula where adicionada quando queremos que o comando seja executado
dentro de uma condio. Essa condio pode ser uma comparao entre valores, uma
ocorrncia especial, etc. Podemos utilizar o where dentro dos comandos insert, update,
drop, etc. Veremos o where sendo utilizado no comando update:
Comando update
O comando update utilizado para atualizar um registro da tabela. Caso a clusula
where no seja informada, todos os registros da tabela sero atualizados com o valor
informado:
mysql> update aluno set email='bonita@localhost' where matricula = 2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
54
PHP e MySQL
+-----------+--------------+------+-----+---------+----------------+
| Field
| Type
| Null | Key | Default | Extra
|
+-----------+--------------+------+-----+---------+----------------+
| matricula | int(11)
| NO
| PRI | NULL
| auto_increment |
| nome
| varchar(40) | NO
|
|
|
|
| email
| varchar(40) | YES |
| NULL
|
|
| dataNasc | date
| YES |
| NULL
|
|
| cidade
| varchar(100) | YES |
| NULL
|
|
+-----------+--------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)
Comando delete
Utilizado para excluir um registro da tabela. Se aplicado sem a clusula where,
elimina todos os registros da tabela:
mysql> delete from aluno where matricula=2;
Query OK, 1 row affected (0.00 sec)
Resultado:
+-----------+--------------+-----------------+------------+
| matricula | nome
| email
| dataNasc
|
+-----------+--------------+-----------------+------------+
|
1 | Z da feira | feira@localhost | 1974-12-17 |
+-----------+--------------+-----------------+------------+
Comando select
Utilizado para realizar pesquisas dentro de uma tabela. Considerado um comando
complexo devido a grande gama de combinaes possveis para a realizao da pesquisa.
Para auxiliar na compreenso do comando select, alguns registros foram adicionados
tabela aluno. Para pesquisarmos todos os registros dentro de uma tabela, a sintaxe :
mysql> select * from aluno;
+-----------+--------------------+------------------------+------------+
| matricula | nome
| email
| dataNasc
|
+-----------+--------------------+------------------------+------------+
|
1 | Z da Feira
| feira@localhost
| 1973-12-17 |
|
2 | Maria Bonita
| bonita@localhost
| 1945-05-24 |
|
3 | Virgulino Ferreira | lampiao@localhost
| 1947-06-19 |
|
4 | Getlio Vargas
| vargas@localhost
| 1910-04-12 |
|
5 | Raul Seixas
| malucobeleza@localhost | 1957-06-28 |
55
PHP e MySQL
+-----------+--------------------+------------------------+------------+
5 rows in set (0.00 sec)
O sinal ' * ' diz para o comando select buscar todos os valores da tabela. Podemos
especificar uma ou mais colunas para que a pesquisa seja realizada:
mysql> select nome,email from aluno;
+--------------------+------------------------+
| nome
| email
|
+--------------------+------------------------+
| Z da Feira
| feira@localhost
|
| Maria Bonita
| bonita@localhost
|
| Virgulino Ferreira | lampiao@localhost
|
| Getlio Vargas
| vargas@localhost
|
| Raul Seixas
| malucobeleza@localhost |
+--------------------+------------------------+
5 rows in set (0.00 sec)
Nesse caso, a busca foi feita nas colunas matricula e nome, nos registros cujo
nmero de matrcula igual a 3. Podemos tambm ordenar os valores da pesquisa usando a
clusula order by:
mysql> select matricula,nome,dataNasc from aluno order by nome;
+-----------+--------------------+------------+
| matricula | nome
| dataNasc
|
+-----------+--------------------+------------+
|
4 | Getlio Vargas
| 1910-04-12 |
|
2 | Maria Bonita
| 1945-05-24 |
|
5 | Raul Seixas
| 1957-06-28 |
|
3 | Virgulino Ferreira | 1947-06-19 |
|
1 | Z da Feira
| 1973-12-17 |
+-----------+--------------------+------------+
5 rows in set (0.00 sec)
Note que os registros pesquisados foram ordenados pelo nome. Podemos tambm
ordenar pela data. Independente da coluna utilizada, a ordenao pode ser ascendente
(asc) ou descendente (desc):
mysql> select matricula,nome,dataNasc from aluno order by dataNasc asc;
56
PHP e MySQL
+-----------+--------------------+------------+
| matricula | nome
| dataNasc
|
+-----------+--------------------+------------+
|
4 | Getlio Vargas
| 1910-04-12 |
|
2 | Maria Bonita
| 1945-05-24 |
|
3 | Virgulino Ferreira | 1947-06-19 |
|
5 | Raul Seixas
| 1957-06-28 |
|
1 | Z da Feira
| 1973-12-17 |
+-----------+--------------------+------------+
5 rows in set (0.00 sec)
Os trs novos registros tm em comum o nome 'Paulo'. Vamos agora realizar uma
pesquisa entre os alunos que possuem 'Paulo' no nome:
mysql> select matricula, nome, dataNasc from aluno where nome like '%paulo%';
+-----------+-------------------+------------+
| matricula | nome
| dataNasc
|
+-----------+-------------------+------------+
|
6 | Paulo Ricardo
| 1960-04-09 |
|
7 | Paulo Roberto
| 1982-07-17 |
|
8 | Pedro Paulo Diniz | 1979-06-10 |
+-----------+-------------------+------------+
3 rows in set (0.00 sec)
Como o sinal ' % ' foi indicado antes e depois do nome 'paulo', qualquer valor antes
ou depois do nome foi ignorado. Se for informado apenas depois do nome, apenas os dois
primeiros registros sero listados:
57
PHP e MySQL
mysql> select matricula, nome, dataNasc from aluno where nome like 'paulo%';
mysql> select matricula, nome, dataNasc from aluno where nome like 'paulo%';
+-----------+---------------+------------+
| matricula | nome
| dataNasc
|
+-----------+---------------+------------+
|
6 | Paulo Ricardo | 1960-04-09 |
|
7 | Paulo Roberto | 1982-07-17 |
+-----------+---------------+------------+
2 rows in set (0.00 sec)
Chaves estrangeiras
O uso de chaves estrangeiras til para melhor organizao dos dados, evitando
redundncia e facilitando buscas. Ex: Agora, cada aluno deve informar o estado em que
mora. Vamos ento criar uma tabela, onde cadastraremos os estados e relacionaremos cada
estado com um aluno, utilizando chaves estrangeiras:
mysql> create table estado(
-> uf char(2) not null primary key,
-> estado varchar(40) not null
-> );
Query OK, 0 rows affected (0.01 sec)
O comando acima cria uma tabela estado com os campos UF e estado. Note que UF
uma chave primria, visto que cada estado possui sua prpria sigla. Vamos cadastrar
apenas alguns estados nessa tabela:
mysql> insert into estado values('MG','Minas Gerais');
Query OK, 1 row affected (0.00 sec)
mysql> insert into estado values('BA','Bahia');
Query OK, 1 row affected (0.00 sec)
mysql> insert into estado values('PR','Paran');
Query OK, 1 row affected (0.00 sec)
mysql> insert into estado values('CE','Cear');
Query OK, 1 row affected (0.00 sec)
mysql> insert into estado values('RS','Rio Grande do Sul');
Query OK, 1 row affected (0.00 sec)
Tipos de tabelas
As tabelas do MySQL possuem tipos. O tipo padro de tabela MyISAM. Todas as
tabelas so criadas dessa forma. um tipo de tabela mais rpido, mas que no permite
relacionamentos atravs de chaves estrangeiras. Para que este relacionamento possa ser
utilizado, i tipo da tabela deve ser innoDB, que um tipo mais lento, mas que trabalha com
chaves estrangeiras. O tipo da tabela pode ser informado no momento da criao da tabela,
utilizando a clusula engine no final dos atributos:
mysql> create table estado(
-> uf char(2) not null primary key,
-> estado varchar(40) not null
-> )engine=innodb;
PHP e MySQL
mysql> alter table aluno engine=innodb;
Query OK, 8 rows affected (0.15 sec)
Records: 8 Duplicates: 0 Warnings: 0
mysql> alter table estado engine=innodb;
Query OK, 5 rows affected (0.05 sec)
Records: 5 Duplicates: 0 Warnings: 0
Agora, vamos alterar a tabela aluno, adicionando o campo estado, onde colocaremos
apenas a chave primria que identifica cada estado (nesse caso, uf). Para isso, a nova
coluna deve ser ajustada com a clusula foreign key.
Primeiramente, vamos criar a coluna estado na tabela aluno:
mysql> alter table aluno add estado char(2);
Query OK, 8 rows affected (0.09 sec)
Records: 8 Duplicates: 0 Warnings: 0
Agora, vamos defini-la como chave estrangeira que referencia a coluna uf da tabela
estado:
mysql> alter table aluno add foreign key(estado) references estado(uf);
Query OK, 8 rows affected (0.14 sec)
Records: 8 Duplicates: 0 Warnings: 0
O aluno com o nmero de matrcula igual a 1 teve seu estado alterado para PR.
Vamos atualizar os demais:
mysql> update aluno set estado='CE' where matricula=2;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update aluno set estado='CE' where matricula=3;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update aluno set estado='RS' where matricula=4;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update aluno set estado='BA' where matricula=5;
Query OK, 1 row affected (0.02 sec)
59
PHP e MySQL
Rows matched: 1
Changed: 1
Warnings: 0
Relacionando tabelas
Agora que temos a chave estrangeira definida, podemos listar o nome do estado ao
qual pertence cada aluno, referenciando a chave estrangeira da tabela. Ex: Vamos
selecionar todos os alunos de Minas Gerais:
mysql> select aluno.nome, estado.estado from aluno, estado where estado.uf =
aluno.estado and estado.uf='MG';
+-------------------+--------------+
| nome
| estado
|
+-------------------+--------------+
| Paulo Roberto
| Minas Gerais |
| Pedro Paulo Diniz | Minas Gerais |
+-------------------+--------------+
2 rows in set (0.05 sec)
A pesquisa utiliza um select que busca informaes nas duas tabelas (aluno e
estado), obtendo valor da coluna nome da tabela aluno (aluno.nome) e o valor do campo
estado da tabela estado (estado.estado). O segredo est na condio where: A pesquisa
retornar os resultados em que o campo estado da tabela aluno seja igual ao campo estado
da tabela estado (aluno.estado = estado.uf) e a UF do estado seja MG (estado.uf = MG).
Dessa forma no precisamos armazenar os nomes dos estados mais de uma vez.
Caso haja uma mudana no nome dos estados, essa informao facilmente atualizada.
PHP e MySQL
(tabelas) podem ser relacionados de trs formas:
1. Um para um: Ocorre quando cada elemento da primeira tabela est relacionado com
apenas um elemento da segunda tabela. ex: Um livro somente pode ser publicado
por uma editora, portanto, a relao entre livro e editora de um para um;
2. Um para muitos (muitos para um): Ocorre quando um elemento da primeira tabela
est relacionado a mais de um elemento da segunda tabela. Ex: Um funcionrio
trabalha apenas em uma empresa, porm, uma empresa pode ter vrios
funcionrios. O relacionamento entre funcionrio e empresa de muitos para um
(um para muitos);
3. Muitos para muitos: Ocorre quando muitos elementos da primeira tabela se
relacionam com muitos elementos da segunda tabela. o caso de nosso exemplo,
pois um aluno pode realizar mais de um curso ao mesmo tempo, enquanto uma
turma, obrigatoriamente possui muitos alunos. A relao entre aluno e turma de
muitos para muitos.
No banco de dados, as relaes de um para muitos so resolvidas com chaves
estrangeiras. A tabela que ter seus atributos repetidos recebe uma chave primria e a
fornece como identificador para a outra tabela, como chave estrangeira.
Os casos de relacionamento de muitos para muitos no so to facilmente
representados, exigindo a criao de uma terceira tabela, que relacionar as duas tabelas
onde ocorrem esse relacionamento. Ex: Poderamos criar uma tabela, onde cadastraramos
os cursos oferecidos pela instituio. Um curso deve ter mais de um aluno e um aluno pode
fazer mais de um curso. Neste caso, h um relacionamento de muitos para muitos, onde h
a necessidade da criao de uma tabela intermediria, para que possa haver um
relacionamento entre os alunos matriculados e os respectivos cursos que freqentam. Essa
tabela poderia conter apenas as chaves primrias das tabelas aluno e curso, realizando
assim o relacionamento entre ambos.
Sistema de privilgios
Podemos dizer que, para que um usurio possa realizar qualquer operao dentro de
um banco de dados, necessrio que ele tenha permisso (privilgio) para isso. Cada
operao (insert, update, delete, drop,...) uma operao diferente e o usurio precisa ter
permisso para execut-las. O MySQL (assim como outros SGBD's) permite que
gerenciemos esses privilgios, escolhendo assim quais operaes podero ser realizadas
61
PHP e MySQL
pelo novo usurio. Podemos tambm determinar os bancos de dados, tabelas e at as
colunas em que esse usurio poder atuar.
Note que podemos configurar uma senha de acesso para o novo usurio utilizando
esse comando. Ex: Vamos criar um usurio que ter todos os privilgios sobre o banco de
dados projeto:
grant all privileges on projeto.* to testes@localhost identified by 'senha123';
O parmetro all privileges indica que o usurio ter todos os privilgios concedidos.
projeto.* indica que estes privilgios sero concedidos para serem utilizados no banco de
dados projeto, em qualquer tabela pertencente a este banco. testes@localhost indica que o
nome do novo usurio testes, e que o mesmo tem acesso apenas ao servidor localhost. Se
informssemos o smbolo '%' no lugar de localhost, indicaramos que o usurio testes teria
acesso a qualquer servidor em que o MySQL atua. Em identified by 'senha123',
configuramos a senha de acesso para esse usurio.
Caso queiramos revogar os privilgios do usurio, utilizaremos o comando revoke:
revoke all privileges to testes@localhost;
Isso faz com que o usurio testes possua apenas os privilgios citados. Alm disso,
nosso usurio ter acesso apenas ao banco de dados projeto.
62
PHP e MySQL
Conexo
Para conectarmos ao MySQL, utilizamos a funo mysql_connect(), que possui a
seguinte sintaxe:
mysql_connect(servidor,usuario,senha);
servidor: endereo do servidor do banco de dados (caso seja sua prpria mquina,
o endereo localhost ou 127.0.0.1);
usuario: nome de usurio utilizado para acessar o banco de dados;
senha: senha do usurio que far a conexo;
Esse comando retorna um identificador para a conexo (ponteiro) em caso de
sucesso, ou false em caso de falha. Este ponteiro pode ser armazenado dentro de uma
varivel PHP para utilizao posterior (ex: para fechar a conexo).
Ex: para nos conectarmos ao banco de dados projeto como usurio testes:
$con = mysql_connect('localhost','testes','senha123');
Voc tambm pode armazenar a query em uma varivel e us-la como parmetro
para a funo mysql_query(). Isso muito til em casos em que necessrio a criao de
query's dinmicas. Ex: Se o usurio pede para que o resultado da busca na tabela clientes
seja ordenado pelo nome dos clientes:
$query = select * from cliente;
63
PHP e MySQL
if($ordenar==true)
$query .= order by nome;
$query .= ;;
$busca = mysql_query(query);
Em alguns casos, queremos executar alteraes nos registros da tabela (ex: alterar o
endereo de um cliente ou exclu-lo) e precisamos saber quantos registros foram afetados
com a execuo da query. Para isso, utilizamos a funo mysql_affected_rows(), que retorna
o nmero de registros afetados pela execuo da query. Ex: Vamos atualizar o estado dos
clientes para 'SC':
$query = " update cliente set estado='SC' ; ";
$alt = mysql_query($query);
$num_alt = mysql_affected_rows($con)or die("nao mostrou linhas afetadas");
echo "$num_alt linhas afetadas<br>";
PHP e MySQL
Aps obtermos o nmero de linhas retornadas, podemos formatar os dados para
exibio. Para isso, devemos organizar os dados obtidos na pesquisa que esto dentro da
varivel $busca. Para realizar esta tarefa, podemos utilizar 3 funes diferentes:
A primeira a funo mysql_fetch_row(), que recebe a varivel que contm o
resultado da pesquisa e retorna o resultado em forma de linha. Para acessar os dados,
devemos informar o nmero da linha correspondente. Ex:
$busca = mysql_query("select * from cliente")or die("no faz pesquisa");
$num_busca = mysql_num_rows($busca)or die("no retorna num. de buscas feitas");
for($i=0;$i<$num_busca;$i++){
$resultado = mysql_fetch_row($busca);
echo $resultado[0];
echo $resultado[1];
echo $resultado[2];
echo $resultado[3].<br>";
}
Isso permite que os dados sejam acessados conforme o nome das colunas da tabela.
A terceira forma de organizao dos dados utilizando a funo
mysql_fetch_object(), que retorna o resultado como um objeto (O conceito de orientao a
objetos ser visto mais adiante).:
for($i=0;$i<$num_busca;$i++){
$resultado = mysql_fetch_object($busca);
echo $resultado->id;
echo $resultado->nome;
echo $resultado->email;
echo $resultado->estado."<br>";
}
Fechando a conexo
A funo responsvel pelo fechamento da conexo com o banco de dados
mysql_close(). Essa funo recebe o ponteiro da conexo como parmetro. Ex:
mysql_close($con);
PHP e MySQL
reduz o nmero de conexes ativas no servidor. Bancos de dados em geral aceitam um
nmero limitado de conexes simultneas. A utilizao da funo mysql_close() libera
recursos do servidor para novas conexes, permitindo maior eficincia da aplicao.
Salve-o como mysqlconfig.inc (inc de include). Esse script ser chamado toda vez que
precisarmos nos conectar ao banco de dados.
66
PHP e MySQL
Mdulo de cadastro
Agora que temos o banco de dados devidamente montado e configurado, vamos criar
a primeira parte da aplicao. Precisaremos de um formulrio HTML para que o usurio
possa digitar os dados:
<html>
<head>
<title>Cadastro</title>
</head>
<body>
<form method="POST" action="cadastrar.php">
<p align="center">Nome: <input name="nome" type="text"></p>
<p align="center">E-mail: <input name="email" type="text"></p>
<p align="center">Estado (UF): <input name="estado" size="2" type="text"></p>
<p align="center"><input value="salvar" type="submit"></p>
</form>
</body>
</html>
O script exibir uma mensagem, caso o cadastro seja efetuado com sucesso.
Mdulo de excluso
Este mdulo muito simples. Criaremos um formulrio, onde informaremos o cdigo
do cliente a ser excludo e um script que exclui este cliente. Vamos comear pelo formulrio:
<html>
<head>
67
PHP e MySQL
<title>Excluir</title>
</head>
<body>
<form method="POST" action="excluir.php">
<p align="center">Cdigo: <input type="text" name="id" size="3"></p>
<p align="center"><input type="submit" value="Excluir">
</form>
</body>
</html>
Salve-o como excluir.html. Agora, vamos criar os script que ir realizar a excluso do
usurio:
<?php
//captura id do formulrio
$id = $_POST['id'];
//converte formato para inteiro
$id = intval($id);
//realiza a conexo com o banco de dados
include("mysqlconfig.inc");
//monta a query de excluso
$query = "delete from cliente where id='$id'; ";
//executa a query
$res = mysql_query($query);
//conta o nmero de registros afetados
$num_exclui = mysql_affected_rows($res);
//caso um registro tenha sido excludo, exibe mensagem
if($num_exclui == 1)
echo "Cliente excludo com sucesso<br>";
//link para a pgina anterior
echo "< a href='javascript:history.back()'>voltar</a>";
//fecha a conexo
mysql_close($con);
?>
<?php
//conecta-se ao banco de dados
include("mysqlconfig.inc");
//monta a query de busca
68
PHP e MySQL
$query = "select * from cliente; ";
//executa a query
$res = mysql_query($query);
//conta o nmero de registros encontrados na pesquisa
$num_reg = mysql_num_rows($res);
//monta uma tabela para organizar os dados
echo "<table border='0' cellpadding='1' cellspacing='1'> ";
//cria um for para a exibio dos dados
for($i=0;$i<$num_reg;$i++){
//formata resultado para exibio
$mostra = mysql_fetch_array($res);
echo "<tr>";
//exibe os resultados
echo "<td> $mostra['id'] </td>";
echo "<td> $mostra['nome'] </td>";
echo "<td> $mostra['email'] </td>";
echo "<td> $mostra['estado'] </td>";
echo "</tr>";
}
//encerra a tabela
echo "</table>";
//informa a quantidade de registros encontrados
echo $num_reg encontrados<br>;
//encerra a conexo
mysql_close($con);
?>
Esse script monta uma tabela e exibe todos os registros encontrados na tabela
cliente.
PHP e MySQL
query de pesquisa do script buscar.php, que ir listar todos os clientes registrados no banco
com o nome igual ou idntico ao informado:
<?php
//captura o nome informado no formulrio
$nome = $_POST['nome'];
//conecta-se ao banco de dados
include("mysqlconfig.inc");
//monta a query de busca, inserindo o nome como parmetro
$query = "select * from cliente where nome like'%'$nome'%'; ";
//executa a query
$res = mysql_query($query);
//conta o nmero de registros encontrados na pesquisa
$num_reg = mysql_num_rows($res);
//monta uma tabela para organizar os dados
echo "<table border='0' cellpadding='1' cellspacing='1'> ";
//cria um for para a exibio dos dados
for($i=0;$i<$num_reg;$i++){
//formata resultado para exibio
$mostra = mysql_fetch_array($res);
echo "<tr>";
//exibe os resultados
echo "<td> $mostra['id'] </td>";
echo "<td> $mostra['nome'] </td>";
echo "<td> $mostra['email'] </td>";
echo "<td> $mostra['estado'] </td>";
echo "</tr>";
}
//encerra a tabela
echo "</table>";
//encerra a conexo
mysql_close($con);
?>
Mdulo de alterao
O mdulo de alterao exige que seja dividido em 3 partes: Na primeira parte, um
formulrio html, onde informaremos o cdigo (id) do cliente que ser alterado. Na segunda
parte, um script PHP que exibe as informaes do cliente e um boto de confirmao. Na
terceira parte, o script que executa a alterao dos dados do cliente. Vamos comear com o
formulrio html, onde o usurio informar o id do cliente a ser alterado:
70
PHP e MySQL
<html>
<head>
<title>Alterar</title>
</head>
<body>
<form method="POST" action="exibir.php">
<p align="center">Nome: <input type="text" name="id" size="3"></p>
<p align="center"><input type="submit" value="Exibir">
</form>
</body>
</html>
O cdigo informado neste formulrio ser enviado para o script exibir.php, que ir
mostrar os dados do cliente. Ele conter um formulrio idntico ao de cadastro, porm, o
atributo value das tag's far com que os valores j existentes sejam mostrados dentro dos
campos:
<?php
//captura o cdigo informado no formulrio
$id = $_POST['id'];
//conecta-se ao banco de dados
include("mysqlconfig.inc");
//monta a query de busca, inserindo o id como parmetro
$query = "select * from cliente where id='$id'; ";
//executa a query
$res = mysql_query($query);
//formata resultado para exibio
$mostra = mysql_fetch_array($res);
//monta o formulrio para exibio, que leva os dados
//para o script de gravao
echo "<form method='POST' action='salvar.php'>";
//exibe os resultados. O html ser exibido fora do PHP
?>
<p align='center'>Cdigo:
<?php echo $mostra['id'] ?>
</p>
<p align='center'>Nome:
<input type='text' name='nome' value='<?php echo $mostra['nome']; ?> '>
</p>
<p align='center'>E-mail:
<input type='text' name='email' value='<?php echo $mostra['email']; ?> '>
</p>
<p align='center'>Estado:
71
PHP e MySQL
<input type='text' name='estado' value='<?php echo $mostra['estado']; ?>'
size='2'>
</p>
<p align='center'>
<input type='submit' value='Salvar'>
</p>
</form>
<?php
//encerra a conexo
mysql_close($con);
?>
Os dados do cliente so exibidos dentro das tag's do formulrio (com exceo do id,
que deve permanecer o mesmo). Este mesmo formulrio que est exibindo as informaes
do cliente est direcionado para um script chamado salvar.php. Podemos fazer as
alteraes necessrias nos dados que esto sendo exibidos neste script e ento, quando
clicarmos no boto Salvar, os novos dados (e os antigos, isto , que no foram alterados)
sero enviados para o script salvar.php, que ir realizar a efetiva gravao dos dados:
<?php
//captura o cdigo informado no formulrio
$id = $_POST['id'];
$nome = $_POST['nome'];
$email = $_POST['email'];
$estado = $_POST['estado'];
//converte para inteiro
$id = (integer) $id;
//conecta-se ao banco de dados
include("mysqlconfig.inc");
//monta a query de alterao
$query = "update cliente set nome='$nome', email='$email', estado='$estado'
where id='$id'; ";
//executa a query
$res = mysql_query($query);
//conta o nmero de colunas alteradas. Se for 1, a alterao foi efetuada com
sucesso
$num_alt = mysql_affected_rows($res);
if($num_alt == 1)
echo "Alterao efetuada com sucesso!!!<br>";
//encerra a conexo
mysql_close($con);
?>
Note que, conforme foi especificado na query, os dados sero alterados enquanto o
id do cliente for igual ao id fornecido, ou seja, isso garante que apenas o cliente em questo
ter seus dados alterados.
72
PHP e MySQL
Este cookie agora est gravado na mquina do usurio, e contm uma string com a
data atual. Todos os cookies podem ser acessados atravs do array superglobal $_COOKIE[]
da seguinte forma:
$datadehoje = $_COOKIE['datadehoje'];
Para que um cookie seja excludo, basta utilizar novamente a funo setcookie(),
porm sem nenhum valor como contedo:
setcookie(datadehoje);
Isso far com que o cookie seja apagado. O uso de cookies pode parecer uma boa
prtica a princpio, mas em muitos casos, os usurios configuram os navegadores para no
aceitarem cookies, o que dificulta a implementao dos mesmos.
Sesses
Uma alternativa ao uso de cookies o uso de sesses. Seu uso idntico ao dos
cookies, porm, os dados no ficam gravados no computador do usurio. Qualquer
navegador aceita sesso, por isso torna-se uma boa prtica criar autenticao utilizando
seses. Para criar uma sesso, devemos adicionar em nossos scripts PHP a funo
session_start(). Recomenda-se que ela esteja nas primeiras linhas do script, antes de
qualquer processamento:
<?php
session_start();
?>
Para registrar uma sesso, podemos inserir dados diretamente no array superglobal
$_SESSION[], da seguinte forma:
<?php
session_start();
$_SESSION['login'] = $login;
?>
73
PHP e MySQL
O exemplo acima configura a varivel de sesso login com o valor contido na varivel
$login. Tambm podemos utilizar a funo session_register() para registrar uma varivel de
sesso:
<?php
session_start();
session_register(administrador);
?>
Dessa forma, registramos uma varivel de sesso administrador. Para verificar se uma
varivel de sesso est registrada, podemos utilizar a funo session_is_registered(), que
verifica se a varivel (passada como parmetro est registrada:
<?php
session_start();
if(session_is_registered(administrador) )
echo varivel registrada<br>;
else
echo varivel no est registrada<br>;
?>
Isso faz com que o valor da varivel de sesso login seja removido. Quando o usurio
deixa o site ou decide fazer logout e continuar navegando, deve-se ento desregistrar as
variveis de sesso do usurio e destruir a sesso iniciada por ele. Isso pode ser feito
utilizando a funo session_destroy(), que elimina todas as variveis de sesso registradas.
Dessa forma, o script para logout ficaria da seguinte forma:
<?php
session_start();
$_SESSION = array();
session_destroy();
?>
PHP e MySQL
mysql -u root -p
use projeto
create table usuario(
login char(30) not null primary key,
senha char(20) not null
);
Salve-o como usuario.php. Ele ir gravar as informaes dos novos usurios na tabela
usuario, em nosso banco de dados. Vamos agora criar a pgina e o script de login, onde o
usurio informar os dados e, se o usurio existir, as variveis de sesso sero criadas.
Vamos comear com o formulrio de login:
<html>
<head>
<title>Login</title>
</head>
75
PHP e MySQL
<body>
<form method=POST action=login.php>
<p align='center'>Login: <input type=text name=login size=20></p>
<p align='center'>Senha: <input type=text name=senha size=20></p>
<p align='center'><input type=submit value=Entrar></p>
</form>
</body></html>
Agora, vamos criar o script login.php que ir efeturar o registro das variveis de
sesso, que iro determinar que o usurio est registrado no site:
<?php
//recebe as variveis do formulrio
$login = $_POST['login'];
$senha = $_POST['senha'];
//conecta-se ao banco de dados
include mysqlconfig.inc;
//query queseleciona o usurio correspondente ao login e senha informados
$query = select login,senha from usuario where login='$login' and
senha='$senha'; ;
//executa query
$res = mysql_query($query);
//verifica se query retornou resultados
$num_linha = mysql_num_rows($res);
//se retornou resultado, usurio existe, ento, registra-o
if($num_linha > 0){
session_start();
$_SESSION['usuario'] = $login;
//usurio direcionado para pgina principal
header(Location: meusite.php);
}else{
//caso login seja invlido
echo usurio no existe<br>;
//link redireciona para a pgina login.html
echo <a href='login.html'>Voltar</a>;
}
?>
Caso o usurio esteja cadastrado no banco de dados, seu login armazenado numa
varivel de sesso chamada 'usuario'. Agora, podemos determinar se o usurio est logado
no site apenas verificando a varivel de sesso. Vamos criar um script que verifique a
varivel:
<?php
session_start();
if( !session_is_registered(usuario) ){
echo Efetue o login no site:<br>;
ehco <a href='login.html'>Login</a>;
}
?>
PHP e MySQL
ao script no incio da pgina. Se o usurio no estiver registrado, no poder ver o contedo
da pgina:
<?php
include verifica_sessao.php;
...
?>
Para que a nossa aplicao torne-se completa, devemos oferecer um link para que o
usurio possa efetuar logout no site. Basta criar um link direcionado para o script
logout.php, mostrado anteriormente.
Para aumentar a segurana, podemos utilizar criptografia para a senha. A criptografia
um recurso que transforma a string em um cdigo difcil de ser interpretado pelo ser
humano. Uma das funes que podemos utilizar para isso a funo crypt(), do prprio
PHP. Essa funo recebe como parmetro, a string que ser criptografada e um conjunto de
dois caracteres para serem utilizados como base para a criao da string criptografada. Sua
sintaxe :
crypt(caracteres, string_para_criptografar);
Ex: para criptografar a senha informada pelo usurio:
$senha = $_POST['senha'];
$senha = crypt(wh,$senha);
A funo crypt usar as letras wh como base e ir criptografar a senha. Caso o
usurio tenha informado a senha como abacate, o resultado seria: abUpSjlq7OP6c .
Depois de criptografada, o processo no pode ser revertido. Para conferir se a senha do
usurio est correta, informada pelo usurio no momento do login tambm deve ser
criptografada e ento as duas so conferidas. A palavra abacate sempre ter o valor
abUpSjlq7OP6c se as letras wh forem informadas no momento da criptografia.
Para garantir que o processo no apresentar erros, a string que ser criptografada
no dever conter espaos em branco, pois a funo no os criptografa.
Principais componentes
Classes, atributos e mtodos
So como moldes utilizados para a criao de objetos. Uma classe contm um
conjunto de atributos (variveis) e mtodos (funes) determinados pelo programador para
77
PHP e MySQL
compor um devido objeto. As classes devem ser criadas conforme os objetos do mundo real
que necessitamos representar. Ex: Vamos implementar a classe automvel: Para representar
um pssaro em linguagem de programao, devemos primeiramente observar seus atributos
e mtodos. Alguns atributos de um automvel so: marca, modelo, ano de fabricao,
combustvel, nmero de marchas, etc.
Perceba que os atributos so caractersticas comuns a todos os automveis. As
classes devem, preferencialmente possuir caractersticas genricas em relao ao objeto que
ser representado.
A classe automvel tambm deve possuir mtodos. Mtodos so funes que
permitem que uma ao seja realizada pelo objeto. Alguns mtodos de um automvel (o
que um automvel pode fazer): ligar, desligar, acelerar, freiar, trocar de marcha, etc.
Agora que temos uma pequena descrio de um automvel, podemos implement-lo
como um objeto no PHP. Para isso, devemos seguir a sintaxe da programao orientada a
objetos. Toda classe determinada pela palavra reservada class. Seus atributos e mtodos
ficam dentro de chaves.
<?php
class automovel{
//atributos e mtodos
}
?>
Note que utilizamos uma sintaxe diferente nos nomes de variveis. Essa sintaxe
muito comum em orientao a objetos. Quando um nome formado pela unio de duas
palavras distintas, o primeiro nome fica inteiramente em letras minsculas. Os demais
nomes iniciam-se com letra maiscula. Isso no uma regra oficial e seu script no vai
deixar de funcionar por isso, mas iremos adotar essa sintaxe para uma melhor assimilao.
Vamos agora, criar alguns mtodos para a classe automvel. A criao de mtodos
idntica criao de funes. Ex: Vamos criar o mtodo liga():
<?php
class automovel{
//declarao de atributos
var $marca, $modelo, $ligado;
//criao do mtodo liga()
function liga(){
$this->ligado = true;
}
}
?>
78
PHP e MySQL
Nosso mtodo liga() apenas altera o estado da varivel ligado para true,
representando um automvel ligado. Utilizamos o formato $this->atributo para informar que
estamos modificando uma varivel que pertence prpria classe. Podemos criar um mtodo
desliga(), para que o automvel possa ser desligado:
<?php
class automovel{
//declarao de atributos
var $marca, $modelo, $ligado;
//criao do mtodo liga()
function liga(){
$this->ligado = true;
}
//mtodo desliga
function desliga(){
$this->ligado = false;
}
}
?>
Temos uma classe automvel que liga e desliga, mas como saber se o automvel
est ligado? Vamos criar um mtodo que informa seu estado. Chamaremos esse mtodo de
estado():
<?php
class automovel{
//declarao de atributos
var $marca, $modelo, $ligado;
//criao do mtodo liga()
function liga(){
$this->ligado = true;
}
//mtodo desliga
function desliga(){
$this->ligado = false;
}
//mtodo que informa o estado do automvel
function estado(){
if($this->ligado == true)
echo Automvel ligado<br>;
else
echo Automvel desligado<br>;
}
}
?>
PHP e MySQL
varivel instanciada tratada como um mtodo diferente; como se cada varivel fosse um
automvel diferente. Automveis possuem as mesmas caractersticas (descritas dentro da
classe), mas cada automvel nico. Pense na instanciao como a linha de montagem
de um objeto (neste exemplo, de um automvel):
Vamos instanciar um automvel:
<?php
class automovel{
//declarao de atributos
var $marca, $modelo, $ligado;
//criao do mtodo liga()
function liga(){
$this->ligado = true;
}
//mtodo desliga
function desliga(){
$this->ligado = false;
}
//instanciando o objeto
$carro = new automovel();
//chamando a funo estado
$carro->estado();
?>
Note que, para instanciarmos um objeto, utilizamos a palavra reservada new, seguida
do nome da classe. A partir deste momento, a varivel $carro torna-se um automvel, e
contm todas as caractersticas definidas na classe. Se quisermos que o objeto execute um
determinado mtodo, basta realizar uma chamada funo, atravs da sintaxe:
$objeto->mtodo
Isso faz com que o mtodo contido dentro do objeto seja executado. Em nosso
exemplo, queramos que o mtodo estado() fosse executado, ento, fizemos uma chamada
ao mtodo:
$carro->estado();
Podemos utilizar o comando echo para imprimir diretamente o valor das variveis:
echo eu tenho um $carro->marca $carro->modelo !!!;
80
PHP e MySQL
Essa linha ir retornar a mensagem: eu tenho um VolksWagen Fusca !!!;
Podemos, facilmente, criar diversos automveis, sem que seja necessrio reescrever
a classe automvel:
<?php
$carro = new automovel();
$esportivo = new automovel();
$jeep = new automovel();
$carroPopular = new automovel();
?>
Temos ento $carro, $esportivo, $jeep e $carroPopular como quatro objetos distintos,
pertencentes classe automvel. Todos eles possuem os mesmos atributos e mtodos. Se
quisermos ligar apenas o jeep...:
<?php
$jeep->liga();
?>
Apenas o objeto $jeep estar ligado. Os demais no tero seu estado alterado. Note
que o aproveitamento do cdigo muito maior. Sua manuteno tambm facilitada. Ex:
Se quisermos modificar o mtodo estado, para que ele tambm informe a marca e o modelo
do automvel, basta modificar o mtodo estado dentro da classe automvel e pronto. Todos
os objetos estaro alterados:
<?php
function estado(){
if($this->ligado == true)
echo "auomvel ligado<br>";
else
echo "automvel desligado<br>";
echo $this->marca<br>;
echo this->modelo<br>;
}
?>
O resulado obtido :
automvel ligado
VolksWagen
Fusca
81
PHP e MySQL
//inicializa os atributos
$this->marca = $marca;
$this->modelo = $modelo;
}
}
?>
O resultado ser:
automvel desligado
Ford
Escort
Modificadores de Acesso
So palavras reservadas que determinam a forma como um atributo ou mtodo ser
acessado pela aplicao. Podemos dizer que eles alteram permisses de acesso aos
mesmos. Os principais so:
Modificador public
Um mtodo ou atributo determinado como public pode ser acessado por qualquer
mtodo da aplicao. Ex: Os atributos definidos em nossa aplicao at o momento so
atributos pblicos, pois podemos modific-los diretamente dentro da aplicao,
simplesmente determinando um valor, como uma varivel pblica:
$carro->modelo = Santana;
Modificador private
o mtodo mais restritivo. Indica que um atributo ou mtodo somente poder ser
acessado de dentro da classe a qual pertence, impedindo o acesso externo. Se declararmos
os atributos da classe automvel como private, apenas mtodos pertencentes classe
podero alter-los, o que impede que atribuies de valores como a mostrada acima. Para
82
PHP e MySQL
que um atributo private possa ser alterado, necessrio que seja criado um mtodo capaz
de alter-lo. Vamos declarar os atributos da classe automvel como private:
<?php
class automovel{
//atributos declarados como private
private $marca, $modelo, $ligado;
...
}
?>
Modificador protected
Este modificador de um nvel intermedirio. Atributos ou mtodos declarados
como protected tornam-se pblicos dentro da classe em que foram criados e das classes
que herdam a classe em que eles foram criados. Fora de sua classe e suas herdeiras
(veremos isso em Herana, logo adiante), atributos e mtodos definidos como protected
possuem a mesma restrio obtida com o modificador private.
Herana
Herana uma forma de reutilizar uma classe. Classes podem herdar caractersticas
de outras classes, passando a possuir todas as suas caractersticas (atributos e mtodos).
Uma classe herda caractersticas de outra classe com o uso da palavra reservada extends.
Ex: Vamos criar a classe carroDeCorrida, que ir herdar as caractersticas da classe
automvel:
class carroDeCorrida extends automovel{
...
}
Pronto, agora temos uma nova classe carroDeCorrida, com os atributos $marca,
$modelo e $ligado e os mtodos ligar(), desligar() e estado(), sem que fosse necessrio
reescrever toda a classe. Qualquer modificao na classe automovel modifica tambm a
calsse carroDeCorrida. Dizemos ento que a classe automovel a classe pai e a classe
carroDeCorrida a classe filha, pois herda as caractersticas da classe pai. Podemos agora
criar novos atributos e mtodos para a classe carroDeCorrida. Vamos criar o atributo pneu e
o mtodo trocaPneu para a classe carroDeCorrida:
class carroDeCorrida{
private $pneu;
function trocaPneu($tipoPneu){
$this->pneu = $tipoPneu;
}
}
83
PHP e MySQL
O mtodo trocaPneu recebe como parmetro o tipo de pneu que o carro de corrida ir
receber na troca e altera o atributo $pneu para o tipo especificado.
Sobrescrever mtodos
Uma tcnica muito utilizada na programao orientada a objetos. Permite que
alteremos todo um mtodo da classe pai, reescrevendo-o. Ex: Na classe pai, o mtodo
estado() mostra apenas as caractersticas bsicas do carro. Vamos alterar a classe
carroDeCorrida para que tambm mostre o tipo do pneu:
<?php
class carroDeCorrida extends automovel{
//novo atributo pneu
private $pneu;
//mtodo trocaPneu, definida anteriormente
function trocaPneu($tipoPneu){
$this->pneu = $tipoPneu;
}
//mtodo estado sendo sobreescrita
function estado(){
//chamada ao mtodo estado da classe pai
parent::estado();
//nova linha do mtodo estado
echo "Pneus $this->pneu<br>";
}
}
?>
Note que dentro do novo mtodo estado() h uma chamada ao mtodo estado da
classe automvel ( parent::estado() ). Essa chamada necessria para que o PHP
identifique o mtodo que est sendo sobrescrito.
Quando utilizamos herana em PHP, devemos nos lembrar sempre de que o PHP
ainda possui limitaes, se comparado a outras linguagens orientadas a objeto. Ex: As
classes que possuem herana devem ser definidas dentro do mesmo arquivo da classe pai,
ou seja, em nosso exemplo, a classe carroDeCorrida deve estar no mesmo arquivo da classe
automovel, pois o PHP no pode definir qual a classe pai e qual a classe filha. Porm, isso
pode ser resolvido com o uso da funo require ou include.
Outra limitao encontrada na linguagem que o PHP no suporta herana mltipla,
ou seja, uma classe filha pode ter apenas uma classe pai, diferente de outras linguagens
como java, que suporta essa caracterstica.
Vamos instanciar um carro de corrida:
$formula = new carroDeCorrida("Puma","GTB");
$formula->trocaPneu("Slick");
$formula->estado();
84
PHP e MySQL
Datas
Date()
Retorna uma data no formato especificado
String date(string formato,int[datahora] );
Argumento
Descrio
Data
formato
Caractere
am ou pm
AM ou PM
85
PHP e MySQL
U Nmero de segundos desde o epoch.
w Dia da semana, numrico. De 0(domingo) a 6 (sbado) .
Y Ano com 4 dgitos. Ex.: 2002.
y Ano com 2 dgitos. Ex.: 02.
z Dia do ano. De 0 a 365.
Z Fuso horrio em segundos. De -43200 a 43200.
Getdate
Retorna um array associativo contendo todas as informaes de uma data/hora especfica.
Array getdate(int data/hora);
ndices da matriz retornada.
seconds
Segundos
minutes
Minutos
hours
Horas
mday
Dia do ms
wday
mon
Ms no formato decimal
year
yday
weekday
month
Gmmktime()
Retorna a data/hora GMT no formato UNIX. idntica funo mktime(), exceto que a
data passada no parmetro representa uma data GMT.
Int gmmktime(int hora, int minuto, int segundo, int ms, int dia, int ano, int [dsf]);
Gmstrftime()
Retorna uma data/hora GMT/CUT no formato especificado. semelhante funo
strftime(), exceto que a hora retornada a hora de Greenwich.
String gmstrftime(string formato, int datahora);
Microtime()
Retorna uma string contendo a data/hora atual no formato msec sec do UNIX, que
86
PHP e MySQL
significa o nmero de milisegundos e depois os segundos desde o UNIX Epoch(01/01/1970
00:00:00 GMT).
String microtime(void);
Mktime()
Retorna uma data/hora no formato UNIX
Int mktime(int hora, int minuto, int segundo, int ms, ine dia, int ano, int [dsf]);
Strftime()
Retorna uma data no formato especificado. Os nomes por extenso dos meses e dos dias da
semana dependem da configurao feita com a funo setlocale().
String strftime(string formato, int datahora);
Argumento
Data
Descrio
Data/hora a ser formatada. Se no especificada, utilizar a data/hora corrente
Caractere Significado
%a
%A
%b
Nome abreviado do ms
%B
Nome completo do ms
%c
%d
%H
%l
%j
%m
%M
%p
%S
%U
%W
%w
PHP e MySQL
%x
%X
%y
%Y
%Z
%%
Time()
Retorna a data/hora no formato UNIX, que corresponde ao nmero de segundos desde o
Unix Epoch(01\01\1970 00:00:00 GMT)
Int time(void);
Diretrios
Chdir()
Altera o diretrio correspondente do PHP para o diretrio especificado. Retorna true se
tiver sucesso; caso contrrio retorna false
Int chdir(string diretrio);
Closedir()
Encerra a associao de um identificador(handle) com um diretrio.
Void closedir(int handle_dir) ;
Opendir()
Retorna um handle de diretrio para ser usado nas funes closedir(), readdir() e
Readdir()
Retorna o prximo nome de arquivo do diretrio, na ordem em que estiverem armazenadas
String readdir(int handle_dir);
Execuo de Programas
Escapeshellcmd()
Retira quaisquer caracteres de um string que poderiam ser utilizados para enganar um
comando Shell para executar comandos arbitrrios. Esta funo normalmente usada para
88
PHP e MySQL
verificar os dados fornecidos pelo usurio antes de serem passados para as funes exec()
ou system().
String escapeshellcmd(string comando);
Exec()
Executa um comando externo e mostra a ltima linha do resultado do comando.
String exec(string comando, string [array], int [varivel_ref]) ;
Argumento
Descrio
Comando
Array
Passthru()
Executa um comando externo e mostra todos os resultados.
String passthru(string comando, int [varivel_ref]);
Argumento
Descrio
Comando
Varivel_ref
System()
Executa um comando externo e mostra os resultados.
String system(string comando, int [varivel_ref]);
Argumento
Descrio
Comando
Varivel_ref
89
PHP e MySQL
Chgrp()
Muda o grupo ao qual um arquivo pertence em ambientes UNIX. Em ambientes Windows
no faz nada, retornando sempre true.
chgrp(string nome_do_arquivo, mixed grupo) ;
Chmod()
Altera as permisses de um arquivo em ambientes UNIX. Retorna true em caso de sucesso;
caso contrrio, retorna false. Em ambientes Windows esta funo no faz nada, sempre
retornando true
Int chmod(string nome_do_arquivo, int modo) ;
Chown()
Altera o proprietrio de um arquivo em ambientes UNIX. Somente o root pode alterar o
proprietrio de um arquivo. Retorna true em caso de sucesso; caso contrrio, retorna false.
No Windows esta funo na faz nada sempre retornando true.
Int chown(string nome_arquivo, mixed proprietrio);
Copy()
Copia um arquivo. Retorna true se tiver sucesso; caso contrrio, retorna false.
Int copy(string nome_arquivo, string arquivo_destino);
Delete()
Apaga um arquivo do servidor
Void delete(string nome_arquivo) ;
Dirname()
Retorna o nome de um diretrio em um path. Veja a funo basename().
String dirname(string path);
Fclose()
Fecha um arquivo. Retorna true se tiver sucesso; caso contrrio, retorna false.
Int fclose(int fp);
Feof()
Retorna true caso o ponteiro de arquivo esteja no fim do arquivo ou ocorra um erro; caso
90
PHP e MySQL
contrrio, retorna false.
Int feof(fp);
File()
L um arquivo inteiro e coloca seu contedo em um array. Cada elemento do array
corresponder a cada linha do arquivo lido, sem tirar qualquer informao.
Array file(string nome_arquivo);
File_exists()
Retorna true se um determinado arquivo existe; caso contrrio, retorna false. Os resultados
desta funo so armazenados e reutilizados. Para atualizar esta informao utilize a funo
clearstatcache().
Int file_exists(string nome_arquivo);
Filesize()
Retorna o tamanho de um arquivo, ou false em caso de erro. Os resultados desta funo
so
armazenadas e reutilizadas. Para utilizar esta informao utilize a funo clearstatcache().
Int filesize(string nome_arquivo);
Filetype()
Retorna o tipo de um arquivo. Os valores possveis so fifo, char, dir, block, link, file e
unknown. Retorna false em caso de erro. Os resultados desta funo so armazenadas e
reutilizadas. Para utilizar esta informao utilize a funo clearstatcache().
String filetype(string nome_arquivo);
Fopen()
Abre um arquivo ou uma URL. A funo retornar false se ocorrer erro.
Int fopen(string nome_arquivo, string modo);
Argumento
Descrio
ftp://
PHP e MySQL
arquivo retornado. O servidor deve suportar o modo passivo de FTP.
possvel abrir os arquivos para leitura ou para escrita, mas no ambos ao
mesmo tempo
outro
Modo
r+
w+
a+
Fputs()
Escreve o contedo de uma string em um arquivo
Int fputs(int fp, string str, int [tamanho]);
Fread()
L bytes de um arquivo
String fread(int fp, int [tamanho]);
Fwrite()
Escreve um nmero especifico de bytes de uma string em um arquivo
Int fwrite(int fp, string str, int [numbytes]);
Readfile()
L um arquivo e o envia para a sada padro do sistema; retorna o nmero de bytes lidos
Int readfile(string nome_arquivo);
92
PHP e MySQL
Rename()
Altera o nome de um arquivo. Retorna true se tiver sucesso; caso contrrio false
Int rename(string nome_anterior, string nome_novo);
Matemtica
Abs()
Retorna o valor absoluto de um nmero.
Mixed abs(mixed nmero);
Base_convert()
Retorna uma string com um nmero convertido para outra base numrica.
String base_convert(string nmero, int base_ant, int nova_base);
Max()
Retorna o maior dentre os especificados
Mixed max(mixed arg1, mixed arg2, mixed argn);
Min()
Retorna o menor dentre os especificados
Mixed min(mixed arg1, mixed arg2, mixed argn);
Mt_rand()
Gera um nmero aleatrio mais confivel no intervalo especificado
Int mt_rand(int [limite_inf], int [limite_sup]);
Pi()
Retorna o valor da constante pi
Double pi(void);
Pow()
Retorna o resultado de uma base elevada a um expoente
Float pow(float base, float expoente);
Rand()
Retorna um nmero aleatrio dentro de um intervalo especificado
93
PHP e MySQL
Int rand(int [limit_inf], int [limi_sup]);
Round()
Retorna o valor de um nmero arredondado para o nmero inteiro mais prximo. Se o
nmero estiver exatamente entre dois nmeros inteiros, o resultado ser sempre o nmero
inteiro par
Double rand(double nmero);
Sin()
Retorna o seno de um ngulo em radianos
Float sin(float arg);
Sqrt()
Retorna a raiz quadrada
Float sqrt(float arg );
Tan()
Retorna a tangente de um ngulo em radianos
Float tan(float arg);
Funes diversas
Eval()
Processa uma string como cdigo PHP
Void eval(string string_cdigo);
Die()
Imprime uma mensagem e termina o script PHP
Void die(string mensagem);
Exit()
Termina o script PHP atual
Void exit(void);
Mail()
Envia um email para um ou mais destinatrios
94
PHP e MySQL
Bool mail(string dest, string assunto, string mensagem, string [headers_adic]);
Argumento
Descrio
Dest
Assunto
Assunto do email
Mensagem
Contedo do email
Headers_adic
Exemplo:
$destino = NomeDestino <endereo@dominio.com.br>;
$remetente = NomeRemetente <remetente@dominio.com.br>;
$assunto = assunto do email;
mail($destino,$assunto, $mensagem, From: $remetente \n );
Pack()
compacta dados em uma string binria
string pack(string formato, mixed [args]...) ;
Sleep()
Atrasa a execuo por um tempo determinado (em segundos)
Void sleep(int num_segundos);
Tratamento de sesses
Session_decode()
Decodifica os dados de uma sesso em uma string
Bool session_decode(string dados);
Session_destroy()
Destri os dados registrados associados sesso atual
Bool session_destroy(void);
95
PHP e MySQL
Session_encode()
Codifica os dados de uma sesso
Bool session_encode(void) ;
Session_start()
Inicializa os dados de uma sesso
Bool session_start(void);
Session_is_registered()
Descobre se uma varivel foi registrada na sesso
Bool session_is_registered(string nome);
Session_module_name()
Retorna ou muda o nome do mdulo da sesso atual
String session_module_name(string [mdulo]);
Session_name()
Retorna ou muda o nome da sesso atual
String session_name(string [nome]);
Session_register()
Registra uma varivel com a sesso atual
Bool session_register(string nome);
Session_unregister()
Descarta uma varivel da sesso atual
Bool session_unregister(string nome);
Strings
Addslashes()
Coloca barras invertidas antes dos caracteres especiais: apostrofo(), aspas(), barra
invertida (\) e NUL
String addslashes(string str);
96
PHP e MySQL
Chop()
Remove espaos em branco em seqncia
String chop(string str);
Crypt()
Retorna uma string criptografada atravs do modo DES.
String crypt(string str, string [salf]);
Echo()
Imprime uma ou mais strings
Echo (string arg1, string argn....);
Explode()
Retorna um array contendo as partes da string com valores separados por um separador
Array explode(string separador, string str) ;
Htmlentities()
Converte todos os caracteres aplicveis em tags HTML
String htmlentities(string str);
Htmlspecialchars()
Converte caracteres especiais em tags HTML
String htmlspecialchars(string str);
Caracter Descrio
&
&
"
<
<
>
>
Implode()
Retorna uma string contendo a representao string de todos os elementos de um array
separados pelo argumento glue
String implode(string glue, array fatias);
97
PHP e MySQL
Ltrim()
Retorna uma string sem os espaos iniciais
String ltrim(string str);
Md5()
Retorna o hash MD5 de uma string
String md5(string str);
Parse_str()
Converte uma string de parmetros no formato das URLs vindas de formulrios HTML em
variveis
Void parse_str(string str);
Exemplo:
$str = form=firm&operation=insert&index=0;
parse_str($str);
echo $form; //imprime firm
echo $operation; //imprime insert
echo $index; //imprime 0
Strcmp()
Compara duas strings, retornando um valor: < 0 se str1 for menor que str2; > 0 se str1 for
maior que str2, e 0 se elas forem iguais
Int strcmp(string str1, string str2);
Strip_tags()
Retorna uma string sem as tags HTML e PHP
String strp_tags(string str);
Stripslashes()
Apaga as barras invertidas de caracteres especficos
String stripslashes(string str);
Strlen()
Retorna o comprimento de uma string
Int strlen(string str);
98
PHP e MySQL
Strrev()
Inverte uma string
String strrev(string str);
Strtolower()
Transforma as letras em uma string para minscula.
String strtolower(string str) ;
Strtoupper()
Transforma as letras em uma string para maiscula.
String strtoupper(string str) ;
Str_replace()
Substitui todas as ocorrncias de uma substring por outra
String str_replace(string str_ant, string novo_str, string str) ;
Argumento
Str_ant
Novo_str
Str
Descrio
Substring a ser substituda
Substring que substituir a anterior
String original
Trim()
Apaga os espaos em branco do inicio e fim de uma string.
String trim(string str);
Ucfirst()
Transforma o primeiro caractere de uma string em maisculo
String ucfirst(string str) ;
Ucwords()
Transforma o primeiro caractere de cada palavra de uma string em maisculo
String ucwords(string str);
99
PHP e MySQL
Variveis
Doubleval()
Retorna o valor em ponto flutuante de uma varivel
Double doubleval(mixed var) ;
Empty()
Retorna false se var estiver atribuda; caso contrrio retorna true
Int empty(mixed var) ;
Gettype()
Retorna o tipo de uma varivel
String gettype(mixed var);
Intval()
Retorna o valor em inteiros de uma varivel, utilizando uma base especificada. O padro da
base 10
Int intval(mixed var, int [base])
Is_array()
Retorna true se a varivel for do tipo array
Int is_array(mixed var);
Is_double()
Retorna true se a varivel for do tipo double
Int is_double(mixed var);
Is_float()
Retorna true se a varivel for do tipo float
Int is_float(mixed var);
Is_int()
Retorna true se a varivel for do tipo inteiro
Int is_int(mixed var);
100
PHP e MySQL
Is_object()
Retorna true se a varivel for um objeto
Int is_object(mixed var);
Is_real()
Retorna true se a varivel for do tipo real
Int is_real(mixed var);
Is_string()
Retorna true se a varivel for do tipo string
Int is_string(mixed var);
Isset()
Retorna true se uma varivel existir
Int isset(mixed var);
Settype()
Altera o tipo de uma varivel. Retorna true se tiver sucesso; caso contrrio, retorna false
Int settype(string var, string tipo);
Tipos permitidos
Integer
Double
String
Array
Objeto
Strval()
Retorna o valor em string de uma varivel
String strval(mixed var);
Unset
Exclui uma varivel
Int unset(mixed var);
101
PHP e MySQL
Referncias Bibliogrficas
PHP para quem conhece PHP Recursos avanados para a criao de websites
dinmicos. Autor: Juliano Niederauer Editora: Novatec Ltda
www.novateceditora.com.br
Programao para Web utilizando PHP. Autores: Alexandre Arroyo e Fabio Santos.
Diviso de servios comunidade. Centro de Computao Unicamp.
102