Escolar Documentos
Profissional Documentos
Cultura Documentos
PHP e MySQL
Desenvolvimento
Web
Autor:
Felipe Costa Fernandes
PHP e MySQL
Desenvolvimento Web
Luke Welling e Laura Thomson
O QUE É PHP?
O PHP é uma linguagem de criação de scripts do lado do servidor que foi projetada
especificamente para WEB. Dentro de uma página HTML, você pode embutir código de
PHP que será executado toda vez que a página for visitada. Esse código é interpretado no
servidor da Web e gera HTML ou outra saída que o visitante verá.
O PHP foi concebido em 1994 e sua origem foi o trabalho de uma única pessoa,
Rasmus Lerdorf. Essa linguagem foi adotada por outras pessoas inteligentes e passou por
três importantes regravações para nos proporcionar o amplo e aperfeiçoado produto que
vemos hoje.
O QUE É MySQL?
O PHP tem conexões nativas disponíveis para muitos sistemas de banco de dados.
Além do MySQL, você pode conectar-se diretamente a banco de dados PostgreSQL,
mSQL, Oracle, dbm, filePro, HyperWave, Infomix, InterBase e SyBase, entre outros.
Utilizando o Open Database Connectivity Standard (ODCS), você pode conctar-se a
qualquer banco de dados que forneça um driver de ODCS. Isso inclui produtos da
Microsoft e muitos outros.
Uma das aplicações mais comuns de qualquer linguagem de criação de scripts de lado
do servidor é processar formulários de HTML.
A primeira coisa a saber é que devemos configurar a ação do formulário para ser o
nome do script de PHP que processará as informações. Em geral, o valor do atributo
ACTION (em um arquivo HTML) é o URL que será carregado quando o usuário pressionar
o botão Submit. Os dados que o usuário digitou no formulário serão enviados para este
URL via o método especificado no atributo METHOD, um GET (acrescentado ao fim do
URL) ou POST (enviado como um pacote separado).
A segunda coisa a notar são os nomes dos campos de formulário. Utilizaremos esses
nomes novamente no nosso script de PHP. Por causa disso é importante dar nomes
significativos aos campos de formulário dos quais você possa facilmente se lembrar ao
começar a escrever o script de PHP.
Para embutir código PHP em HTML devemos simplesmente escrever o código PHP
dentro do arquivo HTML.
Ex:
<html><head>
<title> PHP e MySQL </title>
</head>
<body>
<h1> Meu primeiro programa </h1>
<?php
echo “<p> Código PHP em um arquivo HTML.”;
?>
</body> </html>
O código de PHP no exemplo anterior começou com <?php e acabou com ?>. Isso é
semelhante a todas as tags HTML porque todas começam com um símbolo menor que (<) e
terminam com um símbolo maior que (>). Esses símbolos são chamados tags de PHP que
dizem ao servidor da Web onde o código de PHP começa e onde termina. Qualquer texto
entre as tagas será interpretado como PHP. Qualquer texto fora dessas tags será tratado com
HTML normal.
COMENTÁRIOS
Dentro do script de PHP, você pode acessar cada um dos campos de formulário como
uma variável com o mesmo nome do campo de formulário.
Ex:.
Em um arquivo HTML que tenha o seguinte campo de formulário:
<input type=”text” name=”teste” size=20 maxlength=20>
Ao clicar em um botão submit e enviar estes dados para um arquivo PHP, o PHP
receberá uma variável de nome teste contendo o mesmo valor do campo de formulário do
HTML.
As variáveis são tratadas pelo PHP com um sinal de $ (cifrão) no inicio. A variável
teste do exemplo anterior será tratada pelo PHP com $teste.
Seja a variável $total do tipo integer, para transforma-la em double usamos o seguinte
código: $total = (double)$total;
CONSTANTES
Como você viu anteriormente, podemos alterar o valor armazenado em uma variável.
Também podemos declarar constantes. Uma constante armazena um valor como um
variável, mas seu valor é configurado uma vez e, então, não pode ser alterado em outra
parte no script.
Declaramos uma constante de nome total e de valor 10:
Define(“TOTAL”,10);
As constantes não usam o sinal de cifrão no seu inicio, veja:
Echo TOTAL;
OPERADORES ARITMÉTICOS
+ Adição $a + $b
- Subtração $a - $b
* Multiplicação $a * $b
/ Divisão $a / $b
% Módulo $a % $b
== igual a $a = = $b
=== idêntico a $a = = = $b
!= não igual a $a != $b
<> não igual a $a <> $b
< menor que $a < $b
> maior que $a > $b
<= menor que ou igual a $a <= $b
>= maior que ou igual a $a >= $b
O OPERADOR TERNÁRIO
FUNÇÕES DO PHP
IF
If ($total = = 0)
{
echo “total é igual a zero”;
}
else
{
echo “total não é igual a zero”;
}
SWITCH (CASE)
Switch($total)
{
case 0 :
echo “total é igual a zero”;
break;
case 1 :
echo “total é igual a um”;
break;
default :
echo “total indefinido”;
break;
}
WHILE
$num = 1;
while ($num <= 5)
{
echo $num . ”<BR>”;
$num++;
}
FOR
DO .. WHILE
$num = 1;
do
{
echo $num . “<BR>”;
$num++
} while ($num < 1);
ARRAYS
ou
$vetor[0] = “um”;
$vetor[1] = “dois”;
$vetor[2] = “três”;
ou
$vetor[“um”] = 1;
$vetor[“dois”] = 2;
MATRIZ
SHUFFLE
MANIPULAÇÃO DE STRING
$texto . “texto adicional” -> contatena o conteúdo de $texto com texto adicional.
Certos caracteres são perfeitamente válidos como parte de uma string mas podem
causar problemas, particularmente ao inserir dados em um banco de dados porque o banco
O PHP fornece duas funções para ajudar a resolver este problema, uma que coloca a
barras invertida (\) e outra que as tira.
AddSlashes($texto) -> formata $texto, colocando barra invertida (\) onde for
necessário.
Srt = strstr(“PHP-Nuke”,”PHP”);
Ex.:
Require(“nome_do_arquivo”);
Require($var_com_o_nome_do_arquivo);
Include(“nome_do_arquivo”);
include($var_com_o_nome_do_arquivo);
A principal diferença entre include( ) e require( ) é que include retorna 1 se for bem
sucedida ao tentar carregar o arquivo especificado e retorna 0 se não conseguir carregar o
arquivo especificado.
CHAMANDO FUNÇÕES
Para chamar uma função com o PHP simplesmente digitamos o nome da função
seguido de parênteses, e se a função tiver parâmetros e/ou retorno estes também deverão ser
lembrados.
Ex.:
Função simples:
nome_da_função( );
OBSERVAÇÃO:
Nomes de funções não fazem distinção entre letras maiúsculas e minúsculas, e nomes
de variáveis fazem esta distinção.
Ex.:
As funções somador( ), SoMaDoR( ) e SOMADOR( ), fazem referencia a
mesma função.
As variáveis total, ToTal e TOTAL, são três variáveis diferentes.
Function nome_da_função( )
{
echo “corpo da função”;
}
Para serem úteis nossas classes precisam de atributos e operações. Criamos atributos
declarando variáveis dentro de uma definição de classe utilizando a palavra-chave var.
Ex.:
Class classname
{
var $atributo1;
var $atributo2;
function operacao1( )
{
}
function operação2( )
{
}
}
Construtores
Ex.:
Class classname
{
function classname ( $parametro )
{
echo “Construtor chamado como o parâmetro $parametro”;
}
}
$a = new classname(“Primeiro”);
Var $atributo;
Function operação( $param )
{
$this->atributo = $param;
echo $this->atributo;
}
outro exemplo,
class classname
{
var $atributo;
}
$a = new classname( );
$a->atributo = “valor”;
echo $a->atributo;
outro exemplo,
class classname
{
var $atributo;
function get_atributo( )
{
return $this->atributo;
}
function set_atributo( $novo_valor )
{
$this->atributo = $novo_valor;
}
}
Ex.:
Class classname
{
function operacao1( )
{
}
function operacao2( $param1, $param2 )
{
}
}
$a = new classname( );
$a->operacao1( );
$a->operacao2(12,”teste”);
$x = $a->operacao1( );
$y = $a->operacao2(12,”teste”);
Se nossa classe deve ser uma subclasse de outra, você pode utilizar a palavra-chave
extends para especificar isso. O próximo código cria uma classe chamada B que herda de
alguma classe anteriormente definida chamada A.
Class B extends A
{
var $atributo2;
function operacao2( )
{
}
}
class A
{
var $atributo1;
function operacao1( )
{
}
}
$b = new B( );
$b->operacao1( );
$b->atributo1 = 10;
$b->operacao2( );
$b->atributo2 = 10;
Para fazer isso, vá para uma interface de linha de comando na sua máquina e digite o
seguinte:
> mysql –h nome_do_host –u nome_do_usuário -p
A opção –h é utilizada para especificar o host a que você quer conectar-se; isto é, a
máquina em que o servidor de MySQL está executando. Se estiver executando esse
comando na mesma máquina que o servidor de MySQL, você pode omitir essa opção. A
opção –u é utilizada para especificar o nome do usuário e a opção –p instrui o servidor ao
qual você quer conectar-se utilizando uma senha.
Para criar um banco de dados devemos digitar a seguinte linha de comando no prompt
do MySQL:
Mysql> create database nomedodb;
Se tudo ocorreu bem, você deverá ver uma resposta parecida com a seguinte:
Usuários e privilégios
PRIVILÉGIO DESCRIÇÃO
Reload Permite recarregar tabelas Grant e limpar privilégio, hosts, logs e tabelas.
Shutdown Permite desligar o servidor de MySQL.
Process Permite visualizar processos de servidor e elimina-los.
File Permite que os dados sejam lidos em tabelas a partir de arquivos e vice-
versa.
O comando REVOKE
Se você concedeu a cláusula WITH GRANT OPTION, pode revogar fazendo assim:
Mysql> Grant select, insert, update, delete, index, alter, create, drop
-> on books.*
-> to sally;
E mais tarde, se sally não precisar mais utilizar o banco de dados, podemos revogar
seus privilégios de uma só vez, agindo assim:
O exemplo abaixo mostra como configurar um usuário simples para utilizar nosso
banco de dados na Web:
Para criar uma tabela de banco de dados utilizamos o comando CREATE TABLE.
O exemplo acima exibirá uma lista com os nomes de todas as tabelas do banco de
dados atual.
Para inserir dados em nosso banco de dados utilizamos a instrução INSERT de SQL.
A forma normal de uma instrução INSERT é:
Por exemplo, para inserir o nome, endereço, telefone e idade em uma tabela chamada
cliente, devemos agir da seguinte forma:
Se quisermos inserir somente alguns itens, como por exemplo, nome e idade agimos
da seguinte maneira:
Por exemplo:
Ou
Se quisermos inserir mais de uma linha de uma só vez, devemos separar os valores
das linhas por virgula, como mostrado no exemplo abaixo:
SELECT *
FROM tabela;
SELECT itens
Seleciona as colunas da tabela definidas em itens.
Ex.: select nome, idade
FROM tabelas
Determina que tabelas serão usadas na consulta.
Ex.: from clientes, fornecedores
[ WHERE condição ]
Determina a condição para seleção.
Ex.: where clientes.código = fornecedores.código and clientes.nome=”Filipe”
[GROUP BY tipo_de_grupo ]
Nos fornece o resultado da consulta em grupos. Como por exemplo, se eu quero saber
o valor total das compras realizadas por um determinado cliente, eu faço a consulta com um
GROUP BY por nome de clientes.
Ex.: group by clientes.nome
[ HAVING definição_de_where ]
Além de agrupar e agregar dados, podemos realmente testar o resultado de um
agregado utilizando uma cláusula HAVING. Isso vem logo depois da cláusula GROUP BY
e é como uma WHERE que se aplica somente a grupos e agregados. Para estender nosso
exemplo anterior, se quisermos saber quais clientes tem um total de compras maior que
R$50, podemos utilizar a seguinte consulta:
[ ORDER BY item_de_ordenação ]
Ordena os dados da consulta em ordem crescente ou decrescente, definidos por ASC
(crescente) ou DESC (decrescente).
Ex.: ORDER BY nome asc ou ORDER BY nome desc
[ LIMIT critérios_de_limite ] ;
É utilizada para especificar quais linhas da saída devem ser retornadas. Essa cláusula
aceita dois parâmetros: o número de linha a partir do qual iniciar e o número de linhas para
retornar.
Ex.: Select nome
From clientes
Limit 2, 3;
Essa consulta pode ser lida como: “Selecione nome de clientes e então retorne 3
linhas, iniciando da linha 2 na saída”. Note que os números de linhas começas a partir de
zero.
= != ou <> NOT IN
> IS NOT LIKE
< IS NULL NOT LIKE
>= BETWEEN REGEXP
<= IN
NOME DESCRIÇÃO
AVG(coluna) Média de valores na coluna especificada
COUNT(item) Se especificarmos uma coluna, essa função fornecerá o nº de valores
não nulos nessa coluna. Se adicionar a palavra DISTINCT na frente do
nome de coluna, você obterá uma contagem dos valores distintos
somente nessa coluna. Se especificar COUNT(*), obterá uma contagem
de linha independentemente dos valores nulos (NULL).
MIN(coluna) O valor mínimo na coluna especificada.
MAX(coluna) O valor máximo na coluna especificada.
STD(coluna) Desvio padrão dos valores na coluna especificada.
STDDEV(coluna) O mesmo que STD(coluna).
SUM(coluna) Soma de valores na coluna especificada.
UPDATE nome_da_tabela
SET coluna1=expressão1, coluna2=expressão2,...
WHERE condição
LIMIT número ;
UPDATE livros
Set precos = precos*1.1
O exemplo acima faz uma modificação na tabela livros, aumentando em 10% o preço
de todos os livros.
UPDATE cliente
SET telefone = “38263333”
WHERE nome = “Filipe”;
Obs.: Podemos fazer somente uma alteração por instrução ALTER TABLE, mas
podemos usá-la quantas vezes quisermos.
Os diferentes tipos de alteração que podemos fazer com essa instrução são mostrados
abaixo.
SINTAXE DESCRIÇÃO
ADD [coluna] descrição_da_coluna Adiciona uma nova coluna na localização
[FIRST | AFTER coluna] como especificada (se não especificada, a coluna
entra no final). Note que as
descrições_da_coluna precisam de um nome
e um tipo, exatamente como uma instrução
CREATE.
ADD [coluna] (descrição_da_coluna, Adiciona uma ou mais colunas novas no fim
descrição_da_coluna,...) da tabela.
ADD INDEX [índice] (coluna,...) Aa um índice à tabela na coluna especificada
ADD PRIMARY KEY (coluna,...) Torna a coluna especificada a chave primária
da tabela.
ADD UNIQUE [índice] (coluna,...) Adiciona um índice à tabela na coluna
especificada.
ALTER [coluna] coluna (SET DEFAULT Adiciona ou remove um valor padrão de
Excluir linhas do banco de dados é muito simples. Você pode fazer isso utilizando a
instrução DELETE, que é geralmente assim:
Se você escrever DELETE FROM TABELA apenas, todas as linhas da tabela serão
excluídas, então tenha cuidado!
A cláusula LIMIT pode ser utilizada para limitar o número máximo de linhs que serão
realmente excluídas.
Ex.:
Delete from clientes
Where codigo=5;
Para excluir tabelas usamos a instrução DROP TABLE, que é parecida com:
Para excluir bancos de dados usamos a instrução DROP DATABASE, que é parecida
com:
abaixo segue um exemplo (em forma de codigo) de como podemos acessar uma
banco de dados MySQL a partir da WEB com o PHP.
<Arquivo procura.html>
<html>
<head>
<title> Procura por livros </title>
</head>
<body>
<h1> Livraria PHP – Catalogo de procura </h1>
<form action=”resultado.php” method=”post”>
Escolha o tipo da pesquisa: <br>
<select name=”tipo”>
<option value=”autor”> Autor
<option value=”titulo”> titulo
<option value=”codigo”> codigo
</select>
<br>
Digite o termo de pesquisa: <br>
<input name=”pesquisa” type=text>
<br>
<input type=submit value=”Pesquisar”>
</form>
</body>
</html>
Este código nos mostra um formulário com um Combobox para escolhermos o tipo, e
um edit para digitarmos os parametros para a pesquisa. E por fim um botão para pesquisar.
Ou clicarmos neste botão será chamado o arquivo resultado.php, e seu código é mostrado
abaixo.
<resultado.php>
<html>
<head>
<title> Procura por livros </title>
</head>
<body>
<h1> Livraria PHP – Catalogo de procura </h1>
<?php
trim($pesquisa);
if (!$tipo || !$pesquisa )
{
echo “Informe todos os campos. Volte e os digite.”;
exit;
}
$tipo = addslashes($tipo);
$pesquisa = addslashes($pesquisa);
@ $db = mysql_pconnect(“localhost”,”banco_de_dados”,”senha”);
if (!$db)
{
echo “Erro: Não conectado ao banco de dados”;
exit;
}
mysql_select_db(“banco_de_dados”);
$query = “select * from livros where “.$tipo.” Like ‘%”.$pesquisa.”%’”;
$result = mysql_query($query);
$num_result = mysql_num_rows($result);
for ($i=0;$i<num_result;$i++)
{
$linha = mysql_fetch_array($result);
echo “<p><strong>”.($i+1).”. Titulo: “;
echo htmlspecialchars( stripslashes($linha[“titulo”]));
echo “</strong><br>Autor: “;
echo htmlspecialchars( stripslashes($linha[“autor”]));
echo “<br> Codigo: “;
echo htmlspecialchars( stripslashes($linha[“codigor”]));
echo “<br> Preço: “;
echo htmlspecialchars( stripslashes($linha[“preco”]));
echo “</p>”;
}
?>
</body>
</html>
Esta função retorna um identificador de link para seu banco de dados do MySQL em
caso de sucesso ou falso em caso de falha.
Para realizar conexões com banco de dados temos duas funções, mysql_pconnect( ) e
mysql_connect( ). A diferença é que mysql_pconnect( ) retorna uma conexão persistente
para o banco de dados.
Uma conexão normal para o banco de dados será fechada quando um script concluir a
execução ou quando o script chamar mysql_close( ). A conexão persistente permanece
aberta depois que o script conclui a execução e não pode ser fechada com a função
mysql_close( ).
Fazer uma conexão com um banco de dados envolve uma certa quantidade de
overhead e, portanto, leva algum tempo. Quando mysql_pconnect( ) é chamado, antes de
tentar conectar-se ao banco de dados, ele automaticamente verificará se já não há uma
conexão persistente aberta. Se houver, ele utilizará essa em vez de abrir uma nova. Isso
economiza tempo e overhead de servidor.
Mysql_select_db(“banco_de_dados”);
Para realizar uma consulta utilizamos a função mysql_query( ), mas, antes é bom
configurarmos a consulta que desejamos executar:
$result = mysql_query($query);
mysql_db_query,
Esta função é muito semelhante a anterior, mas permite especificar o banco de dados
em que você gostaria de executar a consulta. Essa função é como uma combinação das
funções mysql_select_db( ) e mysql_query( ).
Para acessarmos o campo nome resultante desta consulta usamos o seguinte comando
$row[“nome”];
$row[0];
Mysql_close( nome_da_conexão )
LIBERANDO ESPAÇO
Mysql_free_result( $result )