Você está na página 1de 28

Prof. Carlos Majer Aplicaes Corporativas UNICID Este material pertence a Carlos A.

A. Majer, Professor da Unidade Curricular: Aplicaes Corporativas da Universidade Cidade de So Paulo UNICID

Licena de Uso Este trabalho est licenciado sob uma Licena Creative Commons Atribuio-Vedada a Criao de Obras Derivadas 2.5 Brasil. Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/bynd/2.5/br/ ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Este material no pode ser alterado. Para maiores informaes envie um e-mail para cmajer@uol.com.br ou cmajer@ig.com.br.

PHP

PHP: Hypertext Processor


<html> <head> <title>PHP</title> </head> <body> <h1>PHP</h1> <p>UNICID tem <?php echo strlen('UNICID') . ' letras';?> </p> </body> </html>

Introduo
Um SCRIPT um conjunto de instrues ou comandos, tambm chamado de programa, baseados numa determinada linguagem (PHP, Javascript, etc), que executam certas operaes. Agindo geralmente de forma automtica, estes programas caracterizam-se por sua necessidade de interpretao por um software (em geral um servidor web ou navegador), diferentemente dos programas que precisam ser compilados e ligados (link-editados). Conforme o tipo de script, ele pode ser executado no servidor ou no micro cliente.

Apostila de Introduo ao PHP

Pgina

Prof. Carlos Majer Aplicaes Corporativas UNICID O PHP caracteriza-se por ser uma linguagem de script. Ela supre uma necessidade que existe na linguagem baseada em marcas HTML, principalmente no que diz respeito s limitaes que advm do carter esttico do HTML. A linguagem PHP open source, o que significa que pode ser utilizada sem o pagamento de royalties terceiros. Ela caracteriza-se por ser uma linguagem que primeiramente executada (processada) num servidor web (computador que roda um ambiente que recebe solicitaes para acesso s pginas HTML) para em seguida disponibilizar a pgina resultante ao usurio solicitante. Resumindo, a pgina PHP no executada no navegador do usurio e sim no servidor onde a mesma est hospedada.

Seu navegador no entende PHP. Apenas HTML, algumas linguagens de script (Javascript, Vbscript, etc) e CSS
Enquanto as pginas HTML provm limitada funcionalidade, a insero do PHP expande os limites desta tecnologia, trazendo grande nmero de vantagens e amadurecendo o desenvolvimento atravs de programao dinmica. O PHP tem evoludo constantemente e traz cada vez mais facilidades no desenvolvimento de sites. Atualmente, diversas bibliotecas foram disponibilizadas ao PHP contribuindo para enriquecer esta linguagem. PHP muito utilizado para manipulao de banco de dados, processamento dinmico, manipulao de imagens, dentre outras possibilidades.

Funcionamento
O desenvolvedor pode criar uma pgina feita toda em PHP ou mescl-la com HTML, ou seja, inserindo comandos dentro do HTML. A linguagem PHP pode ento ser embutida dentro do cdigo HTML e o servidor PHP processa apenas o cdigo PHP (ignorando o HTML), inserindo o resultado deste processamento no lugar dos comandos PHP (em formato HTML), de forma a gerar uma pgina HTML final que ser enviada ao cliente (navegador do usurio). Esta pgina final a mesma dos comandos em HTML existentes anteriormente junto com o resultado processado pelo servidor PHP.

Extrapolando Limites
Certos limites do HTML podem ser claramente verificados: Imagine a quantidade de trabalho necessria na criao das pginas de um grande conjunto de informaes, como por exemplo, um catlogo de peas de uma grande empresa. Alm de trabalhoso, tambm muito difcil controlar a manuteno deste conjunto de pginas, especialmente quando existem diferentes regras de negcio aplicadas na exibio das pginas Seria muito complexo efetuar uma mudana de contextos (exemplo: conforme login de usurio, site apresentaria um conjunto de informaes para cliente e outro para administrador)

Formas de Utilizao
Um comando ou conjunto de comandos PHP deve ser inserido dentro das seguintes marcas especficas:-

1) Forma Tradicional:<?php comando php; ?>


Esta a forma mais tradicional e que os interpretadores iro entender.

2) Via marca de script:<script language="php"> comando php; </script>

Apostila de Introduo ao PHP

Pgina

Prof. Carlos Majer Aplicaes Corporativas UNICID Esta outra forma que tambm aceita e corretamente interpretada.

3) Usando marca curta


<? comando php; ?>
Conhecido como short tag, este um tipo de marca muito utilizado pelos desenvolvedores.
Para que o interpretador PHP consiga entender estas instrues, necessrio que o arquivo PHP.INI seja devidamente configurado.

Procure tambm por pela funo short_tags() e opo --enable-short-tags

4) Usando marcas de ASP


<% comando php; %> A partir da verso 3.0.4 existe a possibilidade de se usar marca do tipo ASP.

Para garantir a mxima portabilidade e funcionalidade, utilize o conjunto de marcas <?php

?>.

PHP e HTML
Uma vez criada, a pgina PHP armazenada no SERVIDOR. A pgina processada (interpretada) no Servidor e o cdigo resultante em HTML enviado ao navegador. O navegador recebe apenas o resultado do cdigo interpretado, ou seja, apenas aquilo que ele consegue entender (HTML, Javascript, CSS, etc).

Exemplo:<html> <head> <title>Primeira Pagina PHP</title> </head> <body> <?php echo "Isto ser inserido na pgina HTML."; ?> </body> </html>
Ao encontrar a marca <?php, o PHP ir processar tudo at encontrar um ponto e virgula o processamento PHP.

; , que finaliza

A marca de fechamento ?> opcional. Quando esta marca no inserida, o desenvolvedor pode incluir outros arquivos (include/require) no cdigo PHP. Outra forma de se iniciar um cdigo PHP atravs de sua forma curta inserir o texto

<?, ou seja, no sendo necessrio

php.

Caixa Alta ou Caixa Baixa?


O desenvolvedor deve se preocupar com maisculos e minsculos, uma vez que o PHP sensvel a caixa.

Inserindo Comentrios
Comentar o cdigo uma atividade que todo desenvolvedor deve seguir. Para isto, o PHP prov a possibilidade de comentrio por linha ou por bloco.

Apostila de Introduo ao PHP

Pgina

Prof. Carlos Majer Aplicaes Corporativas UNICID Comentrio por linha:-

<? # Esta linha um comentrio echo 'Teste'; ?>


Apenas o string 'Teste' ir aparecer.

Comentrio por bloco


/* Coloque os comentrios em bloco entre barra e asterisco, finalizando-os com asterisco e barra */

Tipos de Dados
Segue uma relao de alguns tipos de dados disponveis pelo PHP:-

Tipo Booleano

Domnio TRUE ou FALSE

Descrio Utilizado para valores boleanos (verdadeiro ou falso) * Verifique no manual do PHP, pois existem outras possibilidades de definio do valor FALSE Utilizado para valores inteiros. A diferena entre ambos (inteiro e longo) o nmero de bytes utilizado para armazenamento do valor, feito automaticamente pelo PHP. * Verifique no manual do PHP como se definem nmeros em outras bases (octais e hexadecimais) Utilizado para valores com casas decimais e quando se trata de um grande nmero inteiro (maior do que o tipo Inteiro pode armazenar). * Verifique no manual do PHP como se definir um nmero flutuante com grande nmero de casas.

Inteiro / Longo

Conjunto Z {..,-1, 0 , 1 , ..} Em geral, 32 bits (aproximadamente 2 bilhes) Mximo de ~1.8e308 com preciso de 14 decimais digitais (nmero de 64 bits no formato IEEE).

Ponto Flutuante

String

Cadeia de String um conjunto de caracteres geralmente delimitados por caracteres limitada apstrofos ou aspas. pela memria. * Se uma string for delimitada por aspas, voc conseguir expandir o valor de uma varivel (desde que o PHP consiga identificar corretamente esta varivel) ou caractere de escape. Vetor ou Matriz contendo de 0 a muitos elementos Este tipo de objeto um vetor (quando tem uma nica dimenso) ou matriz (quando tem mais do que uma dimenso). Cada item numa array referenciado por um ndice, que pode ser numrico ou string.

Array

Variveis
A criao de variveis no PHP segue a seguinte regra: Todas as variveis devem ser precedidas do smbolo $ (Dlar ou cifro). Em seguida deve vir uma letra ou o caractere de sublinhado, para em seguida qualquer

Apostila de Introduo ao PHP

Pgina

Prof. Carlos Majer Aplicaes Corporativas UNICID letra, nmero ou caractere de sublinhado. Caso aps o sinal de $ se insira um nmero, esta varivel est incorreta. Exemplos:-

$ativo =FALSE; $valor=1; // Nmero Inteiro $valor2=-2; # Outro nmero inteiro $valor=45.12; // Este um nmero de ponto flutuante $nome='Carlos'; $texto='Isto um string'; $1teste=123; // Errado

Trabalhando com Formulrios


Quando criamos um formulrio numa pgina HTML estamos basicamente inserindo um conjunto de diferentes objetos de formulrio, dentre eles: Caixas de Texto, de Senha reas de Texto Campos Escondidos Botes de Checagem Botes de Rdio Listas de Seleo Arquivos Um uso muito comum do PHP ocorre quando precisamos gravar informaes de um formulrio numa tabela de um banco de dados.

Criando o arquivo HTML


Para utilizarmos formulrios, precisamos inicialmente criar uma pgina em HTML, com os objetos de formulrio que desejamos passar para a pgina PHP. Exemplo TESTE1.HTM :-

<html> <head> <title>Teste de Formulrio</title> </head> <body> <form name="f1" method="get" action="programa.php"> Nome: <input type="text" name="nome"> <br /> <input type="submit" value="Enviar"> </form> </body> </html>

Apostila de Introduo ao PHP

Pgina

Prof. Carlos Majer Aplicaes Corporativas UNICID

Mtodo de Envio - get


Desenvolvedor insere a marca form (que inicia o formulrio) e dentro dela informa o mtodo pelo qual os objetos deste formulrio sero enviados para a pgina destino. O mtodo get determina que as informaes dos objetos sejam expostas (e passadas) na rea de endereo do navegador (onde o usurio digita o endereo da pgina que deseja acessar). Exemplo:programa.php?nome=Carlos Este mtodo tem algumas limitaes:O tamanho permitido pequeno. Algo em terno de 128 bytes As informaes ficam expostas No se consegue enviar arquivos (upload de arquivos).

Mtodo de Envio post


Como opo ao mtodo get, temos o mtodo post, que alm de no expor o contedo dos objetos de formulrio na barra de endereos, permite tambm o envio de quantidade maior de informaes (caracteres) alm do que tambm possibilita o envio (upload) de arquivos (verificado posteriormente). Exemplo:-

<form name="f1" method="post " action="programa.php">

Pgina Destino action


O desenvolvedor informa qual a pgina que ir receber os objetos do formulrio atravs do atributo action. neste local que iremos informar o nome da pgina PHP.

<form name="f1" method="get" action="programa.php">


Podemos utilizar dois tipos de referncia ao arquivo que ir receber os objetos do formulrio:Atravs de sua URL Atravs de uma posio relativa Quando utilizamos uma URL, devemos informar o caminho completo para se chegar pgina. Exemplo:http://www.dominio.com.br/pasta/programa.php O que inserido dentro do comando ficaria:-

<form name="f1" method="get" action="http://www.site.com.br/pasta/programa.php">


Para utilizarmos um caminho relativo, devemos verificar onde a pgina destino est localizada, em relao pgina que est chamando-a. Exemplo:Supondo que a pgina HTML chama-se TESTE1.HTM e est no mesmo diretrio (dentro do site) que a pgina programa.php. Neste caso, o desenvolvedor pode informar apenas o nome da pgina (arquivo) destino que o servidor far esta busca localmente (internamente). Caso a pgina programa.php estivesse numa pasta de nome programas, abaixo do diretrio onde TESTE1.HTM se encontra, ento o caminho para acesso pgina PHP seria:programas/programa.php O que inserido dentro do comando ficaria:-

<form name="f1" method="get" action="programas/programa.php">

Apostila de Introduo ao PHP

Pgina

Prof. Carlos Majer Aplicaes Corporativas UNICID

Inserindo objetos dentro do formulrio


O prximo passo seria inserir os objetos no (dentro do / abaixo do) formulrio. No exemplo acima, estamos inserindo dois objetos:Um campo do tipo entrada/caixa de texto, cujo nome (atributo name) nome Um boto de submisso do formulrio, obrigatrio para enviar o formulrio sua pgina destino (action)

Caso o desenvolvedor no informe o atributo name, o objeto no pode ser reconhecido pelo PHP
Em seguida, o desenvolvedor fecha o formulrio atravs do encerramento da marca </form>, bem como encerra as marcas de corpo </body> e de pgina HTML </html> Neste momento, o desenvolvedor tem a pgina que ser a responsvel pela criao dos objetos em seu navegador e que ir enviar estes objetos de formulrio para a pgina destino.

De preferncia, salve esta pgina HTML num local (pasta/diretrio) onde exista um servidor web instalado (Exemplo: Apache).

Criando o arquivo PHP


Neste momento hora de preparar o arquivo PHP que ir receber os objetos de formulrios, que esto vindos da pgina HTML. Para isto importante que se entendam algumas consideraes bsicas do PHP.

Recebendo variveis no PHP advindas de um formulrio


No PHP, as variveis advindas de um formulrio HTML so armazenadas em duas matrizes:$_GET $_POST Para acessar estas matrizes, o usurio dever utilizar a seguinte sintaxe:-

$_POST["<nome do objeto>"] $_GET["<nome do objeto >"]


Exemplo:-

echo $_GET["cidade"]; $nome = $_POST["nome"];


Algo muito comum em PHP criar variveis que iro armazenar os valores advindos dos objetos de formulrios PHP. Exemplo:-

$nome = $_POST["nome_cliente"]; $telefone = "(" . $_POST["ddd"] . ") " . $_POST["telefone"];

Recebendo objetos do tipo textbox, password e hidden


Basicamente, o que acaba sendo enviado para o PHP o string contido dentro deste tipo de objeto.

Objeto do tipo password igual ao elemento do tipo textbox, sendo que ao ser digitado seu contedo, asteriscos iro aparecer no lugra das letras. Objeto do tipo hidden (escondido) mantm o seu valor, mas no exibido ao usurio na pgina HTML (tela do navegador)

Apostila de Introduo ao PHP

Pgina

Prof. Carlos Majer Aplicaes Corporativas UNICID

Recebendo objetos do tipo checkbox


Quando configuramos um objeto do tipo checkbox dentro de um formulrio, ele poder ou no ser enviado, para a pgina destino (action) mediante o seu valor. Quando um objeto deste tipo no est checado na pgina HTML, ele simplesmente no enviado para a pgina destino. Sendo assim, se o desenvolvedor tentar acessar/checar seu valor na matriz $_GET ou $_POST, ele recebe um erro de execuo, porque este objeto no existe (no foi enviado). Exemplos:Chamada da pgina PHP sem checar o objeto:http://localhost/TipoCheck.php? Chamada da pgina PHP checando o objeto:http://localhost/TipoCheck.php?ativo=on Ou quando o desenvolvedor checa o objeto e informa seu atributo value:http://localhost/TipoCheck.php?ativo=SIM Quando o objeto checado, o formulrio PHP pode se deparar com dois possveis valores:on o valor padro que enviado pelo formulrio, quando o desenvolvedor no utilizou o atributo value do objeto checkbox. O segundo valor o que o desenvolvedor declarou no atributo value do objeto.

<input type="checkbox" id="ativo" name="ativo" value="SIM">

Recebendo objetos do tipo radio


O objeto do tipo radio funciona de maneira similar ao objeto checkbox. Este tipo de objeto geralmente utilizado para se escolher uma opo exclusiva, dentro outras. Para isto cria-se um conjunto de diversos objetos do tipo radio com o mesmo nome (name), mas com valores (value) diferentes. Se o desenvolvedor no deixa nenhum dos objetos checado (selecionado) por padro, ele corre o risco do usurio no selecionar um dos objetos e desta forma ele precisar verificar no PHP se o objeto est setado.

Detalhes de recebimento de objetos do tipo checkbox e radio


Alguns objetos de formulrio, quando no so selecionados (checados) na pgina HTML, simplesmente no so enviados para a pgina destino (PHP). Se o objeto no enviado, isto significa que ele no existe e desta forma, qualquer tentativa para acessar seu contedo resultar em erro na execuo da pgina. Para evitar este tipo de problema, o desenvolvedor pode tomar duas aes:1) Utilizar o atributo checked na criao de um dos elementos do grupo 2) Utilizar a funo isSet que verifica se um objeto foi enviado (e desta forma existe)

Recebendo objetos de uma Lista


Quando o desenvolvedor cria uma lista na pgina HTML, o que enviado para o PHP vai depender do atributo value das opes desta lista. Caso o desenvolvedor no tenha informado a opo value, o que ir ao PHP ser o texto do item inserido. Caso o atributo value tenha sido informado, ento este o valor que ser enviado ao PHP. Exemplo:http://localhost/TipoLista.php?estCivil=Separado&estCivil2=Solteiro&estCivil3=S

Recebendo objetos Listas com mltiplos valores


Para se trabalhar com lista de mltiplos valores, o usurio dever habilitar o atributo multiple da lista, na pgina HTML. Ser conveniente tambm que ele defina o tamanho visual da lista atravs do atributo size. Para se trabalhar com mltiplos valores numa lista, o atributo name dever ser uma matriz, ou seja, o desenvolvedor deve colocar o nome da matriz seguido de []. Isto far com que o PHP interprete o objeto

Apostila de Introduo ao PHP

Pgina

Prof. Carlos Majer Aplicaes Corporativas UNICID como um vetor, inserindo os valores que recebe neste objeto, possibilitando o acesso a todos os valores escolhidos pelo usurio. Exemplo:-

<select name="carros2[]" id="carros2[]" multiple size="4">


No programa PHP, o desenvolvedor poder utilizar a estrutura de lao de repetio for, em conjunto com a funo sizeof (que retorna o tamanho de um vetor/matriz) para poder acessar todos os itens do vetor/matriz recebido. Exemplo:-

$tam=sizeof($_GET['carros']) ; for($n=0 ; $n< $tam ; $n++) { echo $_GET['carros'][$n] . '<br>';

Recebendo objeto do tipo arquivo (upload)


Para enviar arquivos de um formulrio HTML, o desenvolvedor deve executar os seguintes passos:1) Utilizar o atributo method com o valor post, para assegurar-se de que no ter problemas com o tamanho do arquivo a ser enviado 2) Utilizar o atributo enctype com o valor multipart/form-data prevendo O atributo enctype lida com a forma pela qual o contedo ser transmitido de uma ponta a outra. Seu valor padro application/x-www-form-urlencoded e o mais utilizado para os diversos tipos de envio de dados, com exceo quando se envia um arquivo. Neste caso, para enviar um arquivo, o desenvolvedor deve escolher o valor multipart/form-data para o atributo enctype. Exemplo:-

<form action="TipoArquivo.php" method="post" name="F1" enctype="multipart/form-data"> Escolha o arquivo<br> <input type="file" id="arquivo" name="arquivo"> <input type="submit" value="Enviar"> </form>
Quando o servidor recebe o formulrio, os dados podem ficar na matriz $_GET ou $_POST, mas quando se recebe arquivos (upload), suas informaes ficam na varivel $_FILES, que a matriz que mantm os dados de arquivos recebidos.

Para verses anteriores do PHP, a matriz que recebe tais valores a $HTTP_POST_FILES.
As seguintes informaes podem ser acessadas:["nome do arquivo"] ["name"] Nome do arquivo ["nome do arquivo"] ["size"] Tamanho do arquivo, em bytes ["nome do arquivo"] ["type"] Tipo do arquivo ["nome do arquivo"] ["tmp_name"] Nome da pasta de armazenamento temporria do arquivo Ao final do processamento do script PHP, o arquivo existente na pasta temporria simplesmente eliminado.

Movendo o arquivo para sua pasta final


O arquivo que recebido armazenado numa pasta temporria at o termino de execuo do script PHP. Assim que o mesmo finalizar, este arquivo (temporrio) eliminado. Nossa tarefa, como desenvolvedor transferir o arquivo pasta de arquivos recebidos antes do trmino da execuo do script PHP. Para isto, utilizamos a funo move_uploaded_file().

Apostila de Introduo ao PHP

Pgina

Prof. Carlos Majer Aplicaes Corporativas UNICID

if (move_uploaded_file($_FILES['arquivo']['tmp_name'], 'uploads/' . _FILES['arquivo']['name'])) echo "Arquivo ". basename( $_FILES['arquivo']['name']). " recebido com sucesso"; else echo "Houve algum problema no recebimento do arquivo";
Para restringir o tipo de arquivo a ser recebido, verifique o elemento type da matriz. Exemplo:-

if ($_FILES["arquivo"]["type"] != 'image/jpeg') echo "Tipo invlido de arquivo";


A pasta destino do arquivo j dever existir.
Contedo do Arquivo TipoArquivo.php:-

<body> <h1>PHP - Recebe Arquivo</h1> <?php if ($_FILES["arquivo"]["error"]>0) echo "Erro: " . $_FILES["arquivo"]["error"] . "<br>"; else { echo "Nome do Arquivo: " . $_FILES["arquivo"]["name"] . "<br>"; echo "Tamanho: " . $_FILES["arquivo"]["size"] . "<br>"; echo "Tipo: " . $_FILES["arquivo"]["type"] . "<br>"; echo "Pasta de Armazenamento:" . $_FILES["arquivo"]["tmp_name"] . "<br>"; // Parte 2 $pasta_destino = "uploads/"; $pasta_destino .= $_FILES["arquivo"]["name"]; if (move_uploaded_file($_FILES["arquivo"]["tmp_name"] , $pasta_destino)) echo "Arquivo <strong>" . $_FILES["arquivo"]["name"] . "</strong> recebido com sucesso"; else echo "Ocorreu algum erro no recebimento do Arquivo " . $_FILES["arquivo"]["name"]; } ?> </body>

Configurando o PHP.INI
Algumas configuraes do PHP.INI so importantes para que o upload de arquivos funcione de forma adequada.

Apostila de Introduo ao PHP

Pgina

10

Prof. Carlos Majer Aplicaes Corporativas UNICID Uma delas a seo file_uploads que deve estar com o valor On ou 1 para receber arquivos

file_uploads = On
Outra o nome do diretrio temporrio que armazenar os arquivos recebidos (se no for especificado utilizar o padro do sistema):-

upload_tmp_dir = "${path}\tmp\"
O tamanho mximo de um arquivo pode ser definido pela diretiva abaixo:-

upload_max_filesize = 2M
Caso deseje precaver o usurio de enviar um arquivo de tamanho maior que o desejado, o desenvolvedor pode inserir um campo de nome MAX_FILE_SIZE definindo em seu atributo value o tamanho mximo de um arquivo. Exemplo:-

<input type="hidden" name="MAX_FILE_SIZE" value="150000">

Apostila de Introduo ao PHP

Pgina

11

Prof. Carlos Majer Aplicaes Corporativas UNICID

Arrays
Array o nome ingls para um tipo de objeto composto por uma coleo de dados. Esta coleo de dados, que pode ser de uma dimenso (vetor) ou de vrias dimenses (matrizes), pode conter diferentes tipos de dados. Irei utilizar a denominao matriz (es) para referenciar este tipo de objeto.

Criando Matrizes
Uma das formas de se cri-las atravs da funo array(). Exemplo:-

$carros= array("Polo", "Fiesta","Mercedes");


print_r($carros); // A funo print_r serve para relacionar os valores de uma matriz num formato inteligvel pelo ser humano Resultado Array ( [0] => Polo [1] => Fiesta [2] => Mercedes ) Notem que o PHP inseriu automaticamente os valores dentro da matriz utilizando ndices numricos seqenciais.

Referenciando uma Matriz atravs de chaves


Outra forma de se referenciar um item de uma matriz atravs de uma chave, ou seja, um nome entre aspas que identifica um item especfico da coleo. Exemplo:-

<?php $frutas = array ('a' => 'Abacate', 'b' =>'Banana','c' => 'Carambola'); print_r ($frutas); ?>
Resultado:Array ( [a] => Abacate [b] => Banana [c] => Carambola ) Podemos definir um ndice inicial para insero de itens numa matriz. Exemplo de Meses:-

<?php $meses = array(7 => 'Janeiro', 'Fevereiro', 'Maro', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'); print_r($meses); ?>

Apostila de Introduo ao PHP

Pgina

12

Prof. Carlos Majer Aplicaes Corporativas UNICID Resultado:Array ( [7] => Janeiro [8] => Fevereiro [9] => Maro [10] => Abril [11] => Maio [12] => Junho [13] => Julho [14] => Agosto [15] => Setembro [16] => Outubro [17] => Novembro [18] => Dezembro ) Uma item de uma matriz pode ter mais do que uma dimenso:-

<?php $frutas = array ('c' => 'Carambola', 'b' =>'Banana', 'a' => array ('Abacate', 'Abacaxi', 'Ameixa')); print_r ($frutas); ?>
Resultado:Array ( [c] => Carambola [b] => Banana [a] => Array ( [0] => Abacate [1] => Abacaxi [2] => Ameixa ) ) Alguns exemplos:-

Arquivo Carros.php
Matriz 1 - Carros <html> <head> <title>Matriz de Carros</title> </head> <body> <?php $carros= array("Polo", "Fiesta","Mercedes"); print_r($carros); ?> </body> </html>

Arquivo Frutas.php
<html> <head> <title>Matriz de Frutas</title> </head> <body> <?php $frutas = array ('a' => 'Abacate', 'b' =>'Banana','c' => 'Carambola'); print_r ($frutas); ?> </body> </html>

Arquivo Frutas2.php
<html> <head>

Apostila de Introduo ao PHP

Pgina

13

Prof. Carlos Majer Aplicaes Corporativas UNICID

<title>Matriz 2</title> </head> <body> <?php $frutas = array ('c' => 'Carambola', 'b' =>'Banana', 'a' => array ('Abacate', 'Abacaxi', 'Ameixa')); print_r ($frutas); ?> </body> </html>

Arquivo Deptos.php
<html> <head> <title>Matriz de Departamentos e Empregados</title> </head> <body> <?php $departamento[0] $departamento[1] $departamento[2] $departamento[3] = = = = "financeiro"; "producao"; "rh"; "comercial";

$empregados["financeiro"] = 5; $empregados["producao"] = 32; $empregados["rh"] = 3; $empregados["comercial"] = 15; print "Os departamentos da empresa so:-<br>"; foreach ($departamento as $d) { echo $d.'<br>'; } ?> </body> </html>

Arquivo Deptos2.php
<html> <head> <title>Matriz 2 de Departamentos e Empregados</title> </head>

Apostila de Introduo ao PHP

Pgina

14

Prof. Carlos Majer Aplicaes Corporativas UNICID

<body> <?php $departamento[0] $departamento[1] $departamento[2] $departamento[3] = = = = "financeiro"; "producao"; "rh"; "comercial";

sort($departamento); print "Os departamentos da empresa em ordem alfabtica so:-<br>"; foreach ($departamento as $d) { echo $d.'<br>'; } rsort($departamento); print "<br>Os departamentos da empresa em ordem reversa so:<br>"; foreach ($departamento as $d) { echo $d.'<br>'; } ?> </body> </html>

Arquivo Deptos3.php
<html> <head> <title>Matriz 3 de Departamentos e Empregados</title> </head> <body> <?php $departamento['C'] $departamento['D'] $departamento['A'] $departamento['B'] = = = = "financeiro (C)"; "producao (D)"; "rh (A)" ; "comercial (B)";

sort($departamento); print "Os departamentos da empresa em ordem alfabtica so:-<br>"; foreach ($departamento as $d) { echo $d.'<br>';

Apostila de Introduo ao PHP

Pgina

15

Prof. Carlos Majer Aplicaes Corporativas UNICID

} arsort($departamento); print "<br>Os departamentos da empresa em ordem da chave so:<br>"; foreach ($departamento as $d) { echo $d.'<br>'; } ?> </body> </html>

Arquivo Deptos4.php
<html> <head> <title>Matriz 4 de Departamentos e Empregados</title> </head> <body> <?php $departamento[0] $departamento[1] $departamento[2] $departamento[3] = = = = "financeiro"; "producao"; "rh"; "comercial";

$empregados["financeiro"] = 5; $empregados["producao"] = 32; $empregados["rh"] = 3; $empregados["comercial"] = 15; sort($departamento); print "Os departamentos da empresa em ordem alfabtica so:-<br>"; for ($n=0;$n<sizeof($departamento);$n++) { echo 'Departamento ' . $departamento[$n].' tem ' . $empregados[$n] . ' empregados <br>'; } ?> </body> </html>

Apostila de Introduo ao PHP

Pgina

16

Prof. Carlos Majer Aplicaes Corporativas UNICID

Arquivo Deptos5.php
<html> <head> <title>Matriz 5 de Departamentos e Empregados</title> </head> <body> <?php $departamento[0] $departamento[1] $departamento[2] $departamento[3] $empregados[0] $empregados[1] $empregados[2] $empregados[3] = = = = = = = = "financeiro"; "producao"; "rh"; "comercial";

5; 32; 3; 15;

sort($departamento); print "Os departamentos e empregadosso:-<br>"; for ($n=0;$n<sizeof($departamento);$n++) { echo 'Departamento ' . $departamento[$n] .' tem ' . $empregados[$n] . ' empregados <br>'; } ?> </body> </html>

Arquivo Meses.php
<html> <head> <title>Matriz de Meses</title> </head> <body> <?php $meses = array(7 => 'Janeiro', 'Fevereiro', 'Maro', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'); print_r($meses); ?> </body>

Apostila de Introduo ao PHP

Pgina

17

Prof. Carlos Majer Aplicaes Corporativas UNICID

</html>

PHP e MYSQL
O PHP contm funes para acesso a diversos bancos de dados. O MYSQL um dos bancos de dados mais utilizado por quem desenvolve PHP. Irei relacionar as funes mais utilizadas nesta parte desta apostila.

Conectando a um servidor
O momento inicial e diramos primeiro passo para se recuperar informaes de um banco de dados MYSQL a conexo com o servidor MYSQL. Quando um usurio acessa o MYSQL, atravs de seu prompt em tela MS-DOS, ele informa uma linha de comando similar seguinte:C:\MYSQL\BIN> mysql u usurio root p senha <ENTER> Onde usurio a identificao de um usurio vlido no MYSQL e senha a senha deste usurio. Logo aps uma instalao padro, o usurio root criado, podendo sua senha no ser cadastrada. Exemplo:C:\MYSQL\BIN> mysql u root <ENTER> O PHP permite o acesso ao MYSQL atravs de uma funo especfica para este fim.

Funo mysql_connect
Prottipo

mysql_connect( <Nome do Servidor> , <Usurio>, <Senha>);


1 Parmetro (Obrigatrio): Nome do Servidor, 2 Parmetro (Obrigatrio): Identificao do Usurio 3 Parmetro (Obrigatrio): Senha Exemplo

$conexao = mysql_connect("localhost","root","");
Retorno Esta funo retorna um objeto de conexo com o servidor ou FALSO caso no consiga conectar no servidor informado. Em caso de problemas ela seta o controle de erro interno do MYSQL que pode ser acessado pela funo mysql_error() (explicado adiante) Detalhe No exemplo acima, esta funo conecta a mquina cliente ao Servidor MYSQL, de nome localhost, utilizando a identificao de usurio root, com senha em branco.

Apostila de Introduo ao PHP

Pgina

18

Prof. Carlos Majer Aplicaes Corporativas UNICID O resultado da conexo passado ao objeto de nome $conexao que tem seu valor setado em FALSO caso no se consiga executar a conexo.

Este o primeiro passo quando se deseja recuperar informaes de um banco de dados do MYSQL.

Funo mysql_select_db
Prottipo

mysql_select_db ( <Nome do Banco de Dados> , <Objeto de Conexao>);


1 Parmetro (Obrigatrio): Nome do Banco de Dados, 2 Parmetro (Opcional): Objeto de conexo com o Servidor Exemplo

$banco = mysql_select_db("sistema",$conexao);
Retorno Esta funo retorna um objeto de conexo com o Banco de Dados informado ou FALSO caso no consiga conectar no banco de dados informado. Em caso de problemas ela seta o controle de erro interno do MYSQL que pode ser acessado pela funo mysql_error() (explicado abaixo) Detalhe No exemplo acima, esta funo conecta a mquina cliente ao Banco de Dados de nome sistema, que existe no Servidor informado por $conexao. Caso o usurio no informe o objeto de conexo ($conexao), o MYSQL utilizar a ltima conexo aberta com o servidor (neste caso, com o localhost). O resultado da conexo passado ao objeto de nome $banco que tem seu valor setado em FALSO caso no se consiga executar a conexo.

Este o segundo passo quando se deseja recuperar informaes de um banco de dados do MYSQL.
Voc tambm pode utilizar este comando e variar apenas o Servidor de Conexo, de forma a conectar em mais do que um servidor, para troca de dados entre bancos de dados, por exemplo.

Funo mysql_query
Prottipo

$resultado = mysql_query(<String SQL> , <Objeto de Conexo>);


Exemplo

$comandoSQL="SELECT * FROM usuarios"; $resultado = mysql_query($comandoSQL,$conexao);


1 Parmetro (Obrigatrio): String SQL a ser executada pelo servidor, 2 Parmetro (Opcional): Objeto de conexo com o Servidor Retorno Esta funo retorna um objeto de resultado de query/pesquisa no Banco de Dados informado ou FALSO caso no consiga executar a query no banco de dados informado. Em caso de problemas ela seta o controle de erro interno do MYSQL que pode ser acessado pela funo mysql_error() (explicado adiante)

Apostila de Introduo ao PHP

Pgina

19

Prof. Carlos Majer Aplicaes Corporativas UNICID Detalhe No exemplo acima, esta funo executa a query de seleo de todos os registros da tabela usuarios no servidor apontado pelo objeto $conexao. Caso o usurio no informe o objeto de conexo ($conexao), o MYSQL utilizar a ltima conexo aberta com o servidor (neste caso, com o localhost). O resultado da conexo passado ao objeto de nome $resultado que tem seu valor setado em FALSO caso no se consiga executar a conexo. No caso especfico deste exemplo que seleciona registros de uma tabela, o objeto $resultado conter os nomes dos atributos (campos) da tabela usurios, bem como as linhas (registros) com seus valores.

Este o terceiro passo quando se deseja recuperar informaes de um banco de dados do MYSQL.
Explicao Complementar No exemplo aplicado acima, o contedo que este objeto ir armazenar ser todos os nomes de campos da tabela usuarios, como tambm seus valores (linhas/registros). Podemos abstrair um exemplo do contedo deste objeto da seguinte forma:Objeto $resultado ==> [id varchar(40)] [senha varchar(40)] [nome varchar(50)] [Majer] [123] [Carlos Majer] [Ana] [abc] [Ana Travassos] No exemplo acima, podemos entender que este objeto contm os nomes dos campos/atributos da tabela usuarios (id, senha e nome), seus tipos e tamanhos. Este objeto tambm armazena os valores das duas linhas (registros) encontradas na tabela, que neste caso so:{Majer, 123,Carlos Majer} e {Ana, abc, Ana Travassos} O que foi explicado o contedo deste objeto. Para recuperar estes valores, verifique explicao abaixo.

Funo mysql_num_rows
Prottipo

mysql_num_rows(<Objeto de Resultado de Consulta MYSQL>);


Exemplo

$numeroLinhas = mysql_num_rows($resultado);
1 Parmetro (Obrigatrio): Objeto de Resultado de Consulta MYSQL Retorno Esta funo retorna o nmero de linhas (registros) existente dentro de um objeto que armazena o resultado de uma consulta MYSQL. Em caso de problemas ela seta o controle de erro interno do MYSQL que pode ser acessado pela funo mysql_error() (explicado adiante) Detalhe Caso o comando de seleo retorne 0 (zero) porque no existem registros que satisfaam STRING de pesquisa SQL informada.

Este o quarto passo quando se deseja recuperar informaes de um banco de dados do MYSQL.

Apostila de Introduo ao PHP

Pgina

20

Prof. Carlos Majer Aplicaes Corporativas UNICID

Funo mysql_result
Prottipo

mysql_result(<Objeto de Resultado MYSQL>, <Linha>, <Atributo>);


1 Parmetro (Obrigatrio): Objeto de Resultado de Consulta MYSQL 2 Parmetro (Obrigatrio): Nmero da Linha/registro que se deseja acessar. 3 Parmetro (Obrigatrio): Campo/atributo a ser acessado do Objeto de Resultado de Consulta MYSQL. Exemplo

$valor = mysql_result($resultado,0,'senha');
Retorno Esta funo retorna o contedo da linha/campo informado. Como explicado no exemplo anterior, temos um objeto de nome $resultado que contm o que foi lido da tabela usuarios. A funo mysql_result nos permite ler o contedo das linhas/registros desta tabela. Para isto, devemos informar a linha (comea por zero) e o campo desejado. Exemplo:Olhe novamente a tabela usurios:[id varchar(40)] [senha varchar(40)] [nome varchar(50)] [Majer] [123] [Carlos Majer] [Ana] [abc] [Ana Travassos] Caso queiramos ler o campo nome, do segundo registro/linha, devemos escrever:-

$valor = mysql_result($resultado,1,'nome');
Utilizei $valor como nome de varivel para armazenar o dado resultante (que "Ana Travassos"). Poderia ter usado outro nome de varivel. Tive que informar 1, no segundo parmetro, pois a primeira linha a linha 0, e a segunda linha a linha 1. Por fim, informei o campo/atributo "nome" pois o que Eu queria. Se tivesse feito assim:-

$identificacao = mysql_result($resultado,0,'id');
O valor de $identificacao seria "Majer".

Login de Usurio
Abaixo disponibilizo um exemplo completo de funcionamento de Identificao de Usurio. A tela abaixo a loginBasico.htm, que basicamente uma pgina contendo os objetos:Formulrio cujo atributo action aponta para loginBasico.php Caixa de texto identificada como id, que ser utilizada para digitao da identificao do usurio Caixa de texto identificada como senha, que ser utilizada para digitao da senha do usurio Boto de submisso Detalhe Nenhum tipo de consistncia est sendo feito nesta pgina.

Apostila de Introduo ao PHP

Pgina

21

Prof. Carlos Majer Aplicaes Corporativas UNICID

Cdigo do arquivo loginBasico.htm

<html> <head> <title>rea de Login</title> </head> <body> <form name="frmLogin" method="post" action="loginBasico.php"> <table width="300" border="1" bgcolor="#FFD7AE"> <tr> <td bgcolor="black" align="center"><font color="white"><strong>ACESSO &Agrave; AREA RESTRITA</strong></font></td> </tr> <tr> <td> <p> <strong>&Aacute;rea exclusiva para usu&aacute;rios cadastrados.</strong> </p> <p> Usu&aacute;rio<br> <input type="text" name="id" id="id"> <br> <br> Senha<br> <input type="password" name="senha" id="senha"> <br><br> <input type="submit" name="Submit" value="OK"> </p> </td> </tr> </table> </form> </body> </html>

Apostila de Introduo ao PHP

Pgina

22

Prof. Carlos Majer Aplicaes Corporativas UNICID Pgina loginBasico.php [DEBUG] ==> Comando SQL a ser executado: SELECT * FROM usuarios WHERE login='Carlos' [DEBUG] ==> Senha Passada:123 [DEBUG] ==> Nome passado:Carlos Majer ltimo acesso efetuado em 2007-10-23 Nmero de Acessos: 39 [DEBUG] ==> Comando SQL a ser executado: UPDATE usuarios SET ultAcesso=curdate() , numAcessos=40 WHERE login='Carlos' Aqui vai a parte trabalhada:ACESSO AREA RESTRITA rea exclusiva para usurios cadastrados. Caro (a) Carlos Majer ltimo Acesso 2007-10-23 No. de Entradas: 39 Seja bem vindo(a) rea reservada. Cdigo PHP (O que est precedido por duas barras e em negrito comentrio):-

<html> <head> <title>PHP - Login do Usurio</title> </head> <body> <?php // 1o. Passo - verificar se o usurio enviou ID e SENHA if($_POST['id']=='' || $_POST['senha']=='') { echo '<script> history.go(-1); alert("Informe Usurio e Senha !");</script>'; } // 2o. Passo - vamos criar uma conexo com o MYSQL $conn = mysql_connect("localhost","root",""); // Seno conseguiu conectar, a varivel $conn estar setada como falsa if (!$conn) die("Erro na conexo com o servidor localhost -->" . mysql_error()); // 3o. Passo - vamos selecionar o banco de dados desejado, // neste caso sistema, usando o objeto de conexo $conn // criado acima $db = mysql_select_db("sistema",$conn); // Seno conseguiu selecionar o banco de dados, a varivel

Apostila de Introduo ao PHP

Pgina

23

Prof. Carlos Majer Aplicaes Corporativas UNICID

// $db estar setada como falsa if (!$db) die("Erro na seleo do banco de dados sistema -->" . mysql_error()); // // // // 4o. Passo - Uma vez que estamos conectados ao MYSQL e selecionar o banco de dados, podemos executar a query que ir pesquisar a tabela de usurios para localizar o usurio/senha desejado.

// Desejamos criar algo assim:// SELECT * FROM usuarios WHERE login='CARLOS' // Vamos ento montar o string // 4.1 - Passo .1 - Inserindo o primeiro trecho na varivel $comandoSQL = "SELECT * FROM usuarios WHERE login="; // // // // Bom, colocamos um pedao da query na varivel. Ocorre, que precisamos inserir uma aspa. No exemplo do select acima, inseri o texto CARLOS entre aspas simples, na string SQL

// Como fazer isto, ou seja, como inserir uma aspa simples // dentro de uma varivel SQL ? // Insira-a, delimitando-a com aspas duplas --> aspas duplas // + aspas simples + aspas duplas // Com isto, se consegue inserir aspa simples. Vamos fazer // isto abaixo:$comandoSQL = $comandoSQL . "'"; // Agora, a varivel est com o seguinte contedo:// SELECT * FROM usuarios WHERE login=' // 4.2 - Inserindo o contedo do nome/id // Ocorre que 'CARLOS' contedo de um objeto do tipo texto, // que veio da pgina LOGIN.HTM e foi recebido pelo PHP // Podemos verificar acima (aps passo 1) que os contedos // destas variveis podem ser acessados atravs da matriz // $_POST[...] // Vamos inserir o contedo da varivel identificao, que // 'CARLOS':$comandoSQL = $comandoSQL . $_POST['id']; // Agora, a varivel est com o seguinte contedo:// SELECT * FROM usuarios WHERE login='CARLOS // Vamos inserir a aspa simples, fechando o contedo CARLOS? // Notem o uso de .=, o que significa que o comando abaixo // algo assim:-

Apostila de Introduo ao PHP

Pgina

24

Prof. Carlos Majer Aplicaes Corporativas UNICID

// $comandoSQL = $comandoSQL + ... $comandoSQL .= "'"; // // // // // // Ateno, caso queiram verificar o comando SQL que voc vai tentar executar no banco de dados, sugiro descomentar a linha abaixo, que ir mostrar a STRING SQL e ir interromper/parar a execuo deste script. Tendo certeza de que a STRING SQL est correta, volte a comentar a linha abaixo e execute novamente o script PHP.

// die($comandoSQL); // // // // Agora, a varivel est com o seguinte contedo:SELECT * FROM usuarios WHERE login='CARLOS' Estamos com a varivel $comandoSQL do jeito que precisvamos

// Vamos executar a consulta ? // 5o. Passo - Executando a consulta // Para executarmos a consulta, iremos utilizar a // funo mysql_query $resultado = mysql_query($comandoSQL,$conn); // // // // // // // A funo mysql_query recebe dois parmetros :: Um string de consulta SQL (no nosso exemplo, usamos uma varivel que contm este string) :: A conexo com o banco, que ser utilizada para executar a consulta :: Ela retorna um objeto contendo as colunas selecionadas que pode ser consultado

if (!$resultado) die("Execuo de consulta gerou o seguinte erro no MYSQL -->" . mysql_error()); // // // // // 5.1 - Checando se o usurio existe Para isto, utilizaremos a funo mysql_num_rows que recebe como parmetro o objeto resultado de uma query (consulta) e retorna o nmero de linhas existentes dentro deste objeto. Se for zero o comando SQL no encontrou nada

if(mysql_num_rows($resultado)==0) { echo '<script> history.go(-1); alert("ID no encontrado!");</script>'; } // 5.2 - Mas a senha tambm pode estar incorreta, certo ?

Apostila de Introduo ao PHP

Pgina

25

Prof. Carlos Majer Aplicaes Corporativas UNICID

// Vamos checar ? // // // // // // // // // // // // Utilizaremos a funo mysql_result para isto. Informamos os parmetros::: $resultado --> que foi o objeto resultante da query/consulta anterior :: 0 --> Que a primeira linha que desejamos consultar. Num comando do tipo SELECT, diversas linhas (registros) podem ser retornados. :: nome --> Informos o nome do campo, que neste caso senha O objetivo comparar a informao do banco de dados com a senha digitada na pgina de login e recuperada pelo PHP em sua varivel/matriz $_POST['senha']

echo '<p>[DEBUG] ==> Comando SQL a ser executado:</font><br>' . $comandoSQL . "</p>"; if (mysql_result($resultado,0,'senha')!=$_POST['senha']) { echo '<script> history.go(-1); alert("Senha Incorreta !");</script>'; } echo '<p>[DEBUG] ==> Senha Passada:' . mysql_result($resultado,0,'senha') . '<br></p>'; // 6 - Exibir os dados desejados // Podemos agora exibir certos dados, dentre eles o nome, // nmero de acessos e data de ltimo acesso. echo '<p>[DEBUG] ==> Nome passado:' . mysql_result($resultado,0,'nome') . '<br></p>'; echo 'ltimo acesso efetuado em ' . mysql_result($resultado,0,'ultAcesso') . '<br>'; echo 'Nmero de Acessos: '. mysql_result($resultado,0,'numAcessos') . '<br>'; // 7 - Atualizao do ltimo acesso e nmero de acessos, no // banco de dados. // Iremos agora atualizar a informao de nmero de acessos. // Para isto, pegamos o nmero de acessos do registro // selecionado e colocamos seu valor na varivel $acessos, // que ser incrementada em um $acessos=mysql_result($resultado,0,'numAcessos'); $acessos++; // Iremos agora criar o comando SQL para atualizao do // registro do usurio. // Queremos algo assim:// UPDATE usuarios SET ultAcesso='2007-10-21', numAcessos=2

Apostila de Introduo ao PHP

Pgina

26

Prof. Carlos Majer Aplicaes Corporativas UNICID

// WHERE login='Carlos' // A nica coisa diferente aqui a data do ltimo acesso do // usurio, que queremos armazenar no campo ultAcesso sempre // que o usurio acessar o sistema // // // // // // // // Para isto, irei utilizar a funo curdate(), do prprio MYSQL, que recupera a data atual do servidor MYSQL no formato AAAA-MM-DD, que a forma que nosso campo entende. Note que este comando no funcionar em outro Servidor SQL, pois especfico do MYSQL. Caso tenha outro servidor SQL, procure localizar a funo deste servidor que recupera a DATA atual do sistema. Nosso comando SQL dever ficar assim:-

// UPDATE usuarios SET ultAcesso = curdate(), numAcessos=2 // WHERE login='Carlos' $comandoSQL $comandoSQL $comandoSQL $comandoSQL $comandoSQL ='UPDATE usuarios SET ultAcesso='; .= "curdate() , "; .= "numAcessos=".$acessos ; .= " WHERE login='" . $_POST['id']; .= "'";

echo '<p>[DEBUG] ==> Comando SQL a ser executado:</font><br>' . $comandoSQL . "</p>"; $atualizacao = mysql_query($comandoSQL,$conn); if (!$atualizacao) echo 'Erro na atualizaco de registro do usurio: '.mysql_error(); else echo '<script> alert("Seja bem vindo(a) ' . mysql_result($resultado,0,'nome') . '");</script>'; echo 'Aqui vai a parte trabalhada:-<br>' ; ?> <HR> <strong>ACESSO &Agrave; AREA RESTRITA</strong> <p>&Aacute;rea exclusiva para usu&aacute;rios cadastrados.</p> <p> Caro (a) <?php echo mysql_result($resultado,0,'nome'); ?> <br> <br> ltimo Acesso<br> <?php echo mysql_result($resultado,0,'ultAcesso'); ?>

Apostila de Introduo ao PHP

Pgina

27

Prof. Carlos Majer Aplicaes Corporativas UNICID

<br> <br> No. de Entradas:<br> <?php echo mysql_result($resultado,0,'numAcessos'); ?> <br><br> Seja bem vindo(a) rea reservada. </p> </body> </html>

Apostila de Introduo ao PHP

Pgina

28

Você também pode gostar