Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila PHP 01 PDF
Apostila PHP 01 PDF
Nome do tipo
Espao utilizado
CHAR(M)
VARCHAR(M)
ENUM('value1','value2',...) 1 ou 2 bytes
SET('value1','value2',...)
1, 2, 3, 4 ou 8 bytes
96
Numricos
Nome do tipo
Espao utilizado
TINYINT
1 byte
SMALLINT
2 bytes
MEDIUMINT
3 bytes
INT
4 bytes
INTEGER
4 bytes
BIGINT
8 bytes
FLOAT(X)
FLOAT
4 bytes
DOUBLE
8 bytes
DOUBLE PRECISION
8 bytes
REAL
8 bytes
DECIMAL(M,D)
NUMERIC(M,D)
Data e Hora
Nome do tipo
Espao utilizado
DATE
3 bytes
DATETIME
8 bytes
TIMESTAMP
4 bytes
TIME
3 bytes
YEAR
1 byte
95
uksort
void uksort(array &arr, function compara);
94
asort
void asort(array &arr);
arsort
void arsort(array &arr);
ksort
void ksort(array &arr);
usort
void usort(array &arr, function compara);
Esta uma funo que utiliza outra funo como parmetro. Ordena os
elementos de um array sem manter os relacionamentos com os ndices, e utiliza para
efeito de comparao uma funo definida pelo usurio, que deve comparar dois
elementos do array e retornar 0, 1 ou 1, de acordo com qualquer critrio estabelecido
pelo usurio.
uasort
void uasort(array &arr, function compara);
93
Funes de ordenao
So funes que servem para arrumar os elementos de um array de acordo
com determinados critrios. Estes critrios so: manuteno ou no da associao entre
ndices e elementos; ordenao por elementos ou por ndices; funo de comparao
entre dois elementos.
sort
void sort(array &arr);
rsort
void rsort(array &arr);
92
next
mixed next(array arr);
prev
mixed prev(array arr);
pos
mixed pos(array arr);
key
mixed key(array arr);
91
shuffle
void shuffle(array &arr);
sizeof
int sizeof(array arr);
Funes de navegao
Toda varivel do tipo array possui um ponteiro interno indicando o
prximo elemento a ser acessado no caso de no ser especificado um ndice. As funes
seguintes servem para modificar esse ponteiro, permitindo assim percorrer um array
para verificar seu contedo (chaves e elementos).
reset
mixed reset(array arr);
Funes Genricas
Array
array array(...);
array("um",
range
array range(int minimo, int maximo);
89
str_replace
string
str_replace(string
str1,
string
str2,
string
str3);
Funes diversas
chr
string chr(int ascii);
ord
int ord(string string);
echo
echo(string arg1, string [argn]... );
print
print(string arg);
strtolower
string strtolower(string str);
strtoupper
string strtoupper(string str);
ucfirst
string ucfirst(string str);
ucwords
string ucwords(string str);
87
chop
string chop(string str);
\n
\n
); // retorna
Teste
ltrim
string ltrim(string str);
Teste
\n
\n ); // retorna Teste
\n
\n
trim
string trim(string str);
\n
\n ); // retorna Teste
strrev
string strrev(string str);
86
strstr
string strstr(string str1, string str2);
string strchr(string str1, string str2);
stristr
string strstr(string str1, string str2);
strpos
int strpos(string str1, string str2, int [offset] );
strrpos
int strrpos(string haystack, char needle);
85
explode
array explode(string padrao, string str);
str1,
string
str2,
double
strcasecmp
int strcasecmp(string str1, string str2);
strcmp
int strcasecmp(string str1, string str2);
84
urldecode
string urldecode(string str);
Implode e join
string implode(string separador, array partes);
string join(string separador, array partes);
split
array split(string padrao, string str, int [limite]);
83
get_meta_tags
array get_meta_tags(string arquivo);
strip_tags
string strip_tags(string str);
urlencode
string urlencode(string str);
htmlentities
string htmlentities(string str);
para 'º'
para 'ª'
para 'á'
para ç'
nl2br
string nl2br(string str);
81
80
onde:
to string contendo o e-mail do destinatrio;
subject assunto da mensagem;
message o corpo da mensagem.
headers outras informaes de cabealho, como por exemplo from,
reply-to, bcc, etc.
Para facilitar a compreenso dos scripts, os argumentos (como geralmente
so strings grandes) devem ser atribudos a variveis antes da chamada da funo mail.
79
<?
$id = fopen($teste, r); /* abre o arquivo para leitura */
$teste_conteudo = fread($id,filesize($teste)); /* le o conteudo
do arquivo e grava na variavel $conteudo */
fclose($id); /* fecha o arquivo */
?>
78
<?
$arquivo = teste.gif; /* este nome deve ser alterado para o
nome do arquivo a ser utilizado */
$id = fopen($arquivo, r); /* abre o arquivo para leitura */
$conteudo = fread($id,filesize($arquivo)); /* le o conteudo do
arquivo e grava na variavel $conteudo */
fclose($id); /* fecha o arquivo */
header(Content-type: image/gif); /* esta linha envia um header
ao browser informando que o tipo de arquivo que est sendo
enviado uma imagem no formato gif */
echo $conteudo; /* esta ltima linha envia ao browser o contedo
do arquivo */
?>
nome teste:
77
Lendo de um arquivo
string fread(int fp, int tamanho);
Escrevendo em um arquivo
int fwrite(int fp, string conteudo, int [tamanho]);
Exemplo
w+
a+
75
Limpando o cache
Para ler ou escrever num arquivo preciso antes de qualquer coisa abrilo. Para isso deve ser utilizada a funo fopen, como visto a seguir:
int fopen(string arquivo, string modo, int [use_include_path]);
r
r+
74
A funo filesize pode ser bastante til na criao de um script que liste o
contedo de um diretrio, mas tambm utilizada em casos como a funo fread, que
ser vista mais adiante.
int filesize(string arquivo);
73
secure: se tiver valor 1, indica que o cookie s pode ser transmitido por
uma conexo segura (https).
Observaes:
Um cookie no pode ser recuperado na mesma pgina que o gravou, a
menos que esta seja recarregada pelo browser.
Mltiplas chamadas funo setcookie sero executadas em ordem
inversa;
Cookies s podem ser gravados antes do envio de qualquer informao
para o cliente. Portanto todas as chamadas funo setcookie devem ser feitas antes
do envio de qualquer header ou texto.
pgina
anterior
pelo
$HTTP_COOKIE_VARS[teste]
ou pela varivel
$teste
72
Gravando cookies
Para gravar cookies no cliente, deve ser utilizada a funo setcookie, que
possui a seguinte assinatura:
int setcookie(string nome, string valor, int exp, string path,
string dominio, int secure);
onde:
nome: nome do cookie;
valor: valor armazenado no cookie;
exp: data de expirao do cookie (opcional), no formato Unix. Se no for
definida, o cookie ser de sesso;
path: path do script que gravou o cookie;
dominio: domnio responsvel pelo cookie;
71
Para obter uma lista completa dos headers HTTP, visite o seguinte
endereo:
http://www.w3.org/Protocols/rfc2068/rfc2068
70
correspondente ao nmero da coluna. Se foi utilizado um alias na consulta, este deve ser
utilizado no comando pg_result.
Este comando deve ser utilizado apenas para resultados pequenos.
Quando o volume de dados for maior, recomendado utilizar um dos mtodos a seguir:
69
qual a base de dados selecionada, basta utilizar a funo string pg_dbname, que tem a
seguinte assinatura:
string pg_dbname(int conexo);
Apagando o resultado
int pg_freeresult(int result);
Nmero de linhas
int pg_numrows(int result);
Utilizando os resultados
Existem diversas maneiras de ler os resultados de uma query SELECT.
As mais comuns sero vistas a seguir:
68
IMPORTANTE:
comando
pg_close
no
encerra
conexes
tty=tty
Realizando consultas
Para executar consultas SQL no Postgres, utiliza-se o comando pg_exec,
que tem a seguinte assinatura:
alterar a posio indicada por esse ponteiro deve ser utilizada a funo
mysql_data_seek, sendo que o nmero da primeira linha de um resultado zero.
66
Utilizando os resultados
Existem diversas maneiras de ler os resultados de uma query SELECT.
As mais comuns sero vistas a seguir:
correspondente ao nmero da coluna. Se foi utilizado um alias na consulta, este deve ser
utilizado no comando mysql_result.
Este comando deve ser utilizado apenas para resultados pequenos.
Quando o volume de dados for maior, recomendado utilizar um dos mtodos a seguir:
65
Realizando consultas
Para executar consultas SQL no mySQL, utiliza-se o comando
mysql_query, que tem a seguinte assinatura:
Nmero de linhas
int mysql_num_rows(int result);
64
63
62
Comando DELETE
Remove registros de uma ou mais tabelas listadas na clusula FROM que
satisfaz a clusula WHERE.
Sintaxe
DELETE [tabela.*]
FROM tabela
WHERE critrio
onde:
tabela.* - O nome opcional da tabela da qual os registros so excludos.
tabela - O nome da tabela da qual os registros so excludos.
critrio - Uma expresso que determina qual registro deve ser excludo.
61
Comando INSERT
Adiciona um ou vrios registros a uma tabela. Isto referido como
consulta anexao.
Sintaxe bsica
INSERT INTO destino [(campo1[, campo2[, ...]])]
VALUES (valor1[, valor2[, ...])
Comando UPDATE
Cria uma consulta atualizao que altera os valores dos campos em uma
tabela especificada com base em critrios especficos.
Sintaxe:
UPDATE tabela
SET campo1 = valornovo, ...
WHERE critrio;
Onde:
Tabela - O nome da tabela cujos os dados voc quer modificar.
Valornovo - Uma expresso que determina o valor a ser inserido em um
campo especfico nos registros atualizados.
critrio - Uma expresso que determina quais registros devem ser
atualizados. S os registros que satisfazem a expresso so atualizados.
60
Comando Alter
Este comando permite inserir/eliminar atributos nas tabelas j existentes.
Comando:
ALTER TABLE < nome_tabela >
nome_atributo1 < tipo >
nome_atributoN < tipo >
) ;
ADD / DROP (
[ NOT NULL ],
[ NOT NULL ]
onde:
DISTINCT : Para eliminar linhas duplicadas na sada.
Expressao: Define os dados que queremos na sada, normalmente uma ou
mais colunas de uma tabela da lista FROM.
AS nom-atributo : um alias para o nome da coluna, exemplo:
FROM : lista das tabelas na entrada
WHERE : critrios da seleo
ORDER BY : Critrio de ordenao das tabelas de sada. ASC ordem
ascendente, DESC ordem descendente
Exemplo:
SELECT cidade, estado from brasil where populacao > 100000;
59
Comando Create
Este comando permite a criao de tabelas no banco de dados ou mesmo
de sua criao.
Sintaxe:
CREATE DATABASE < nome_db >;
onde:
nome_db - indica o nome do Banco de Dados a ser criado.
Sintaxe:
CREATE TABLE < nome_tabela > (
nome_atributo1 < tipo > [ NOT NULL ],
nome_atributo2 < tipo > [ NOT NULL ],
......
nome_atributoN < tipo > [ NOT NULL ]
) ;
onde:
nome_table - indica o nome da tabela a ser criada.
nome_atributo - indica o nome do campo a ser criado na tabela.
tipo - indica a definio do tipo de atributo ( integer(n), char(n), ... ).
Comando Drop
Este comando elimina a definio da tabela, seus dados e referncias.
Sintaxe:
DROP TABLE
58
de Banco de Dados
Relacional.
SQL apresenta uma srie de comandos que permitem a definio dos
dados, chamada de DDL (Data Definition Language), composta entre outros pelos
comandos Create, que destinado a criao do Banco de Dados, das Tabelas que o
compe, alm das relaes existentes entre as tabelas. Como exemplo de comandos da
classe DDL temos os comandos Create, Alter e Drop.
Os comandos da srie DML (Data Manipulation Language), destinados a
consultas, inseres, excluses e alteraes em um ou mais registros de uma ou mais
tabelas de maneira simultnea. Como exemplo de comandos da classe DML temos os
comandos Select, Insert, Update e Delete.
Uma subclasse de comandos DML, a DCL (Data Control Language),
dispe de comandos de controle como Grant e Revoke.
A Linguagem SQL tem como grandes virtudes sua capacidade de
gerenciar ndices, sem a necessidade de controle individualizado de ndice corrente,
algo muito comum nas linguagens de manipulao de dados do tipo registro a registro.
Outra caracterstica muito importante disponvel em SQL sua capacidade de
construo de vises, que so formas de visualizarmos os dados na forma de listagens
independente das tabelas e organizao lgica dos dados.
Outra caracterstica interessante na linguagem SQL a capacidade que
dispomos de cancelar uma srie de atualizaes ou de as gravarmos, depois de
iniciarmos uma seqncia de atualizaes. Os comandos Commit e Rollback so
responsveis por estas facilidades.
57
class conta {
var $saldo;
function conta () {
$this.saldo = 0;
}
function saldo() {
return $this->saldo;
}
function credito($valor) {
$this->saldo += $valor;
}
}
56
SubClasses
Uma classe pode ser uma extenso de outra. Isso significa que ela herdar
todas as variveis e funes da outra classe, e ainda ter as que forem adicionadas pelo
programador. Em PHP no permitido utilizar herana mltipla, ou seja, uma classe
pode ser extenso de apenas uma outra.Para criar uma classe extendida, ou derivada de
outra, deve ser utilizada a palavra reservada extends, como pode ser visto no exemplo
seguinte:
class novaconta extends conta {
var $num;
function numero() {
return $this->num;
}
}
Classe
Uma classe um conjunto de variveis e funes relacionadas a essas
variveis. Uma vantagem da utilizao de programao orientada a objetos poder
usufruir do recurso de encapsulamento de informao. Com o encapsulamento o usurio
de uma classe no precisa saber como ela implementada, bastando para a utilizao
conhecer a interface, ou seja, as funes disponveis. Uma classe um tipo, e portanto
no pode ser atribuda a uma varivel. Para definir uma classe, deve-se utilizar a
seguinte sintaxe:
class Nome_da_classe {
var $variavel1;
var $variavel2;
function funcao1 ($parametro) {
/* === corpo da funo === */
}
}
Objeto
Como foi dito anteriormente, classes so tipos, e no podem ser atribudas
a variveis. Variveis do tipo de uma classe so chamadas de objetos, e devem ser
criadas utilizando o operador new, seguindo o exemplo abaixo:
$variavel = new $nome_da_classe;
Para
utilizar
as
A varivel $this
Na definio de uma classe, pode-se utilizar a varivel $this, que o
prprio objeto. Assim, quando uma classe instanciada em um objeto, e uma funo
desse objeto na definio da classe utiliza a varivel $this, essa varivel significa o
objeto que estamos utilizando.
54
Definindo constantes
53
varivel, ser criada uma nova varivel de mesmo nome e de contedo vazio, a no ser
que a chamada seja pela funo isset. Se a operao for bem sucedida, retorna true.
Existem dois tipos de teste que podem ser feitos para verificar se uma
varivel est setada: com a funo isset e com a funo empty.
A funo isset
E retorna true se a varivel estiver setada (ainda que com uma string
vazia ou o valor zero), e false em caso contrrio.
A funo empty
52
A palavra mixed indica que a varivel var pode ser de diversos tipos.
A funo gettype pode retornar as seguintes strings: integer,
double, string, array, object e unknown type.
So as funes is_int,
is_integer,
is_real,
is_long,
type="checkbox"
type="checkbox"
type="checkbox"
type="checkbox"
type="checkbox"
name="teste[]"
name="teste[]"
name="teste[]"
name="teste[]"
name="teste[]"
value="valor1">opcao1
value="valor2">opcao2
value="valor3">opcao3
value="valor4">opcao4
value="valor5">opcao5
Variveis de ambiente
50
URLencode
O PHP possui duas funes para tratar com texto em urlencode. Seguem
suas sintaxes:
Utilizando arrays
Cada elemento de um formulrio HTML submetido a um script PHP cria
no ambiente do mesmo uma varivel cujo nome o mesmo nome do elemento. Por
exemplo: um campo definido como:
<input type=text name=endereco>
ao ser submetido a um script PHP far com que seja criada uma varivel
com o nome $endereco. Isto acontece de forma semelhante para cookies, como
veremos mais adiante.
49
Exemplo:
function Teste() {
echo "$a";
static $a = 0;
$a++;
}
Variveis Variveis
Para interagir com a navegao feita pelo usurio, necessrio que o PHP
possa enviar e receber informaes para o software de navegao. A maneira de enviar
informaes, como j foi visto anteriormente, geralmente atravs de um comando de
impresso, como o echo. Para receber informaes vindas do navegador atravs de um
link ou um formulrio html o PHP utiliza as informaes enviadas atravs da URL. Por
exemplo: se seu script php est localizado em http://localhost/teste.php3 e
voc o chama com a url http://localhost/teste.php3?vivas=teste ,
automaticamente o PHP criar uma varivel com o nome $vivas contendo a string
48
Uma varivel esttica visvel num escopo local, mas ela inicializada
apenas uma vez e seu valor no perdido quando a execuo do script deixa esse
escopo. Veja o seguinte exemplo:
function Teste() {
$a = 0;
echo $a;
$a++;
}
function Teste() {
static $a = 0;
echo $a;
$a++;
}
Exemplo:
$vivas = Testando;
function Teste() {
global $vivas;
echo $vivas;
}
Teste();
46
Contexto
O contexto o conjunto de variveis e seus respectivos valores num
determinado ponto do programa. Na chamada de uma funo, ao iniciar a execuo do
bloco que contm a implementao da mesma criado um novo contexto, contendo as
variveis declaradas dentro do bloco, ou seja, todas as variveis utilizadas dentro
daquele bloco sero eliminadas ao trmino da execuo da funo.
Escopo
O escopo de uma varivel em PHP define a poro do programa onde ela
pode ser utilizada. Na maioria dos casos todas as variveis tm escopo global.
Entretanto, em funes definidas pelo usurio um escopo local criado. Uma varivel
de escopo global no pode ser utilizada no interior de uma funo sem que haja uma
declarao.
Exemplo:
$vivas = Testando;
function Teste() {
echo $vivas;
}
Teste();
45
/*
Aqui
as
duas
variveis
tero
seus
44
Argumentos
Exemplo:
function imprime($texto){
echo $texto;
}
imprime(teste de funes);
Exemplo:
function mais5($numero) {
$numero += 5;
}
$a = 3;
mais5($a); //$a continua valendo 3
10. Funes
Definindo funes
Valor de retorno
42
41
<inicializacao>
while (<condicao>) {
comandos
...
<incremento>
}
Quebra de fluxo
Break
O comando break pode ser utilizado em laos de do, for e while,
alm do uso j visto no comando switch. Ao encontrar um break dentro de um
desses laos, o interpretador PHP para imediatamente a execuo do lao, seguindo
normalmente o fluxo do script.
while ($x > 0) {
...
if ($x == 20) {
echo erro! x = 20;
break;
...
}
No trecho de cdigo acima, o lao while tem uma condio para seu
trmino normal ($x <= 0), mas foi utilizado o break para o caso de um trmino no
previsto no incio do lao. Assim o interpretador seguir para o comando seguinte ao
lao.
Continue
40
$i = 0;
do {
print ++$i;
} while ($i < 10);
for
for (<inicializacao>;<condicao>;<incremento>)
<comando>;
for (<inicializacao>;<condicao>;<incremento>) :
<comando>;
. . .
<comando>;
endfor;
39
comandos de repetio
while
O while o comando de repetio (lao) mais simples. Ele testa uma
condio e executa um comando, ou um bloco de comandos, at que a condio testada
seja falsa. Assim como o if, o while tambm possui duas sintaxes alternativas:
while (<expressao>)
<comando>;
while (<expressao>):
<comando>;
. . .
<comando>;
endwhile;
do... while
38
momento que encontra um valor igual ao da varivel testada, passa a executar todos os
comandos seguintes, mesmo os que fazem parte de outro teste, at o fim do bloco. por
isso usa-se o comando break, quebrando o fluxo e fazendo com que o cdigo seja
executado da maneira desejada. Veremos mais sobre o break mais adiante. Veja o
exemplo:
switch ($i) {
case 0:
print i igual a zero;
case 1:
print i igual a um;
case 2:
print i igual a dois;
switch ($s) {
case casa:
print A casa amarela;
case arvore:
print a rvore bonita;
case lampada:
print joao apagou a lampada;
37
if (expressao1) :
comando;
. . .
comando;
[ elseif (expressao2)
comando;
. . .
comando; ]
[ else
comando;
. . .
comando; ]
endif;
switch
if ($i == 0)
print i
elseif ($i ==
print i
elseif ($i ==
print i
igual a zero;
1)
igual a um;
2)
igual a dois;
switch ($i) {
case 0:
print i igual a zero;
break;
case 1:
print i igual a um;
break;
case 2:
print i igual a dois;
break;
}
if (expressao1)
comando1;
else
if (expressao2)
comando2;
else
if (expressao3)
comando3;
else
comando4;
O comando elseif tambm pode ser utilizado com dois tipos de sintaxe.
Em resumo, a sintaxe geral do comando if fica das seguintes maneiras:
if (expressao1)
comando;
[ elseif (expressao2)
comando; ]
[ else
comando; ]
35
if
if (expresso)
comando;
if (expresso):
comando;
. . .
comando;
endif;
if (expresso)
comando;
else
comando;
if (expresso):
comando;
. . .
comando;
else
comando;
. . .
comando;
endif;
34
Blocos
Um bloco consiste de vrios comandos agrupados com o objetivo de
relacion-los com determinado comando ou funo. Em comandos como if, for,
while, switch e em declaraes de funes blocos podem ser utilizados para permitir
que um comando faa parte do contexto desejado. Blocos em PHP so delimitados pelos
caracteres { e }. A utilizao dos delimitadores de bloco em uma parte qualquer do
cdigo no relacionada com os comandos citados ou funes no produzir efeito
algum, e ser tratada normalmente pelo interpretador.
Exemplo:
if ($x == $y)
comando1;
comando2;
Comandos de seleo
33
Exemplos:
$a = $b = 10; // $a e $b recebem o valor 10
$c = $a++; // $c recebe 10 e $a passa a ter 11
$d = ++$b; // $d recebe 11, valor de $b j incrementado
32
Comparao
==
igual a
!=
diferente de
<
menor que
>
maior que
<=
menor ou igual a
>=
maior ou igual a
Expresso condicional
(expressao1)?(expressao2):( expressao3)
de incremento e decremento
++
incremento
--
decremento
31
atribuio simples
+=
-=
*=
/=
%=
.=
Exemplo:
$a = 7;
$a += 2; // $a passa a conter o valor 9
bit a bit
&
e lgico
ou lgico
ou exclusivo
no (inverso)
<<
shift left
>>
shift right
Lgicos
Utilizados para inteiros representando valores booleanos
and
e lgico
or
ou lgico
xor
ou exclusivo
no (inverso)
&&
e lgico
||
ou lgico
30
08. Operadores
Aritmticos
adio
subtrao
multiplicao
diviso
mdulo
de strings
concatenao
de atribuio
29
Exemplo:
$vivas =
$vivas =
$vivas =
$vivas =
15;
(double) $vivas
3.9
(int) $vivas
//
//
//
//
//
(array)
(object)
Exemplo:
$vivas = 15;
settype($vivas,double)
// $vivas integer
// $vivas double
28
Exemplo:
$vivas =
$vivas =
$vivas =
$vivas =
1;
// $vivas a string 1
$vivas + 1; // $vivas o integer 2
$vivas + 3.7;// $vivas o double 5.7
1 + 1.5
// $vivas o double 2.5
nmeros o seguinte:
-
Exemplos:
$vivas = 1
$vivas = 1
$vivas = 1
$vivas = 1
$vivas = 1
$vivas = 1
+
+
+
+
+
+
10.5;
//
-1.3e3;
//
teste10.5; //
10testes; //
" 10testes";
"+ 10testes";
$vivas == 11.5
$vivas == -1299
$vivas == 1
$vivas == 11
// $vivas == 11
// $vivas == 1
27
No apndice 02 est disponvel uma lista das funes mais comuns para o
tratamento de arrays.
Objetos
Um objeto pode ser inicializado utilizando o comando new para instanciar
uma classe para uma varivel.
Exemplo:
class teste {
function nada() {
echo nada;
}
}
$vivas = new teste;
$vivas -> nada();
Booleanos
Transformao de tipos
26
Listas
As listas so utilizadas em PHP para realizar atribuies mltiplas.
Atravs de listas possvel atribuir valores que esto num array para variveis. Vejamos
o exemplo:
Exemplo:
list($a, $b, $c) = array(a, b, c);
==
==
==
==
null
um
dois
tres
25
Sintaxe
Significado
\n
Nova linha
\r
\t
Tabulao horizontal
\\
A prpria barra ( \ )
\$
O smbolo $
Aspa simples
Aspa dupla
Arrays
24
$vivas = 1.234;
$vivas = 23e4; # equivale a 230.000
Strings
a) utilizando aspas simples ( ' ) Desta maneira, o valor da varivel ser exatamente o
texto contido entre as aspas (com exceo de \\ e \' ver tabela abaixo)
b) utilizando aspas duplas ( " ) Desta maneira, qualquer varivel ou caracter de
escape ser expandido antes de ser atribudo.
Exemplo:
<?
$teste = "Mauricio";
$vivas = '---$teste--\n';
echo "$vivas";
?>
23
07. Tipos
Tipos Suportados
$vivas = 1234; #
$vivas = -234; #
$vivas = 0234; #
#
$vivas = 0x34; #
#
22
Exemplos:
<?
echo teste; /* Isto um comentrio com mais
de uma linha, mas no funciona corretamente ?>
*/
<?
echo teste; /* Isto um comentrio com mais
de uma linha que funciona corretamente
*/
?>
21
Nomes de variveis
Toda varivel em PHP tem seu nome composto pelo caracter $ e uma
string, que deve iniciar por uma letra ou o caracter _. PHP case sensitive, ou seja,
as variveis $vivas e $VIVAS so diferentes. Por isso preciso ter muito cuidado ao
definir os nomes das variveis. bom evitar os nomes em maisculas, pois como
veremos mais adiante, o PHP j possui alguma variveis pr-definidas cujos nomes so
formados por letras maisculas.
Comentrios
Exemplo:
<? echo teste; #isto um teste ?>
<? echo teste; //este teste similar ao anterior ?>
20
<?php
comandos
?>
<script language=php>
comandos
</script>
<?
comandos
?>
<%
comandos
%>
Separador de instrues
19
18
INDEX
SELECT
CREATE
INSERT
SHUTDOWN
DELETE
PROCESS
UPDATE
DROP
REFERENCES
USAGE
17
copiado, o arquivo pode ser editado, bastando modificar a linha extension_dir, que
deve conter o diretrio onde esto os mdulos (c:\php3). Veja o exemplo:
extension_dir
c:\php3
mySQL
O
banco
de
dados
mySQL
pode
ser
conseguido
em
16
como no exemplo:
DocumentRoot "C:\vivas\"
Feito isso, crie um arquivo com um dos nomes definidos como ndice e
coloque no diretrio definido como root. Execute o servidor Apache e tente acessar o
endereo http://localhost pelo browser. Se a pgina for exibida, porque o servidor
foi instalado corretamente.
PHP
O PHP pode ser conseguido em www.php.net, e sua instalao tambm
simples. Basta descompactar os arquivos para o diretrio c:\php3 e editar o arquivo
de configurao. O arquivo php3.ini-dist deve ser copiado para o diretrio do
windows (geralmente c:\windows ou c:\winnt) com o nome php3.ini. Depois de
15
14
Select
<select name="" size="" multiple>
<option value="">texto</option>
</select>
Upload de arquivos
<input type="file" name="" size="">
13
Parmetros:
Value o texto que aparecer no corpo do boto.
Reset Button
<input type="reset" name="" value="">
Button
<input type="button" name="" value="">
TextArea
<textarea cols="" rows="" name="" wrap="">texto</textarea>
Checkbox
<input type="checkbox" name="" value="" checked>
Radio Button
<input type="radio" name="" value="" checked>
Submit Button
<input type="submit" name="" value="">
11
parmetros em comum: type, que define o tipo de elemento, e name, que como j foi
dito define o nome daquele elemento.
Campo de Texto
10
Definindo um formulrio
Por ser uma linguagem de marcao, a sintaxe do HTML na maioria dos
casos exige uma tag de incio e uma de final daquele bloco. Exatamente isso que
ocorre com a definio de um formulrio: uma tag no incio e outra no final, sendo que
todos os elementos do formulrio devem estar entre as duas tags. Isto torna possvel a
incluso de mais de um formulrio num mesmo html. As tags citadas so:
Onde temos:
name: o identificador do formulrio. Utilizado principalmente em Scripts
client-side (JavaScript);
action: nome do script que receber os dados do formulrio ao ser
submetido. Mais frente esto abordadas as maneiras de tratar esses dados recebidos;
method: mtodo de envio dos dados: get ou post;
enctype: formato em que os dados sero enviados. O default
A tag <input>
Muitos elementos de um formulrio html so definidos pela tag <input>.
Cada tipo de elemento possui parmetros prprios, mas todos possuem pelo menos dois
O mtodo POST
Atravs da utilizao de headers possvel enviar os parmetros da URL
solicitada sem expor esses dados ao usurio, e tambm sem haver um limite de
tamanho.
Uma conexo ao servidor HTTP utilizando o mtodo POST seria algo
semelhante ao que segue:
telnet www.guia-aju.com.br 80
Trying 200.241.59.16...
Connected to www.guia-aju.com.br.
Escape character is '^]'.
POST /index.php3
Accept */*
Content-type: application/x-www-form-urlencoded
Content-length:22
id=0024horas&tipo=Taxi
(... pgina solicitada ...)
Connection closed by foreign host.
Headers
A verso 1.0 do protocolo HTTP trouxe boas inovaes ao mesmo. Uma
delas foi a criao de headers nas mensagens de requisio e de resposta. Os headers so
informaes trocadas entre o navegador e o servidor de maneira transparente ao usurio,
e podem conter dados sobre o tipo e a verso do navegador, a pgina de onde partiu a
requisio (link), os tipos de arquivos aceitos como resposta, e uma srie de outras
informaes.
Assim foi possvel definir um outro mtodo de requisio de arquivos,
que resolveu os principais problemas do mtodo GET.
Devemos notar que a requisio GET inicia com a palavra GET, inclui o
documento solicitado e encerra com a combinao dos caracteres carriage return e line
feed.
Para um melhor entendimento, voc pode fazer uma requisio GET
conectando diretamente em algum servidor WEB, conectando atravs de um programa
de telnet (geralmente o servidor http utiliza a porta 80). A resposta ser o cdigo da
pgina solicitada.
telnet www.guia-aju.com.br 80
Trying 200.241.59.16...
Connected to www.guia-aju.com.br.
Escape character is '^]'.
GET /index.php3
(... pgina solicitada ...)
Connection closed by foreign host.
Home Page Tools com o FI e adicionou suporte a mSQL, nascendo assim o PHP/FI, que
cresceu bastante, e as pessoas passaram a contribuir com o projeto.
Estima-se que em 1996 PHP/FI estava sendo usado por cerca de 15.000
sites pelo mundo, e em meados de 1997 esse nmero subiu para mais de 50.000. Nessa
poca houve uma mudana no desenvolvimento do PHP. Ele deixou de ser um projeto
de Rasmus com contribuies de outras pessoas para ter uma equipe de
desenvolvimento mais organizada. O interpretador foi reescrito por Zeev Suraski e
Andi Gutmans , e esse novo interpretador foi a base para a verso 3.
O lanamento do PHP4, ocorrido em 22/05/2000, trouxe muitas
novidades aos programadores de PHP. Uma das principais foi o suporte a sesses,
bastante til pra identificar o cliente que solicitou determinada informao. Alm das
mudanas referentes a sintaxe e novos recursos de programao, o PHP4 trouxe como
novidade um otimizador chamado Zend, que permite a execuo muito mais rpida de
scripts PHP. A empresa que produz o Zend promete para este ano o lanamento de um
compilador de PHP. Cdigos compilados sero executados mais rapidamente, alm de
proteger o fonte da aplicao.
Basicamente, qualquer coisa que pode ser feita por algum programa CGI
pode ser feita tambm com PHP, como coletar dados de um formulrio, gerar pginas
dinamicamente ou enviar e receber cookies.
PHP tambm tem como uma das caractersticas mais importantes o
suporte a um grande nmero de bancos de dados, como dBase, Interbase, mSQL,
mySQL, Oracle, Sybase, PostgreSQL e vrios outros. Construir uma pgina baseada em
um banco de dados torna-se uma tarefa extremamente simples com PHP.
Alm disso, PHP tem suporte a outros servios atravs de protocolos
como IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP. Ainda possvel abrir
sockets e interagir com outros protocolos.
O que PHP?
01. Introduo
Client-Side Scripts
So responsveis pelas aes executadas no browser, sem contato com o
servidor. Os exemplos mais comuns de aplicaes client-side so imagens e textos que
mudam com o passar do mouse.
Os scripts client-side so muito teis para fazer validaes de formulrios
sem utilizar processamento do servidor e sem provocar trfego na rede. Outra utilizao
comum na construo de interfaces dinmicas e leves.
Server-Side Scripts
Os scripts server-side so responsveis pela criao de pginas em tempo
real. Num mecanismo de busca, por exemplo, seria invivel manter um arquivo para
cada consulta a ser realizada. O que existe um modelo da pgina de resposta, que
mesclado com os dados no momento em que a pgina requisitada.
Notas do autor
Este documento foi criado inicialmente como parte do projeto de
concluso de curso da Universidade Federal de Sergipe, e distribudo gratuitamente
atravs da Internet.
Depois de terminado o projeto, recebi diversas sugestes sobre contedo a
incluir, e tambm passei a dar cursos de PHP em diversas instituies de Sergipe.
Diante disso, continuei a escrever o documento, sendo algumas incluses para atender
s sugestes e outras para utilizar nos cursos.
Como poder ser observado principalmente no captulo 05, o documento
no est concludo, e nem sei se algum dia estar, tendo em vista que o uso de PHP
cresce cada vez mais, e ainda falta muito a ser dito sobre ele aqui.
Apesar de citar em alguns pontos o PHP4, o documento ainda baseado
em PHP3, lanado h menos de um ms. Porm todo o contedo que segue
compatvel com PHP4, e por isso no h problema em lanar esta nova verso baseada
em PHP3.
Se voc tem uma pgina com tutoriais, ou gostou deste documento e quer
public-lo em seu site, fique vontade. S peo duas coisas:
1. Me avise, informando a URL do site (s por curiosidade minha);
2. Lembre-se que o autor do documento sou eu. Apesar de ainda no ter
visto, j fui informado que h cpias piratas deste documento. Mas
quero lembrar que no preciso piratear algo completamente
GRATUITO.
Se houver alguma informao incorreta, peo que me informem por email. Se tiverem dvidas sobre temas tratados aqui, ou at sobre os ainda no presentes
neste documento, entrem em contato comigo por e-mail. Para obter a verso original do
documento, voc pode pedir por e-mail, ou visitar o site www.vivas.com.br.
Meu e-mail? mauricio@vivas.com.br.
vii
trim ................................................................................................... 86
strrev ................................................................................................ 86
strtolower ......................................................................................... 87
strtoupper......................................................................................... 87
ucfirst ............................................................................................... 87
ucwords ............................................................................................ 87
str_replace........................................................................................ 88
FUNES DIVERSAS .............................................................................. 88
chr .................................................................................................... 88
ord .................................................................................................... 88
echo .................................................................................................. 88
print .................................................................................................. 88
strlen................................................................................................. 88
APNDICE 02 - FUNES PARA TRATAMENTO DE ARRAYS ......................... 89
FUNES GENRICAS............................................................................ 89
Array ................................................................................................ 89
range ................................................................................................ 89
shuffle............................................................................................... 90
sizeof................................................................................................. 90
FUNES DE NAVEGAO ................................................................. 90
reset .................................................................................................. 90
end.................................................................................................... 90
next................................................................................................... 91
prev .................................................................................................. 91
pos .................................................................................................... 91
key .................................................................................................... 91
each .................................................................................................. 91
FUNES DE ORDENAO ..................................................................... 92
sort ................................................................................................... 92
rsort .................................................................................................. 92
asort ................................................................................................. 93
arsort ................................................................................................ 93
ksort ................................................................................................. 93
usort ................................................................................................. 93
uasort ............................................................................................... 93
uksort ............................................................................................... 94
APNDICE 03 TIPOS SUPORTADOS PELO MYSQL............................................ 95
NUMRICOS .......................................................................................... 95
DATA E HORA ....................................................................................... 95
STRINGS ................................................................................................ 96
vi
O QUE SO ............................................................................................ 71
GRAVANDO COOKIES ............................................................................. 71
LENDO COOKIES GRAVADOS.................................................................. 72
18. MANIPULANDO ARQUIVOS....................................................................................... 73
CLASSE ................................................................................................. 54
OBJETO ................................................................................................. 54
A VARIVEL $THIS ................................................................................ 54
SUBCLASSES ......................................................................................... 55
CONSTRUTORES .................................................................................... 55
13. NOES DE SQL.............................................................................................................. 57
INTRODUO......................................................................................... 57
ESTRUTURA DAS TABELAS .................................................................... 58
COMANDO CREATE ............................................................................... 58
Comando Drop................................................................................. 58
Comando Alter................................................................................. 59
MANIPULANDO DADOS DAS TABELAS ................................................... 59
Comando SELECT........................................................................... 59
Comando INSERT ............................................................................ 60
Comando UPDATE ......................................................................... 60
Comando DELETE .......................................................................... 61
14. ACESSANDO O MYSQL VIA PHP.............................................................................. 63
Objetos ............................................................................................. 26
Booleanos......................................................................................... 26
TRANSFORMAO DE TIPOS .................................................................. 26
Coeres........................................................................................... 26
Transformao explcita de tipos..................................................... 27
Com a funo settype....................................................................... 28
08. OPERADORES ................................................................................................................... 29
ARITMTICOS ........................................................................................ 29
DE STRINGS ............................................................................................ 29
DE ATRIBUIO ..................................................................................... 29
BIT A BIT................................................................................................ 30
LGICOS................................................................................................ 30
COMPARAO....................................................................................... 31
EXPRESSO CONDICIONAL .................................................................... 31
DE INCREMENTO E DECREMENTO ........................................................... 31
09. ESTRUTURAS DE CONTROLE................................................................................... 33
BLOCOS ................................................................................................. 33
COMANDOS DE SELEO ....................................................................... 33
if ....................................................................................................... 34
switch ............................................................................................... 36
COMANDOS DE REPETIO .................................................................... 38
while ................................................................................................. 38
do... while ......................................................................................... 38
for..................................................................................................... 39
QUEBRA DE FLUXO ................................................................................ 40
Break ................................................................................................ 40
Continue........................................................................................... 40
10. FUNES ............................................................................................................................. 42
ndice
NDICE...........................................................................................................................................II
NOTAS DO AUTOR....................................................................................................................1
01. INTRODUO......................................................................................................................2
O MTODO GET...................................................................................... 6
HEADERS................................................................................................. 7
O MTODO POST.................................................................................... 8
UTILIZANDO GET E POST...................................................................... 8
03. FORMULRIOS HTML.....................................................................................................9
SERVIDOR APACHE................................................................................ 15
PHP ...................................................................................................... 15
MYSQL................................................................................................. 16
05. INSTALAO E CONFIGURAO EM AMBIENTE LINUX REDHAT..... 18
ii
Aracaju, junho/2000