apostila - completa - de - php5 - mysql - e-ajax

apostila - completa - de - php5 - mysql - e-ajax

(Parte 1 de 6)

PHP 5 e MySQL 5 e Ajax

PHP 5 & MySQL 5 for Web – w.integrator.com.br/php 1

O que é PHP?6
Client Side scripts6
Server Side scripts6
Ambiente de desenvolvimento de páginas PHP7
O que pode ser feito com PHP?7
Como surgiu a linguagem PHP?8
A sintaxe8
Delimitando o código PHP9
Alternagem avançada9
Separador de instruções10
Comentários10
Variáveis1
Regras para nomear as variáveis1
Variáveis Predefinidas1
Variáveis do servidor: $_SERVER12
Usando strings de consulta15
Variáveis HTTP GET: $_GET16
Transmitindo diversas variáveis de string de consulta16
Variáveis da requisição: $_REQUEST17
Transmitindo caracteres especiais em uma string de consulta17
Array Associativo de recebimento de formulário19
Cotas mágicas no PHP21
stripslashes( )21
addslashes( )21
Usando objetos de aplicação e sessão2
Usando cookies para monitorar os clientes2
Usando variáveis de sessão para controlar clientes24
Tipos26
Heredoc em Strings27
Interpretação de variáveis28
Coerção de tipo29
Constantes30
Operadores31
Operadores Aritméticos31
Operadores de Atribuição31
Operadores de Comparação32
Operadores de controle de erro34
Operadores de Incremento/Decremento34
Operadores Lógicos35
Operadores de String35
Operadores de Arrays35
Estruturas de Controle36
Estruturas Condicionais36
if36
else37

Índice elseif ............................................................................................................................... 37

PHP 5 e MySQL 5 e Ajax

Sintaxe alternativa para estruturas de controle38
Estruturas de Laços Condicionais (loop’s)38
while38
do...while39
for39
Um caso a parte – a estrutura do switch40
switch40
break42
continue42
return43
Criando bloco de códigos reutilizáveis43
require( )43
include( )4
require_once( )47
include_once( )47
Funções47
Funções definidas pelo usuário47
Argumentos de funções47
Valores padrão de argumentos47
Funções definidas condicionalmente48
Funções dentro de funções49
Funções com argumentos variáveis50
Retornando valores50
Escopo de variáveis50
Variáveis Estáticas52
Enviando arquivos para o servidor53
Os códigos de erro de envio de arquivos5
Como fazer UPLOAD de múltiplos arquivos56
Orientação a Objetos com PHP 556
Classe56
O nome da classe57
new57
Arrays (Matrizes)70
O que é um array?70
Arrays numericamente indexados70
Acessando o conteúdo de um array71
Uma outra maneira de criar arrays71
Utilizando loops para acessar o array71
Arrays Associativos72
Utilizando loops com each( ) e list( )72
foreach74
Exemplo prático do uso do foreach75
Arrays Bidimensionais76
Classificando arrays7
Utilizando sort( )7
Reordenando arrays aleatoriamente78
Redirecionando um usuário78
Expressões Regulares (compatíveis com o padrão POSIX)78
As expressões regulares79

PHP 5 & MySQL 5 for Web – w.integrator.com.br/php 2 Validando formatações e verificando preenchimentos................................................... 80

PHP 5 e MySQL 5 e Ajax

A função ereg( )80
A função eregi( )81
A função ereg_replace( )81
A função eregi_replace( )82
A função str_replace( )82
A função number_format( )83
A função nl2br( )83
A função wordwrap( )83
A função strip_tags( )84
A função htmlentities( )84
Funções úteis, mas não essenciais85
Enviando um e-mail85
Função mail( )85
Trabalhando com arquivos86
Armazenando e recuperando informações87
Uma alternativa a escrita de arquivos89
Uma alternativa a leitura de arquivos89
Trabalhando com Datas90
MySQL91
O que é MySQL?91
O que é um banco de dados relacional?91
Instalando o banco de dados92
Instalando no Windows92
Instalando o MySQL no Linux92
Acessando o banco de dados MySQL93
No Windows93
No Linux93
Os comandos CREATE e DROP93
O comando CREATE94
O comando USE94
O comando DROP94
Criando tabelas94
O comando SHOW95
O comando DESCRIBE96
IF NOT EXISTS96
Criando uma cópia de uma tabela96
Alterando tabelas existentes96
Alterando o nome da coluna97
Alterando o tipo de coluna97
Renomeando uma tabela97
Excluindo / adicionando colunas e tabelas97
Eliminando tabelas e colunas97
Adicionando colunas98
Adicionando colunas após uma outra determinada98
Utilizando índices98
Decidindo quais colunas incluir no índice98
Criando um índice98
Excluindo índices9
Tipos de tabelas9

PHP 5 & MySQL 5 for Web – w.integrator.com.br/php 3 O tipo MyISAM ........................................................................................................... 100

PHP 5 e MySQL 5 e Ajax

O tipo Memory100
O tipo MERGE100
O tipo BDB101
O tipo InnoDB101
Alterando o tipo de uma tabela102
Tipo de dados102
Tipos numéricos102
Modificadores AUTO_INCREMENT, UNSIGNED e ZEROFILL103
AUTO_INCREMENT103
UNSIGNED103
ZEROFILL103
Tipos de caractere ou de dados de string104
CHAR e VARCHAR104
TEXT e BLOB104
Tipos variados105
Tipo ENUM105
Tipo SET105
Modificadores adicionais de coluna106
Tipos de data e hora106
Sintaxe básica da SQL107
Comando INSERT107
Comando SELECT107
Um outro caso, a cláusula WHERE108
Algumas funções que trabalham com a instrução SELECT109
MAX( )109
MIN( )109
LIMIT109
COUNT( )109
SUM( )109
ORDER BY110
ORDER BYDESC................................................................................................... 110
AVG( )110
LIKE110
Um caso a parte: a união do INSERT INTOSELECT............................................110
Comando UPDATE110
Comando DELETE1
Trabalhando com Junções1
Criando uma junção com INNER JOIN1
Chaves variadas do MySQL1
O que é uma chave?1
Princípios da Chave1
Como as chaves funcionam112
Benefícios de usar uma chave112
Suporte de chave do MySQL112
Chaves primárias113
Chaves estrangeiras113
Excluindo uma chave estrangeira113
Transações113
Usando transações no MySQL113

PHP 5 & MySQL 5 for Web – w.integrator.com.br/php 4 Stored Procedures......................................................................................................... 114

PHP 5 e MySQL 5 e Ajax

Visualizando procedures criadas114
Visualizando a criação da procedure115
Criando um Stored Procedure com parâmetros115
Criando um procedure com a cláusula LIKE115
Criando Views115
Visualizando a estrutura de uma view116
Visualizando a criação da view116
Excluindo uma view116
Criando Triggers (gatilhos)116
Visualizando as triggers criadas117
Excluindo uma trigger117
Administrando o MySQL117
Entendendo o sistema de privilégios do MySQL117
Configurando usuários117
Confirmando o novo usuário118
Revogando privilégios118
Obtendo informações com SHOW118
Integrando PHP e MYSQL119
Acessando seu banco de dados pelo PHP119
Conectando ao MySQL e visualizando dados119
Parâmetros opcionais de mysql_fetch_array120
Inserindo dados na tabela livros121
Alterando o cadastro de livros123
Trabalhando com MySQL Improved Extension128
Criando a conexão com o mysqli129
Criando o arquivo de funções129
Criando o Stored Procedure para inserir autores130
Criando o cadastro de autores130
Selecionando os autores através de Stored Procedure132
Chamando a Stored Procedure para visualizar os autores132
Atualizando os autores por Stored Procedure134
Criando a procedure que seleciona um autor em específico134
Criando a página de atualização de autores134
Excluindo autores137
Lendo e manipulando o conteúdo de um diretório139
Criando arquivos em PDF140
Arquivos de Excel144
Criando arquivos em RTF146
Desenvolvendo aplicações Web com PHP e Ajax149
O que é AJAX?150
Como o AJAX trabalha150
Criando uma página com Ajax150
Entendendo o AJAX154
Apêndice A156

PHP 5 & MySQL 5 for Web – w.integrator.com.br/php 5 Bibliografia................................................................................................................... 166

PHP 5 e MySQL 5 e Ajax

PHP 5 & MySQL 5 for Web – w.integrator.com.br/php 6

O que é PHP?

PHP (um acrônimo recursivo para "PHP: Hypertext Preprocessor") é uma linguagem de script Open Source de uso geral, muito utilizada e especialmente guarnecida para o desenvolvimento de aplicações Web embútivel dentro do HTML. É uma linguagem que permite criar sites WEB dinâmicos, possibilitando uma interação com o usuário através de formulários, parâmetros da URL e links. A diferença de PHP com relação a linguagens semelhantes a JavaScript é que o código PHP é executado no servidor, sendo enviado para o cliente apenas html puro. Desta maneira é possível interagir com bancos de dados e aplicações existentes no servidor, com a vantagem de não expor o código fonte para o cliente. Isso pode ser útil quando o programa está lidando com senhas ou qualquer tipo de informação confidencial. O que diferencia PHP de um script CGI escrito em C ou Perl é que o código PHP fica embutido no próprio HTML, enquanto no outro caso é necessário que o script CGI gere todo o código HTML, ou leia de um outro arquivo.

Client Side scripts

São códigos de programa que são processados pela estação cliente. Geralmente em aplicações voltadas à Internet, o código que é executado no cliente cuida apenas de pequenas consistências de telas e validações de entrada de dados. Em se tratando de páginas web, os client-side scripts terão de ser processados por um browser. O maior problema de se utilizar este tipo de artifício em uma aplicação é a incompatibilidade de interpretação da linguagem entre os browsers. O Microsoft Internet Explorer, por exemplo, é capaz de interpretar o Visual Basic Script, porém o Netscape não o faz sem o auxílio de um plug in (que foi desenvolvido por terceiros). Há ainda o problema de versões muito antigas de navegadores, que não conseguem interpretar nenhum script. Em grande parte das situações, não é possível exigir que o usuário final disponha de determinado produto para acessar a aplicação. Portanto é importante pesar todos estes fatores ao planejar alguma aplicação com client-side scripts. A linguagem script mais indicada para se construir client-side scripts é o JavaScript, devido a sua compatibilidade com os dois browsers (Netscape e Microsoft Internet Explorer, que devem ser de versões iguais ou superiores a 3.0 e 4.0 respectivamente).

Server Side scripts

São códigos de programa que são processados no servidor. Devido a este fato, não é necessário preocupar-se com a linguagem que o código foi criado: o servidor é quem se encarrega de interpretá-lo e de devolver uma resposta para o cliente. Em páginas PHP, são esses códigos os maiores responsáveis pelos resultados apresentados.

PHP 5 e MySQL 5 e Ajax

PHP 5 & MySQL 5 for Web – w.integrator.com.br/php 7

Ambiente de desenvolvimento de páginas PHP

Como os arquivos PHP são arquivos do tipo texto (ASCII), eles podem ser escritos em um editor de textos comum – Edit, Notepad, Emacs, por exemplo. Existem também outros ambientes que proporcionam uma forma mais agradável de desenvolvimento, mas exige os mesmos conhecimentos do programador.

O que pode ser feito com PHP?

Basicamente, qualquer coisa que pode ser feita por algum programa CGI pode ser feita também com PHP, como coletar dados de um formulário, gerar páginas dinamicamente ou enviar e receber cookies. O PHP pode ser utilizado na maioria dos sistemas operacionais, incluindo Linux, várias variantes Unix (incluindo HP-UX, Solaris e OpenBSD), Microsoft Windows, Mac OS X, RISC OS, e provavelmente outros. O PHP também é suportado pela maioria dos servidores web atuais, incluindo Apache, Microsoft Internet Information Server, Personal Web Server, Netscape and iPlanet Servers, Oreilly Website Pro Server, Caudium, Xitami, OmniHTTPd, e muitos outros. O PHP pode ser configurado como módulo para a maioria dos servidores, e para os outros como um CGI comum. Com o PHP, portanto, você tem a liberdade para escolher o sistema operacional e o servidor web. Do mesmo modo, você pode escolher entre utilizar programação estrutural ou programação orientada a objeto, ou ainda uma mistura deles. Mesmo não desenvolvendo nenhum recurso padrão de OOP (Object Oriented Programming, Programação Orientada a Objetos) na versão atual do PHP, muitas bibliotecas de código e grandes aplicações (incluindo a biblioteca PEAR) foram escritos somente utilizando OOP. Com PHP você não está limitado a gerar somente HTML. As habilidades do PHP incluem geração de imagens, arquivos PDF e animações Flash (utilizando libswf ou Ming) criados dinamicamente, on the fly. Você pode facilmente criar qualquer padrão texto, como XHTML e outros arquivos XML. O PHP pode gerar esses padrões e os salvar no sistema de arquivos, em vez de imprimi-los, formando um cache dinâmico de suas informações no lado do servidor. Talvez a mais forte e mais significativa característica do PHP é seu suporte a uma ampla variedade de banco de dados. Escrever uma página que consulte um banco de dados é incrivelmente simples. Os seguintes bancos de dados são atualmente suportados:

Tabela de bancos suportados pelo PHP5 Adabas D Ingres Oracle (OCI7 and OCI8) dBase InterBase Ovrimos Empress FrontBase PostgreSQL FilePro (read-only) mSQL Solid Hyperwave Direct MS-SQL Sybase IBM DB2 MySQL Velocis Unix dbm Informix ODBC

Também foi providenciada uma abstração de banco de dados DBX permitindo a você utilizar qualquer banco de dados transparentemente com sua extensão. Adicionalmente,

PHP 5 e MySQL 5 e Ajax

PHP 5 & MySQL 5 for Web – w.integrator.com.br/php 8 o PHP suporta ODBC (Open Database Connection, ou Padrão Aberto de Conexão com Bancos de Dados), permitindo que você utilize qualquer outro banco de dados que suporte esse padrão mundial. O PHP também tem suporte para comunicação com outros serviços utilizando protocolos como LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (em Windows) e incontáveis outros. Você pode abrir sockets de rede e interagir diretamente com qualquer protocolo. O PHP também suporta o intercâmbio de dados complexos WDDX, utilizado em virtualmente todas as linguagens de programação para web. Falando de comunicação, o PHP implementa a instanciação de objetos Java e os utiliza transparentemente como objetos PHP. Você ainda pode usar sua extensão CORBA para acessar objetos remotos. O PHP é extremamente útil em recursos de processamento de texto, do POSIX Estendido ou expressões regulares Perl até como interpretador para documentos XML. Para acessar e processar documentos XML, são suportados os padrões SAX e DOM. Você ainda pode usar nossa extensão XSLT para transformar documentos XML. Utilizando o PHP no campo do e-commerce, você poderá usar as funções específicas para Cybescash, CyberMUT, Verysign Payflow Pro e CCVS, práticos sistemas de pagamento online.

Como surgiu a linguagem PHP?

A linguagem PHP foi concebida durante o outono de 1994 por Rasmus Lerdorf. As primeiras versões não foram disponibilizadas, tendo sido utilizadas em sua home-page apenas para que ele pudesse ter informações sobre as visitas que estavam sendo feitas. A primeira versão utilizada por outras pessoas foi disponibilizada em 1995, e ficou conhecida como “Personal Home Page Tools” (ferramentas para página pessoal). Era composta por um sistema bastante simples que interpretava algumas macros e alguns utilitários que rodavam “por trás” das home-pages: um livro de visitas, um contador e algumas outras coisas. Em meados de 1995 o interpretador foi reescrito, e ganhou o nome de PHP/FI, o “FI” veio de um outro pacote escrito por Rasmus que interpretava dados de formulários HTML (Form Interpreter). Ele combinou os scripts do pacote Personal 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.0 sites pelo mundo, e em meados de 1997 esse número subiu para mais de 50.0. Nessa época houve uma mudança no desenvolvimento do PHP. Ele deixou de ser um projeto de Rasmus com contribuições 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 à base para a versão 3.

A sintaxe

Quando o PHP interpreta um arquivo, ele simplesmente repassa o texto do arquivo até encontrar uma das tags especiais que lhe diz para começar a interpretar o texto como código PHP. O interpretador então executa todo o código que encontra, até chegar em uma tag de fechamento PHP, que novamente o coloca simplesmente repassando texto novamente. Este é o mecanismo que permite a inclusão de código PHP dentro do

PHP 5 e MySQL 5 e Ajax

PHP 5 & MySQL 5 for Web – w.integrator.com.br/php 9

Delas, somente duas (<?php?> e <script language="php">. . .</script>) são sempre
?> para compatibilidade com o padrão XML.

HTML: qualquer coisa fora das tags PHP é deixada como encontrado, enquanto tudo dentro é interpretado e executado. Há quatro conjuntos de tags que podem ser usadas para marcar blocos de código PHP. disponíveis. As outras podem ser ativadas ou desativadas a partir do arquivo de configuração php.ini. Enquanto as formas reduzidas das tags ou no seu estilo ASP serem convenientes, elas não são portáveis em todas as versões. Além disso, se você pretende incluir código PHP em XML ou XHTML, você precisará usar a forma <?php

Delimitando o código PHP

O código PHP fica embutido no próprio HTML. O interpretador identifica quando um código é PHP pelas seguintes tags:

<?php comandos ?>

<script language=”php”> comandos </script>

<? comandos ?>

<% comandos %>

O terceiro tipo consiste em uma “abreviação” do primeiro. Para utilizá-lo, é necessário habilitar a opção short_open_tag na configuração do PHP, tornando on. O último tipo serve para facilitar o uso por programadores acostumados à sintaxe de ASP. Para utilizá-lo também é necessário habilitá-lo no PHP, através do arquivo de configuração php.ini, tornando on a opção asp_tags.

Alternagem avançada

?>
<strong>Isso é verdadeiro.</strong>
<?php
?>
<strong>Isto é falso.</strong>
<?php

<?php if ($expressao) { } else { } ?>

PHP 5 e MySQL 5 e Ajax

PHP 5 & MySQL 5 for Web – w.integrator.com.br/php 10

Isso funciona como esperado porque quando o PHP encontra a tag de fechamento ?>, ele simplesmente começa a imprimir tudo até encontrar outra tag de abertura. Obviamente, o exemplo acima se aplica à exibição de grandes blocos de texto, uma vez que sair do modo de interpretação do PHP é geralmente mais eficiente que imprimir todo o texto através da construção de linguagem como o echo( ) ou função print( ) e outras.

Separador de instruções

Instruções são separadas da mesma forma que o C ou o Perl - cada instrução termina com um ponto e vírgula. A tag de fechamento (?>) também implica no fim de uma instrução, então os exemplos seguintes são equivalentes:

echo "Isto é um exemplo com vírgula";

<?php ?>

<?php echo "Isto é um outro exemplo sem vírgula" ?>

Comentários

O PHP suporta comentários do 'C', 'C++' e Unix shell. Por exemplo:

echo "Isto é um exemplo"; //Comentário de uma linha como no
/* Isto é um comentário de mais de uma linha
e aqui temos outra linha como em C */
echo "Isto é um outro exemplo";
echo "O último exemplo"; #Comentário no estilo Unix shell

<?php C++ ?>

O comentário de uma linha só tem efeito até o fim da linha ou fim do bloco de código PHP atual, o que ocorrer primeiro.

<h1>Isto é um <?php # echo " simples";?> exemplo.</h1> <p>No título acima você lerá 'Isto é um exemplo'.

Você precisa ser cuidadoso com comentários estilo 'C' encadeados, pois eles podem causar problemas em grandes blocos.

echo "Isto é um teste"; /* Este comentário causará um erro

<?php /* */

PHP 5 e MySQL 5 e Ajax

PHP 5 & MySQL 5 for Web – w.integrator.com.br/php 1

Nota: É importante trabalhar com padrões. Procure utilizar o formato C para comentários e deixe de lado o formato shell.

Variáveis

São códigos em forma de palavras que carregam informações que se alteram “variam” no decorrer de uma instrução. As variáveis são muito úteis, pois elas permitem uma flexibilidade na programação, onde não são possíveis de antever determinadas situações.

Regras para nomear as variáveis

Para nomear suas variáveis, é preciso seguir algumas regras: Toda variável em PHP tem seu nome composto pelo caractere $ e uma string, que deve iniciar por uma letra ou o caractere “_”. PHP é case sensitive, ou seja, as variáveis $integrator e $INTEGRATOR são diferentes. Por isso é preciso ter muito cuidado ao definir os nomes das variáveis. É bom evitar os nomes em maiúsculas, pois como veremos mais adiante, o PHP já possui algumas variáveis pré-definidas cujos nomes são formados por letras maiúsculas. Passagem por referência O PHP 5 oferece um outro meio de atribuir valores a variáveis: a atribuição por referência. Isto significa que a nova variável simplesmente referencia (em outras palavras, "torna-se um apelido para" ou "aponta para") a variável original. Alterações na nova variável afetam a original e vice-versa. Isto significa também que nenhuma cópia é realizada, de modo que a atribuição ocorre mais rapidamente. Entretanto, qualquer aumento de velocidade só será realmente notado em loops complexos ou em atribuições de grandes matrizes (arrays) ou objetos.

<?php $item1 = 'Banana'; // Atribui o valor 'Banana' a variável $item1

$item2 = &$item1; // Referecia $item1 através de $item2.

$item2 = "O produto é $item2"; // Altera $item2

echo $item2.'<br>'; echo $item1; // $item1 é alterado também. ?> variaveis.php

Uma observação importante a se fazer: somente variáveis nomeadas podem ser atribuídas por referência.

Variáveis Predefinidas

O PHP oferece um grande número de variáveis predefinidas para qualquer script que ele execute. Muitas destas variáveis, entretanto, não podem ser completamente documentadas uma vez dependem de diversos fatores, como o servidor no qual scripts são executados, a versão e configuração deste servidor e outros.

PHP 5 e MySQL 5 e Ajax

PHP 5 & MySQL 5 for Web – w.integrator.com.br/php 12

Variáveis do servidor: $_SERVER

$_SERVER é um array contendo informações como headers, caminhos e localizações do script. Os itens deste array são criados pelo servidor web. Não há garantias que todos os servidores web gerem todas elas: alguns servidores talvez omitam algumas ou gerem outras que não estão listadas aqui. Mesmo assim, um grande número dessas variáveis está de acordo com a especificação CGI 1.1, então você pode esperar encontrá-las nesse array. Esta é uma variável superglobal, ou automaticamente global. Isto significa que ela é disponível em todos os escopos (níveis) de um script. Você não precisa fazer um global $_SERVER; para poder acessá-la dentro de funções ou métodos, como era necessário com $HTTP_SERVER_VARS (Disponível em versões anteriores ao PHP 4.1.0). $HTTP_SERVER_VARS contém a mesmas informações, mas ela não é uma superglobal (note que $HTTP_SERVER_VARS e $_SERVER são variáveis diferentes como também o PHP as manipula diferentemente). A seguir você tem como exemplo algumas das utilizações da variável $_SERVER:

(Parte 1 de 6)

Comentários