You are on page 1of 53

Utilizando Php e Mysql

Nasair Júnior da Silva


nasair@solis.coop.br

V Seminário de Desenvolvimento em Software Livre


Conteúdo

Objetivos
O que é SQL/MySql
O ambiente MySql
A linguagem SQL
O que é PHP
Utilização da Linguagem
Conexão com Banco de Dados
Exemplos
Exercícios
V Seminário de Desenvolvimento em Software Livre
Objetivos do curso

Conhecer o PHP

Conhecer a linguagem SQL

Conhecer as funções de conexão e interação com


banco de dados Mysql, utilizando a linguagem
PHP

Exercitar o uso das funções PHP e linguagem


SQL

V Seminário de Desenvolvimento em Software Livre


O que é SQL/MySql

SQL é um padrão de linguagem a ser utilizado por


sistemas de banco de dados, para gerenciamento e
armazenamento de dados.
MySQL é um servidor de banco de dados SQL multi-
usuário e permite múltiplos acessos simultâneos.
MySQL é uma implementação cliente-servidor.
Manipula um número ilimitado de usuários
simultâneos;
Alta velocidade de execução;
Trabalha com diferentes plataformas: Unix, Windows
etc.;

V Seminário de Desenvolvimento em Software Livre


O que é SQL/MySql (2)

Disponibiliza diversos tipos de dados: INT ,


FLOAT, DOUBLE, CHAR, VARCHAR, TEXT,
BLOB, DATE, TIME, DATETIME, TIMESTAMP,
YEAR, SET e ENUM;
Alta velocidade na execução de joins usando
multi-join otimizado;
Suporte completo a operadores e funções nas
cláusulas SELECT e WHERE;
Suporte às cláusulas GROUP BY e ORDER BY e a
funções de grupo (COUNT(), AVG(), STD(),
SUM(), MAX() e MIN());

V Seminário de Desenvolvimento em Software Livre


O que é SQL/MySql (3)

Suporte a LEFT OUTER JOIN com a sintaxe


ANSI SQL e ODBC;
Sistema de privilégios flexível, simples, eficiente
e seguro.
Tabelas de disco sob a forma B-tree rápidas com
compressão de índices;
Permite 16 índices por tabela;
Escrita em C e C++. Testada com diferentes
compiladores;
Possui um sistema de alocação de memória
extremamente rápido;
V Seminário de Desenvolvimento em Software Livre
O que é SQL/MySql (4)

DELETE, INSERT, REPLACE e UPDATE


devolvem o número de linhas afetadas pelo
comando;
Nomes de funções não entram em conflito com
nomes de tabelas ou colunas;
Algumas novas funcionalidades:
Gatilhos (triggers)
Stored procedures
Visões (views)
Joins otimizados, ...
http://www.mysql.com
V Seminário de Desenvolvimento em Software Livre
Histórico do MySql

1979: Unireg: Monty Widelious criou o Unireg,


um banco de dados não-SQL para grandes
tabelas
1994: Monty iniciou o desenvolvimento de um
SGBD baseado no Unireg; API baseado no
mSQL, um gerenciado open source (não era
muito bom para grandes tabelas)
1996: Mysql 3.11.1 lançado em binário para
Linux e Solaris
2005: Mysql 5.0.4

V Seminário de Desenvolvimento em Software Livre


Tipos de dados do MySql

CHAR(M): strings de tamanho fixo entre 1 e 255


caracteres
VARCHAR(M): strings de tamanho flexível entre
1 e 255 caracteres
INT(M): números inteiros entre -2147483648 e
2147483647
FLOAT [(M,D)]: números decimais com D casas
decimais
DATE: armazena informação relativa a datas. O
formato default é 'YYYY-MM-DD'

V Seminário de Desenvolvimento em Software Livre


Tipos de dados do MySql(2)

TEXT/BLOB: strings entre 255 e 65535


caracteres. A diferença entre TEXT e BLOB é
que no primeiro o texto não é sensível ao caso
e no segundo sim
SET: conjunto de valores strings
ENUM: conjunto de valores strings, difere do
SET pois só são armazenados valores
previamente especificados

V Seminário de Desenvolvimento em Software Livre


Especificação de colunas

Primary Key (Chave Primária): usada para


diferenciar um registro do outro. Cada
registro, desta forma, não pode ter a mesma
chave primária
Foreign Key (Chave Estrangeira): usada para
relacionar uma coluna de uma tabela com a
coluna de outra tabela
Auto_increment: uma coluna com esta opção é
automaticamente incrementada quando da
inserção de um registro
NOT NULL: não permite a inserção de valores
nulos
V Seminário de Desenvolvimento em Software Livre
Sistema de Privilégios

A tabela host determina quais os hosts que estão


habilitados a acessar o servidor MySQL

A tabela user determina os usuários que podem


acessar o servidor e suas senhas de
identificação a partir de um host

A tabela db contém as informações relativas a


qual banco de dados um usuário de um certo
host pode acessar

V Seminário de Desenvolvimento em Software Livre


O Ambiente MySQL

Para acessar o ambiente mysql


#mysql ­h host ­u username ­p databasename

Para criar um banco de dados


mysql> create database NomeDoBanco;

Para utilizar o banco recém criado:


mysql> use NomeDoBanco

V Seminário de Desenvolvimento em Software Livre


Iniciando...

Visualizar todos os bancos de dados


mysql> show databases;

Visualizar as tabelas do banco atual


mysql> show tables;

Visualizar os campos de uma tabela


mysql> show fields from NomeDaTabela;
ou:
mysql> desc NomeDaTabela;
V Seminário de Desenvolvimento em Software Livre
Criando uma tabela

Mysql>CREATE TABLE empresas (


codigo integer auto_increment,
nome varchar(50),
primary key(codigo)) type=innodb;//
Mysql>CREATE TABLE pessoas (
codigo integer auto_increment,
nome varchar(50), empresa integer,
salario real, primary key(codigo),
foreign key(empresa) references empresas
(codigo)) type=innodb;//
V Seminário de Desenvolvimento em Software Livre
Inserindo valores

INSERT INTO empresas ( nome) VALUES


('Solis'),('Unisinos'),('Univates'),('Governo
FEDERAL');//
INSERT INTO pessoas (nome, empresa, salario)
VALUES ('Nasair Silva',1,100),('Joice',1,200),
('Daniel',1,300),('Leonardo',2,400),
('Andréa','2',500),('Cesar',3,600),
('Viviane',3,700),('Roberto Jefferson',4,3000),
('Luis Inácio',4,5000);//
INSERT INTO pessoas(nome, empresa, salario)
VALUES ('Frederico',10,1000);

V Seminário de Desenvolvimento em Software Livre


Alterando uma tabela

mysql>desc pessoas;
mysql>alter table pessoas add data_nascimento
date;
mysql>alter table pessoas add telefone int;
mysql>alter table pessoas drop telefone;
mysql>alter table pessoas add telefone varchar
(10);
mysql>alter table pessoas modify telefone
varchar(15);
mysql>alter table pessoas change telefone fone
varchar(15);
V Seminário de Desenvolvimento em Software Livre
Exibindo, Apagando, Alterando

mysql>SELECT * FROM pessoas;


mysql>DELETE FROM pessoas WHERE
codigo=8;
mysql>UPDATE pessoas SET salario=6000
WHERE codigo=9;
mysql>SELECT nome, salario FROM pessoas;
mysql>UPDATE pessoas SET salario = 500
WHERE salario < 500;
mysql>DELETE FROM pessoas WHERE salario
>5000;
mysql>SELECT nome, salario FROM pessoas;
V Seminário de Desenvolvimento em Software Livre
Criando usuários

mysql> insert into mysql.user (Host, User,


Password) values ('localhost', 'aluno', password
('teste123'));
mysql> flush privileges;
mysql> grant all privileges on curso.* to
aluno@localhost identified by 'teste123';
mysql> revoke DELETE on curso.* FROM
aluno@localhost;
● ALTER, CREATE, DELETE, DROP, SELECT,
INSERT, UPDATE,

V Seminário de Desenvolvimento em Software Livre


Apagando banco e tabela

mysql>drop table teste;

Query OK, 0 rows affected (0.00 sec)

mysql>show tables;

mysql>drop database teste;

Query OK, 0 rows affected (0.00 sec)

mysql>show databases;

V Seminário de Desenvolvimento em Software Livre


O que é PHP

oficialmente "PHP: Hypertext Preprocessor"

PHP é uma linguagem de script no lado do servidor


(server-side) embutida no HTML, portanto é
necessário instalar o interpretador da linguagem no
servidor de Web.

Pode ser utilizada como script local

Extensão php-gtk para programação local

Site: http://br.php.net

V Seminário de Desenvolvimento em Software Livre


O que o PHP pode fazer ?

Tudo o que outras linguagens fazem...

● Coleta dados e gera formulários dinâmicos

● Conversa de forma nativa com uma ampla


variedade de Bancos de Dados

● Tem acesso a protocolos como IMAP, SNMP,


NNTP, POP3, HTTP...

● Pode ser utilizado em programação local

V Seminário de Desenvolvimento em Software Livre


Histórico do PHP

Criada em 1994 por Rasmus Lerdorf


Em 1995 a primeira versão utilizada por outras
pessoas chamada Personal Home Page Tools
Ainda em 1995 o interpretador é reescrito e
chamado PHP/FI, esta é a versão 2.
Em 1997, com um time de desenvolvedores
surge a versão 3.
Em seguida a versão 4, muito mais rebusta.
Versão 5, com várias alterações e melhorias

V Seminário de Desenvolvimento em Software Livre


Primeiros Passos
Tags que identificam o PHP
<?php
codigo;
?>
<?
codigo;
?>
<script language=”php”>
codigo;
</script>
V Seminário de Desenvolvimento em Software Livre
Verificando a instalação

<?php
phpinfo();
?>

V Seminário de Desenvolvimento em Software Livre


Olá, Mundo

echo, print: Ecreve um output na tela


echo('Olá Mundo!');

// : Comentário de uma linha


// Isto é um comentário

/* */ : Bloco de comentário
/* Isto é
um bloco de comentário */

V Seminário de Desenvolvimento em Software Livre


Exemplo - exemplo1.php

<HTML><HEAD>
<TITLE>Script de exemplo</TITLE>
</HEAD>
<BODY>
<CENTER>Bem-vindo ao script de exemplo:</CENTER>
<?
$hoje = date("d-m-Y");
echo "<BR><BR>Hoje é: $hoje.";
?>
</BODY>
</HTML>
V Seminário de Desenvolvimento em Software Livre
Variáveis

Os tipos de variáveis mais usados são:


Caractere: 'a', 'b', 'Z'
Inteiro: 0, 1, 2
String: "PHP É legal!"
Real/Flutuante: 15.5
Iniciam SEMPRE com o caracter $
Não é necessário declaração
O nome pode começar por qualquer letra ou _

V Seminário de Desenvolvimento em Software Livre


Operadores

+ Adição
- Subtração
* Multiplicação
/ Divisão
. Concatenação
= Atribuição simples
+= Atribuição com adição
% Resto da divisão

V Seminário de Desenvolvimento em Software Livre


Operadores(2)

-= Atribuição com subtração

+= Atribuição com adição

*= Atribuição com multiplicação

/= Atribuição com divisão

.= Atribuição com concatenação

== Igual a

=! Diferente de

V Seminário de Desenvolvimento em Software Livre


Operadores(3)

=== Igual e mesmo tipo


!== Conteúdo e tipo diferente
< Menor que
> Maior que
<= Menor ou igual a
>= Maior ou igual
++ Incremento
-- Decremento

V Seminário de Desenvolvimento em Software Livre


Arrays ou Matrizes

podem ser vistos como:


uma forma de lista indexada de variáveis
(array unidimensional),
como uma tabela (array bidimensional)
podem conter qualquer tipo de dados (caractere,
inteiro, decimal, string)
Inicialização
$produto[0]="Batatas";
ou
$produto=array("Batatas");
V Seminário de Desenvolvimento em Software Livre
Variáveis especiais

$_GET: valores recebidos pela URL ou por


formulário, com método GET
$_POST: valores recebidos via formulário, via
método POST
$_REQUEST: combinação do $_GET e
$_REQUEST
$_SERVER: contém valores de configuração do
servidor
$_COOKIE: contém cookies registrados
$_SESSION: contém sessões registradas

V Seminário de Desenvolvimento em Software Livre


Exemplo - exemplo2.php

Utilizar a seguinte url:


/exemplo2.php?nome=Nasair&idade=18

<?php
echo “Nome Informado: “.$_GET['nome'];
echo “<br />Idade: “.$_GET['idade'];
?>

V Seminário de Desenvolvimento em Software Livre


Transformação de tipos

$a = 10; # $a é um inteiro
$b = (double) $a; # $b é um double

(int), (integer) Converte para inteiro


(real),(double),(float) Converte para double
(string) Converte para string
(array) Converte para array
(object) Converte para objeto

V Seminário de Desenvolvimento em Software Livre


Condicionais

se "tenho dinheiro" if($dinheiro > 0)


"Vou ao Cinema" echo “Vou ao cinema”;

se "chover" if($chuva)
"Fico em casa" echo “Fico em casa”;
senão else
"Vou à praia" echo “Vou à praia”;

V Seminário de Desenvolvimento em Software Livre


Exercício

Criar um arquivo que receba a variável idade


pela url e imprima:

se a idade for maior ou igual a 21:


“Maior de idade – civil”
se a idade for maior ou igual a 18:
“Maior de idade – penal”
se a idade for menor que 18:
“Menor de idade”

V Seminário de Desenvolvimento em Software Livre


Laços de repetição

Enquanto(“Não tiver 60 while($idade < 60)


anos”)
trabalha_Peao();
“Não paro de
trabalhar”
While(LedadosTabela())
Enquando(“Há dados
na tabela”) echo $dados;
“Exiba estes dados”
Comece na primeira For($i=1;
pessoa e pare na 30a, $i<=30;$i++)
sempre Exibindo os echo $dados;
dados de cada uma
V Seminário de Desenvolvimento em Software Livre
Condicionais(2)

Caso Mês For 1 Caso Mês for 2


então é “Janeiro”; então é “Fevereiro”; ...

swith($mes)
{
case '1': echo “Janeiro”; break;
case '2': echo “Fevereiro”; break;
}

V Seminário de Desenvolvimento em Software Livre


Funções

É um bloco de código que se declara para que


possa usar-se sempre que for necessário
Podem retornar valores através do comando
RETURN
Podem receber parâmetros por valor e por
referência (acrescenta-se & na frente da
variável).

V Seminário de Desenvolvimento em Software Livre


Funções(2)

Function mesExtenso($mes)
{
switch($mes)
{
case '1': return “Janeiro”;
case '2': return “Fevereiro”;
}
}

V Seminário de Desenvolvimento em Software Livre


Formulários

Quando é feito um submit de um formulário para


um script PHP, o PHP é capaz de entender o
que lhe é enviado, e transformar um formulário
num conjunto de variáveis com a informação
enviada
<form action="verifica.php">
Digite o seu nome: <input type=text name=nome /><br />
Digite o seu telefone: <input type=text name=fone /><br />
Digite o sua data nasc.: <input type=text name=data /><br />
<input type=submit />
</form>

V Seminário de Desenvolvimento em Software Livre


Formulários(2)
<?php
echo “Os dados que você digitou são:”;
echo “<br />Nome: “.$_GET['nome'];
echo “<br />Telefone: “.$_GET['fone'];
echo “<br />Data: “.$_GET['data'];
echo “<br />Sua idade é: “.idade($_GET['data']).” anos”;
function idade($data)
{
$idade = date('Y') – substr($data,-4);
return $idade;
}
?>
V Seminário de Desenvolvimento em Software Livre
Formulários(3)
text - Origina uma variável com o nome da caixa.
Essa variável é uma string e contím a
informação digitada na caixa.
checkbox - Origina uma variável com o nome da
checkbox. Esta variável contém valor se estiver
ativa ou não contém se inativa.
radio - Origina uma variável com o nome do
radio. Esta variável contém o valor do radio
selecionado.
select - Origina uma variável com o nome do
select. Contém o valor do OPTION selecionado.
textarea - Origina uma variável com o nome da
textarea. Contém o valor introduzido na
mesma.
V Seminário de Desenvolvimento em Software Livre
Formulários(4)

V Seminário de Desenvolvimento em Software Livre


Conexões com banco

Estabelecer a conexão
$con = mysql_connect
(“host”,”usuario”,”senha”);
Selecionar banco de dados
mysql_select_db(“banco”,$con);
Enviar a consulta
$q = mysql_query(“SELECT...”,$con);
Receber os dados
$dados = mysql_result($q,$LINHA,$COLUNA);
Fechar a conexão
mysql_close($con);
V Seminário de Desenvolvimento em Software Livre
Conexões – exemplo3.php

<?php
$con = mysql_connect
(“localhost”,”root”,”root”) or die(“Não foi
possível fazer a conexão”);
mysql_select_db(“curso”,$con) or die(“Não foi
possível selecionar o banco”);
$q = mysql_query(“SELECT nome FROM
pessoas”,$con);
echo mysql_result($q,0,0);
mysql_close($con);
?>
V Seminário de Desenvolvimento em Software Livre
Conexões – Funções básicas

Número de linhas em uma consulta (envio de


dados)
int mysql_affected_rows($q);
Número de linhas em uma consulta (recebimento
de dados)
int mysql_num_rows($q);
Receber toda a linha de uma consulta
array mysql_fetch_row($q);
Receber toda a linha, em matriz associativa
array mysql_fetch_assoc($q);
V Seminário de Desenvolvimento em Software Livre
Conexões-exemplo4.php
<?php
$con = mysql_connect(“localhost”,”root”,”root”) or die(“Não
foi possível fazer a conexão”);
mysql_select_db(“curso”,$con) or die(“Não foi possível
selecionar o banco”);
$q = mysql_query(“SELECT nome, empresa FROM
pessoas”,$con);
$num = mysql_num_rows($q);
for($i=0;$i<$num;$i++)
{
list($nome,$empresa) = mysql_fetch_row($q);
echo “<br />Nome: $nome ($empresa)”;
}
mysql_close($con);
?>
V Seminário de Desenvolvimento em Software Livre
Conexões-exemplo5.php
<?php
$con = mysql_connect(“localhost”,”root”,”root”);
mysql_select_db(“curso”,$con);
$q = mysql_query(“SELECT codigo, nome FROM
empresas”,$con);
$num = mysql_num_rows($q);
echo “<select name=empresa>”;
for($i=0;$i<$num;$i++)
{
list($codigo,$nome) = mysql_fetch_row($q);
echo “<option value=$codigo>$nome</option>”;
}
echo “</select>”;
mysql_close($con);
?> V Seminário de Desenvolvimento em Software Livre
Cuidados e segurança

Sempre “tratar” os dados recebidos via


formulário
Ao utilizar senha, mantê-la criptografada (sha1
ou md5)
Utilizar permissões do banco de dados: nunca ter
permissões “adicionais”
SQLInjection
HTTPS – Servidor Seguro – SSL
Usar senha no banco de dados

V Seminário de Desenvolvimento em Software Livre


Exercícios

Acrescentar no primeiro formulário um campo


que recebe o salário e um campo de seleção
para selecionar a empresa da pessoa
Fazer com que esse formulário insira os dados na
tabela pessoas
Fazer uma tela de listagem das pessoas, exibindo
o nome, empresa e idade, além de ter um link
para editar e outro para apagar
Ordenar esta listagem pelo nome da pessoa
Criar um filtro nesta listagem (pela empresa)

V Seminário de Desenvolvimento em Software Livre


Obrigado!!!!

Nasair Júnior da Silva

nasair@solis.coop.br

V Seminário de Desenvolvimento em Software Livre

You might also like