You are on page 1of 14

PHP

PHP uma linguagem de script no lado do servidor (server-side) embutida no HTML, portanto necessrio instalar o interpretador da linguagem no servidor de Web. PHP, assim como MySQL, esto disponveis para download para sistemas UNIX, mas para o sistema operacional Windows precisam de uma licena. PHP diferente de um script CGI escrito em linguagens como Perl ou C pois, ao invs de escrever um programa com muitos comandos para sada em HTML, voc escreve um script HTML com um cdigo embutido para fazer a mesma coisa. O cdigo PHP encapsulado em tags especiais de incio e fim que permitem voc alternar para dentro e fora do modo PHP. O que distingue PHP de algo como um Javascript no lado do cliente que o cdigo executado no servidor. Se voc tivesse um script PHP em seu servidor, o cliente iria receber os resultados da execuo deste script, e de maneira alguma poderia determinar qual o cdigo que est por baixo desta execuo. possvel configurar um servidor Web para processar todos os arquivos HTML com cdigo PHP, e ento realmente no h maneira de os usurios perceberem que existe cdigo embutido na pgina HTML. No nvel mais bsico, PHP pode fazer qualquer outra coisa que um programa CGI pode fazer, tal como coletar dados de um formulrio, gerar contedo de pginas dinmicas, ou enviar e receber cookies. Talvez a maior e mais significante caracterstica em PHP seu suporte a uma faixa muito ampla de bancos de dados. Escrever uma pgina Web baseada em um banco de dados muito simples. Os seguintes bancos de dados so atualmente suportados: Adabas D, Interbase, Solid, Dbase, mSQL, Sybase, Empress, MySQL, Velocis, FilePro, Oracle, Unix dbm, Informix, PostgreSQL. PHP tambm tem suporte a comunicao para outros servios usando protocolos tais como IMAP, SNMP, NNTP, POP3, ou mesmo HTTP. Voc pode tambm abrir sockets de rede e interagir usando outros protocolos. Um exemplo de um script dinmico que imprime a data atual est a seguir: <html> <head> <title>Script de exemplo</title></head> <body> <center>Bem-vindo ao script de exemplo:</center> <?php /* "<?" acima indica o incio do script PHP */

$hoje = date("d-m-Y"); print "<br /><br />Hoje : $hoje."; # o sinal "?>" seguinte indica o fim do script ?> </body> </html> Assumindo que hoje dia 22 de outubro de 2009, a sada do script acima seria: Bem-vindo ao script de exemplo: Hoje : 22-10-2009. Alguns pontos a considerar:
1. Todos os comandos PHP devem ser envolvidos pelas tags <? e 2. 3. 4. 5. 6.

7.

?>. Uma segunda maneira de denotar comandos PHP envolvendoos nas tags <?php e ?>; Todas as sentenas de sada para a tela devem ser envolvidas por aspas () e conduzidas pelos comandos print ou echo; Quase todos os comandos PHP terminam com um ponto-evrgula; Todo comando HTML dentro do comando print ser executado normalmente pelo browser e desempenhar sua funo usual; Documentos incluindo cdigo PHP devem ser salvos com a extenso.php, isto informar ao interpretador PHP para executar os comandos encontrados dentro das tags <? e ?>. possvel tambm utilizar extenses diferentes do padro, mas isso acarretar o uso das tags <?php e ?> no sentido de informar ao servidor Web que o interpretador PHP que se encarregar de executar o script, j que isto no pode ser identificado pela extenso do arquivo;

A funo date apresentada no script acima uma das milhares de funes que o PHP disponibiliza, ela tem o formato: string date (string formato, int timestamp);, ou seja, retorna um string e aceita dois parmetros: o tipo de formato a ser apresentado e um valor timestamp de data opcional (quando omitido, como no nosso caso, considera a data atual). Uma grande caracterstica de PHP a capacidade de construo de templates HTML, que so muito teis quando se est desenvolvendo um site com muitas pginas. Isso possvel atravs do comando include que permite a insero de cdigo, provindo de um arquivo separado, dentro de um documento HTML. Desta maneira possvel

estabelecer, por exemplo, um arquivo de rodap num arquivo chamado rodape.txt que aparecer em vrias pginas sem precisar reescrever o cdigo, apenas utilizando o comando include, como segue:

<? include("rodape.txt"); ?> Um outro aspecto importante de PHP a capacidade de modificar variveis passadas de formulrios HTML, tornando possvel a realizao de vrias tarefas como: envio de um e-mail (atravs da funo mail()) baseado em informaes de uma pgina, impresso de pginas personalizadas, passagem e armazenamento de informaes em um banco de dados etc.

Comentrios
Todo programa deve possuir comentrios, visando o entendimento do cdigo em consultas posteriores. No PHP, existem trs tipos de marcadores de comentrio, que so: // e # para comentrio de uma linha. Por exemplo: // atribui o nome varivel $nome = "Fulano de tal"; $email = "fulano@seila.com.br"; # atribui o E-mail varivel e para comentrios que ocupem mais de uma linha, usamos os marcadores /* */. /* Nas linhas abaixo, atribuiremos os valores Do nome e do e-mail s respectivas variveis */ $nome = "Fulano de tal"; $email = "fulano@seila.com.br";

Variveis
Para comear, vamos ver como o PHP trata suas variveis (ou constantes), que podem ser variveis escalares ou no-escalares. As variveis escalares so aquelas que podem ser retrabalhadas, ou "divididas em pedaos menores", enquanto as no escalares so as arrays (matrizes) e os objetos. A identificao de uma varivel, independente do seu tipo pelo sinal $ colocado como primeiro caractere, como abaixo: $nome = "Fulano de tal";

$matricula = 97232203; A primeira varivel do tipo string, e a segunda, inteiro (ambas escalares). Vale lembrar que, como a linguagem C, as variveis $nome e $Nome so consideradas diferentes, pois o PHP as trata como sensveis ao caso. Inteiros e ponto flutuante As variveis inteiras so bastante simples de ser usadas, sem nenhuma diferena das demais linguagens que voc est habituado a usar. Segue as sintaxes abaixo: $a = 123; $b = -123; As variveis em ponto flutuante tambm so bem simples, lembrando que no lugar da vrgula devemos usar um ponto (.): $a = 1.23; // a recebe 1,23 $a = 1.2e3; Strings
Strings podem ser atribudas de duas maneiras: 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 = "Brasil"; $php = '$teste\n'; echo "$php"; ?> A sada desse script ser "$teste\n". <? $teste = "Brasil"; $php = "$teste\n"; echo "$php"; ?> A sada desse script ser "Brasil" (com uma quebra de linha no final).

Significado
A tabela seguinte lista os caracteres de escape:

Sintaxe \n \r \t \\ \$ \ \

Significado Nova linha Retorno de carro (semelhante a \n) Tabulao horizontal A prpria barra ( \ ) O smbolo $ Aspa simples Aspa dupla

Atribuies e concatenaes:
= += = *= /= %= .= atribuio simples atribuio com adio atribuio com subtrao atribuio com multiplicao atribuio com diviso atribuio com mdulo atribuio com concatenao

Exemplos: $str = Abacate; $str = $str . grande; //concatena grande na string $str .= e madura; // concatena e madura na string

Alguns exemplos de converso de strings: $a = 1 + "10.5"; // $a um double (11.5) $b = 1 + "10 cachorros"; // $b um inteiro (11) $c = 1 + "10 gatos"; // $c um inteiro (11) $d = "10.0 ratos" + 1; // $d um inteiro (11) $e = "10.0 ratos" + 1.0; // $e um double (11)

Operaes com strings


Operaes com strings so uma das caractersticas mais desenvolvidas do PHP. Para concatenar-se dois strings, usamos o operador . - Dentre as funes mais importantes esto: strlen(), que permite saber quantos caracteres possui a string: echo "A palavra 'internet' possui " . strlen("internet") ." caracteres "; substr(), que devolve uma substring da string informada:

echo substr("abcde", 2 , 2); // Esta linha ir exibir os caracteres "cd"; ucwords (string), converte os primeiros caracteres de strings em maisculo. $nome = ucwords("fulano silva santos"); echo($nome); //Esta linha exibir Fulano Silva Santos strpos (), para saber se determinado caractere (ou substring) est contida em uma string: if strpos ($email, "@") { echo("Seu e-mail parece estar correto!\n"); } else { echo("O e-mail est invlido\n"); } No exemplo acima, verificamos se o caractere "@" est contida em uma varivel $email. Se estiver, exibe a primeira mensagem. Do contrrio, exibe a segunda. Outras funes relacionadas operaes com strings podem ser encontradas em http://br.php.net/manual/ref.strings.html

Operaes Matemticas
As operaes no PHP tambm seguem o padro das outras linguagens (+, -, *, /, %[modulo da diviso], sin(), cos()) entre outras. Um exemplo para calcular o valor lquido de um preo, depois de aplicar 10% de desconto sobre o preo bruto: $valorbruto = 10; $desconto = 10 * $valorbruto / 100; $valorliquido = $valorbruto - $desconto;

2.5 - Operadores
Operadores aritmticos: Exemplo $a + $b $a - $b $a * $b $a / $b $a % $b Nome Adio Subtrao Multiplicao Diviso Modulo da diviso

Operador de atribuio:

Exemplo $a = $b

Nome Atribuio

$a = ($b = 4) + 5; // $b recebe 4 e $a recebe 9 Operadores lgicos: Operadores de comparao: Exemplo $a == $b $a === $b $a != $b $a < $b $a > $b $a <= $b $a >= $b

Nome Igual Idntico No igual Menor que Maior que Menor ou igual Maior ou igual

Operadores de incremento/decremento: Exemplo ++$a $a++ --$a $a-

Nome Pr-incremento Ps-incremento Pr-decremento Ps-decremento

Efeito Incrementa $a, depois retorna seu valor Retorna o valor de $a, depois incrementa Decrementa $a, depois retorna seu valor Retorna o valor de $a, depois decrementa

Controlando o fluxo e LOOPS


As funes usadas para controlar o fluxo do programa e execuo de "loops" so: if ... else ... else if, Ele testa a condio e executa o comando indicado se o resultado for true (valor diferente de zero).

if ($sexo == "m") { echo "Voc do sexo Masculino\n"; } elseif ($sexo == "f") { echo "Voc do sexo Feminino\n"; } else { echo "Por favor, informe corretamente seu sexo\n"; } switch, uma maneira de controlar o fluxo onde a varivel de controle do fluxo pode ter vrias opes de valores. Este tipo de controle poderia ser feito com uma seqncia de "ifs" e "elseifs", mas o uso do switch torna o cdigo mais legvel e faz com que seja executado mais rapidamente, pois a verificao da

varivel "$sexo" s feita uma vez e depois comparada com as opes de cada "case". Se no estiver em nenhuma delas, executado o bloco sob o "default". J com o "elseif", a comparao feita novamente a cada sentena. Neste exemplo, a diferena no to grande, mas quando o tipo de verificao vai ficando mais complexo a velocidade comea a ser sentida. Na maioria dos casos, vale a pena optar pelo switch. switch ($sexo) { case "m": echo "Voc do sexo Masculino\n"; break; case "f" echo "Voc do sexo Feminino\n"; break; case default: echo "Por favor, informe corretamente seu sexo\n"; break; } Sempre inclua o comando break no final do case. Caso contrrio, a execuo continuar at encontrar o final do switch (ou a instruo break), fazendo com que as instrues de mais de um case sejam executadas. while, que permite repetir o cdigo enquanto uma condio for verdadeira:

while ($contador > 0) { $contador = $contador - 2; } for, para execuo de um loop determinada quantidade de vezes: for ($i==0; $i<100; $i++) { echo "$i\n"; }

SQL
O que ? O SQL representa um mtodo mais geral e mais estrito de armazenamento de dados que o padro anterior de banco de dados norelacionais no estilo dbm.

SQL no cincia espacial. As quatro instrues bsicas de manipulao de dados suportadas essencialmente por todos os bancos de dados de SQL so SELECT, INSERT, UPDATE e DELETE. SELECT recupera os dados do banco de dados, INSERT insere em uma nova entrada, UPDATE edita partes da entrada no lugar e DELETE exclui uma entrada completamente. A maior parte da dificuldade reside em projetar bancos de dados. O projetista deve pensar muito seriamente sobre a melhor maneira de representar cada parte de dados e relacionamento para a utilizao planejada. um prazer programar com bancos de dados bem projetados, enquanto os pobremente projetados podem deixar voc careca quando contemplar as numerosas conexes e horrorosas junes. Os bancos de dados SQL so criados pelas chamadas instrues de estrutura de dados. As mais importantes so CREATE, ALTER e DROP. Como se poderia imaginar, CREATE DATABASE cria um novo banco de dados e CREATE TABLE define uma nova tabela dentro de um banco de dados. ALTER altera a estrutura de uma tabela. DROP a bomba nuclear entre os comandos de SQL, uma vez que exclui completamente tabelas ou banco de dados inteiros. O bom projeto de banco de dados tambm uma questo de segurana. Empregando medidas profilticas razoveis, um banco de dados SQL pode aprimorar a segurana de seu site. Comandos SQL SELECT SELECT o comando principal de que voc precisa para obter informaes fora de um banco de dados de SQL. A sintaxe bsica extremamente simples: SELECT campo1, campo2, campo3 FROM tabela WHERE condies Em alguns casos, voc desejar pedir linhas inteiras em vez de selecionar partes individuais de informaes. Essa prtica obsoleta por razes muito boas (ela pode ser mais lenta que solicitar apenas os dados de que voc precisa e pode levar a problemas se voc reprojetar a tabela), mas ainda utilizada e, portanto, precisamos mencionala. Uma linha inteira indicada utilizando o smbolo do asteristico: SELECT * FROM minha_tabela WHERE campo1 = abcdef Subselees

Antes de deixarmos o reino das instrues SELECT, devemos mencionar a subseleo. Essa uma instruo como: SELECT phone_number FROM table WHERE name = SELECT name FROM table2 WHERE id = 1; As subselees so mais uma convenincia que uma necessidade. Elas podem ser muito teis se voc estiver trabalhando com enormes lotes de dados; mas possvel obter o mesmo resultado com duas selees mais simples(embora isso ser algo mais lento, mesmo no PHP4).

INSERT O comando que voc precisa para colocar novos dados em um banco de dados o INSERT. Eis a sintaxe bsica: INSERT INTO tabela (campo1,campo2,campo3) VALUES ($val1,$val2,$val3); Obviamente as colunas e seus valores devem corresponder; se voc misturar os seus itens de array, nada de bom acontecer. Se algumas linhas no tiverem valores para alguns campos, voc precisar utilizar um valor nulo, vazio ou autoincrementado e, em um nvel mais profundo, voc pode ter assegurado de antemo que os campos possam ser nulos ou autoincrementveis. Se isso no for possvel, voc simplesmente deve omitir qualquer coluna que voc deseja que assuma o padro de valor vazio em uma instruo de INSERT. UPDATE UPDATE utilizado para editar informaes que j esto no banco de dados sem excluir qualquer quantidade significativa. Em outras palavras, voc pode seletivamente alterar algumas informaes sem excluir um registro antigo inteiro e inserir um novo. A sintaxe : UPDATE table SET campo1 = val1, campo2 = val2,campo3=val3 WHERE condio; A instruo condicional exatamente como uma condio SELECT, como WHERE id=15 ou WHERE gender=F.

DELETE DELETE bastante autoexplicativa: voc a utiliza para permanentemente as informaes do banco de dados. A sintaxe : DELETE datapoint FROM table WHERE condition; excluir

A coisa mais importante a lembrarse da condio se voc no configurar uma, excluir cada entrada nas colunas especificadas do banco de dados, sem uma confirmao ou uma segunda chance em muitos casos. O que h em comum entre: DELETE x UPDATE Voc deve lembrarse de utilizar uma condio toda vez que atualizar ou excluir. Se voc no fizer isso, todas as linhas na tabela sofrero a mesma alterao ou excluso. Mesmo os programadores mais experientes esquecem a condio, para seu grande constrangimento profissional. Cuidado para no esquecer a condio. CREATE CREATE utilizado para fazer uma tabela ou banco de dados completamente novo. Realmente criar um banco de dados implica um pouco mais que apenas atribuir um nome. CREATE DATABASE db_name; Todo o trabalho est em definir as tabelas e as colunas. Primeiro voc declara o nome da tabela e depois deve detalhar os tipos especficos de colunas dessa tabela no que chamado de definio de criao. CREATE TABLE table { }; Diferentes servidores de SQL tm tipos de dados e opes de definio ligeiramente diferentes, ento a sintaxe de um no pode transferir exatamente para outro. DROP DROP pode ser utilizado para excluir completamente uma tabela ou banco de dados e todos os seus dados associados. Exemplo: DROP TABLE table; DROP DATABASE db_name Obviamente necessrio muito cuidado com essa instruo. id_col INT NOT NULL AUTO_INCREMENT PRIMARY KEY, col1 TEXT NULL INDEX, col2 DATE NOT NULL

Acesso banco de dados

O acesso banco de dados um dos pontos fortes do PHP. Ele possui acesso nativo a ADABAS, ORACLE, SYBASE, SQL SERVER, DBASE, INFORMIX, mSQL,MySQL, POSTGRESQL, alm de suportar ODBC, fazendo com que o PHP possa trabalhar praticamente com todos os bancos de dados existentes. Aqui vamos ver apenas as funes relativas ao banco MySQL, pois esta dupla PHP/MySQL est sendo preferida por uma boa parte dos desenvolvedores, particularmente no ambiente Linux/Apache. A primeira regra ter um banco de dados cadastrado e um usurio com acesso este banco de dados. Vale lembrar que o MySQL no um banco de dados, e sim um servidor de dados. Tenha isto em mente para entender o exemplo. Digamos que temos um banco de dados Aula com o usurio visitante e senha 123123. O primeiro passo "logar" ao servidor. Para isso usamos a funo mysql_connect e informamos ao servidor login (usurio) e senha. Veja abaixo: $conn = mysql_connect ("localhost", "visitante", "123123"); Este comando abrir uma conexo com o MySQL da mquina local (localhost), usando o usurio visitante cuja senha 123123. Uma referncia a esta conexo ser gravada na varivel $conn. Depois de conectados ao servidor, devemos conectar ao banco de dados propriamente dito, usando o comando mysql_select_db, que precisa de dois parmetros: O nome do banco de dados e a conexo. Caso a conexo no seja informada, ele tentar usar a ltima criada. Em nossos exemplos, iremos sempre informar os dois parmetros. $db = mysql_select_db("", $conn); Neste ponto j temos uma conexo com o servidor e j criamos um link com o banco de dados. Agora podemos enviar os comandos SQL que desejarmos. (Pare aqui e leia sobre comandos SQL, depois volte e teste o exemplo.) Agora segue nosso exemplo prtico: Vamos usar um script de modo que os dados digitados no formulrio sejam gravados no banco de dados Aula antes de enviar o e-mail. <?php $erro = ""; # Verificar se o campo NOME est vazio. if ($nome == "") {

erro .= "Digite seu Nome\n"; } # Verificar a quantidade de caracteres no campo TELEFONE. if ((strlen($telefone) > 8) or (strlen($telefone) < 7)) { $erro .= "O nmero do telefone deve ter 7 ou 8 caracteres\n"; } # Testar valor do campo E-mail, verificando o caracter "@" if strpos ($email, "@") = 0 { $erro .= "O e-mail digitado no vlido\n"; } # Cabealho de resposta. echo("\n"); echo("<center>\n"); if ($erro == "") {
$conn = mysql_connect("localhost", "visitante", "123123"); $db = mysql_select_db("Aula", $conn); $sql = mysql_query("insert into Aluno (Nome, Email, Telefone) values ('".addslashes($nome). "','".addslashes($email)."', '".addslashes($email)."')" or die ("No foi possvel atualizar a tabela"); mysql_close($conn); mail(" fulano@gmail.com.br", "Dados do Formulrio"," Nome: $nome\n E-mail: $email\n Telefone: $telefone\n","From: $email\nDate: $date\n"); echo("Obrigado por enviar este formulrio!\n");

} else {
echo("No foi possvel enviar o formulrio! Verifique as mensagens abaixo: \n"); echo("<b>$erro </b>\n"); echo("<br><br><a href=form.htm>Voltar\n");

echo("</center>"); Este o procedimento padro para usar servidores de banco de dados com o PHP:

1. Conectar ao servidor 2. Abrir o banco de dados (um servidor SQL pode ter mais de um banco de dados) 3. Enviar os comandos SQL 4. Desconectar do servidor A novidade deste exemplo fica por conta do comando die que finaliza o script caso a funo que o precede no possa ser executada.

You might also like