php - aula_08 conexão bd - projeto parte 01

71
Desenvolvimento de Sistema Web Jolvani Morgan [email protected] https://sites.google.com/site/ profemti

Upload: jolvani-morgan

Post on 07-Jul-2016

12 views

Category:

Documents


0 download

DESCRIPTION

Aula 08 php

TRANSCRIPT

Page 1: Php - Aula_08 Conexão BD - Projeto Parte 01

Desenvolvimento de Sistema Web

Jolvani Morgan

[email protected]://sites.google.com/site/profemti

Page 2: Php - Aula_08 Conexão BD - Projeto Parte 01

Roteiro

Armazenamento em Banco de dados

Conectividade com Banco de dados

Linguagem SQL

Page 3: Php - Aula_08 Conexão BD - Projeto Parte 01

SQL

SQL – Structured Query Language. (Linguagem de consulta estruturada)

Padrão para interagir com banco de dados relacionais.

Page 4: Php - Aula_08 Conexão BD - Projeto Parte 01

Banco de dados

Um banco de dados relacional é composto por tabelas

Cada coluna da tabela armazena um tipo de dado e representa um campo do banco de dados. Cada linha armazena os dados de um cliente e representa um registro.

Page 5: Php - Aula_08 Conexão BD - Projeto Parte 01

Tipos de dados MySQL – (Principais)

Page 6: Php - Aula_08 Conexão BD - Projeto Parte 01

Principais comandos

Create table

Insert

Select

Update

Delete

Page 7: Php - Aula_08 Conexão BD - Projeto Parte 01

Create Table

Cria uma tabelaSintaxe:

Exemplo:

Page 8: Php - Aula_08 Conexão BD - Projeto Parte 01

Insert

Insere um registro em uma determinada tabelaSintaxe:

Exemplo:

Insere pessoa com ID = 1, se executarmos novamente irá inserir pessoa com ID = 2 e assim por diante...

Page 9: Php - Aula_08 Conexão BD - Projeto Parte 01

Select

Retorna um subconjunto de registrosSintaxe:

Exemplos:

Page 10: Php - Aula_08 Conexão BD - Projeto Parte 01

Select - WHERE

Usando WHERESintaxe:

SELECT <lista de atributos> FROM <tabela> WHERE <condição>

Condição:<nome atributo> <operador> <valor>

Operadores:=,>=,<,AND, OR e NOT

Page 11: Php - Aula_08 Conexão BD - Projeto Parte 01

Select - WHERE

Exemplo: Listar o nome e sexo dos empregados do departamento 15.

SELECT nome, sexo FROM Empregado WHERE num_dep = 15

Listar o nome e sexo dos funcionários do departamento 15 com salário > R$ 2.000,00.

SELECT nome, sexo FROM funcionario WHERE num_dep = 15 AND salario > 2000

Page 12: Php - Aula_08 Conexão BD - Projeto Parte 01

Select – WHERE – LIKE e NOT LIKE

Só se aplicam sobre atributos do tipo char ou varchar. Operam com operadores “=“, “<> ou !=” utilizando os símbolos “%” (substitui uma palavra) e “_” (substitui um caractere).

Sintaxe: SELECT ... WHERE <nome atributo> LIKE <valor 1>

Exemplo:Listar os empregados que tem como primeiro nome José

SELECT nome FROM empregado WHERE nome LIKE “José%”

Page 13: Php - Aula_08 Conexão BD - Projeto Parte 01

Select – ORDER BY

Ordenando os dados selecionados (ORDER BY).

Sintaxe: SELECT <lista de atributo> FROM <tabela> [WHERE <condição>]

ORDER BY <nome atributo> ASC | DESC

Exemplo:Listar todos os empregados ordenados ascendentes por nome

SELECT * FROM empregado ORDER BY nome

Listar todos os empregados ordenados descendentemente pelo salário. SELECT * FROM empregado ORDER BY salario DESC

Page 14: Php - Aula_08 Conexão BD - Projeto Parte 01

Select – Funções

Utilizando funções sobre conjuntos.

Comando: MAX, MIN, SUM, AVG, COUNT

Exemplos:Mostrar valor do maior salário dos empregados

SELECT MAX(salario) FROM empregadoMostrar qual o salário médio dos empregados.

SELECT AVG(salario) FROM empregadoQuantos empregados ganham mais de R$ 2.000,00?

SELECT COUNT(*) FROM empregado WHERE salario > 2000

Page 15: Php - Aula_08 Conexão BD - Projeto Parte 01

Select IN – (NOT IN)

Define valores a partir de uma lista de valores (IN).

Sintaxe: SELECT <lista de atributo> FROM <tabela> [WHERE <condição>] IN

(value1, value2,...)

Exemplo:Listar todos os empregados ordenados ascendentes por nome

SELECT nome FROM empregado OWHERE salario IN (2000,1000,3000)

Similar a: SELECT nome FROM empregado WHERE salario=2000 OR salario=1000 OR salario=3000

+ (http://www.devmedia.com.br/introducao-ao-comando-select-da-sql-parte-i/16527)

Page 16: Php - Aula_08 Conexão BD - Projeto Parte 01

Update

Atualiza uma tabela.

Sintaxe:

Exemplo:

Page 17: Php - Aula_08 Conexão BD - Projeto Parte 01

Update

Atualiza uma tabela.

Sintaxe:

Exemplo:

CUIDADO Se não for passada uma condição na cláusula WHERE todas as linhas da tabela serão alteradas !!!

Page 18: Php - Aula_08 Conexão BD - Projeto Parte 01

Delete

Deleta (apaga) registro(s) de uma tabela.

Sintaxe:

Exemplo:

Page 19: Php - Aula_08 Conexão BD - Projeto Parte 01

Delete

Deleta (apaga) registro(s) de uma tabela.

Sintaxe:

Exemplo:

CUIDADO Se não for passada uma condição na cláusula WHERE todas as linhas da tabela serão deletadas!!!

Page 20: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados• CONEXAO com BD Mudou PHP 7• http://rberaldo.com.br/pdo-mysql/• Bem elaborado

• Com PDO ou mysqli....

• http://www.w3schools.com/php/php_mysql_select.asp

• Banco de Dados• Necessário para armazenar dados, e fazer aplicações web dinâmicas.

• Mysql• Postgresql• MSSQL Server• Firebird• Oracle

ATENÇÃO

Page 21: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados• Existem 3 fases na utilização de um banco de dados• 1 - Fazer a conexão, abrir um link de comunicação entre a aplicação e o SGDB• 2 - Abrir uma transação• 3 - Executar Comandos SQL, Selects, Inserts, Updates, Deletes• 4 - Finalizar a transação (commit, Rollback)• 5 - Fechar a Conexão

• Em alguns SGDB as fazes de Abrir transação e finalizar podem ser omitidas

Page 22: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados• No Mysql• Em Mysql trabalhamos sem as fazes de transação• Conectar ao Banco de Dados mysql_connect(servidor,usuário,senha);• ainda na faze de conexão temos que escolher o banco de dados a utilizarmysql_select_db("Bando_de_dados", Id_conexão);

<?php$con = mysql_connect("localhost","turma","abc123");mysql_select_db("aula", $con);?>

Page 23: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados

• Executar uma ação no banco de dados

• mysql_query("sql",id_conexão)– mysql_query executa qualquer ação no

banco de dados(select, insert, update, delete, create, drop, etc...)

<?$result = mysql_query(“insert into

pessoa (nome) values (‘juvenal’)");?>

Page 24: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados• quando usado com selects ele trás em seu resultado o resultado da consulta, nos outros casos trás

apenas True• para acessar o resultado de uma consulta usamos

– mysql_fetch_array(Resultado da pesquisa)– para cada interação vai retornar uma linha do resultado

• o resultado será um array associativo no qual cada elemento será uma coluna na tabela, conforme especificado no sql

<?$result = mysql_query("SELECT nome, idade FROM pessoa");while($row = mysql_fetch_array($result)) echo $row['nome'] . " - " . $row['idade']; echo "<br />"; ?>

Page 25: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados• Após utilizar a conexão com o banco é necessário fecharmos, existem dois

caminhos1 - podemos esperar a execução do código e o termino do script (mais usado)2 - podemos usar a função mysql_close(id_conexão)

<?php$con = mysql_connect("localhost","turma","abc123");//codigo aquimysql_close($con);?>

Page 26: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados

• Para recuperar mensagens de erro no mysql usa-se mysql_error()

• Esta função retorna a ultima mensagem de erro do Banco de dados

<?php$con = mysql_connect("localhost","turma","abc123");if (!$con) echo('erro ao conectar : ' . mysql_error());?>

Page 27: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados

• 1 - insira um dado na tabela aluno

Page 28: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados

• 2 - monte um formulário com a estrutura da tabela alunos, e insira os dados do formulário nela

Page 29: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados

• 3 - monte uma tela que exiba os dados da tabela aluno, e a qtde de registros gravados.

Page 30: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados

• 4 - na tela do exercício anterior habilite uma coluna com a opção excluir, e quando clicar nesse link, excluir o registro selecionado

Page 31: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados

• 5 - continuando na tela do exercício anterior exiba outra coluna com a opção editar, ao clicar nela, abra um formulário com os dados preenchidos e se clicar em salvar altere os dados cadastrados no banco de dados

Page 32: Php - Aula_08 Conexão BD - Projeto Parte 01

Conectividade com SGBD

Existem duas maneiras:

Drive Nativo:

ODBC:

Page 33: Php - Aula_08 Conexão BD - Projeto Parte 01

Drive Nativo

Fala a mesma “Língua” do SGBD:Extremamente rápido

Page 34: Php - Aula_08 Conexão BD - Projeto Parte 01

ODBC

Open Database ConnectivityPadrão para acesso a Banco de DadosAbstrair o SGBD da aplicaçãoTraduz as chamadas genéricas (ODBC) em chamadas específicas

do SGBDMais Versátil.

Page 35: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados• CONEXAO com BD Mudou PHP 7• http://rberaldo.com.br/pdo-mysql/• Bem elaborado

• Com PDO ou mysqli....

• http://www.w3schools.com/php/php_mysql_select.asp

ATENÇÃO

Page 36: Php - Aula_08 Conexão BD - Projeto Parte 01

Drive Nativo

Principais Funções:

mysql_connect(); mysql_select_db(); mysql_query(); mysql_affected_rows(); mysql_num_rows(); mysql_fecth_array();

Page 37: Php - Aula_08 Conexão BD - Projeto Parte 01

PHP – Banco de Dados• CONEXAO com BD Mudou PHP 7• http://rberaldo.com.br/pdo-mysql/• Bem elaborado

• Com PDO ou mysqli....

• http://www.linhadecodigo.com.br/artigo/3638/php-pdo-como-se-conectar-ao-banco-de-dados.aspx

• http://www.w3schools.com/php/php_mysql_select.asp

ATENÇÃO

Page 38: Php - Aula_08 Conexão BD - Projeto Parte 01

Drive Nativo Acesso ao BD MySQL

Conectando o Banco de Dados passo a passo

Passo 1: conectar ao banco de dados utilizando o método resuerce mysql_connect($host, $user, $password);

Passo 2: se conectado, selecionar o nome do BD utilizando o método mysql_select_db($dbname, $conn);

Passo 3: executar queries através do método mysql_query($query);

Passo 4(final): fechar a conexão com o banco através do método mysql_close($conn);

Page 39: Php - Aula_08 Conexão BD - Projeto Parte 01

Acesso a banco de dadosConectando o Banco de Dados passo a passo

<?php$localhost = "localhost";$user = "root";$senha = "";

$con = mysqli_connect($localhost,$user,$senha);

if($con == false)echo "Conexão não estabelecida";

else $db = mysqli_select_db($con,"bdempresa");if ($db == false)

echo "Erro ao selecionar a base de dados";

Page 40: Php - Aula_08 Conexão BD - Projeto Parte 01

Acesso a banco de dados

É uma boa prática criar arquivos que serão reutilizados

dbconfig.php e dbconnect.php podem ser no mesmo arquivo...

Page 41: Php - Aula_08 Conexão BD - Projeto Parte 01

Executando queries

Executa uma query

resuerce mysql_query(string $sql);

Page 42: Php - Aula_08 Conexão BD - Projeto Parte 01

Executando Queries

Exemplo

Page 43: Php - Aula_08 Conexão BD - Projeto Parte 01

Executando Queries

Recupera o ID gerado da operação insert anterior

int mysql_insert_id([resource link_identifier])

<?php

mysql_query("INSERT INTO usuário (nome, endereco) values('joao', 'avenida', '...')");

print("O ultimo registro incluído tem id %d\n". mysql_insert_id());

?>

Page 44: Php - Aula_08 Conexão BD - Projeto Parte 01

Recuperando dados da base

Métodosmysql_facth_arrayarray mysql_facth_array(resuerce $query)$query: resultado de um mysql_query

Page 45: Php - Aula_08 Conexão BD - Projeto Parte 01

Exemplo:<?php include (“conect.inc”); $sql = “SELECT nome,endereco FROM usuário”; $query = mysql_query($sql); $total = mysql_num_rows($query);

for ($i=0; $i<$total; $i++) $result = mysql_fetch_array($query); echo $result['nome']; echo $result['endereco'];

?>

Mostrando o resultado

$sql = "select * from tb_empregados";$query = mysql_query($sql);

while ($empregado = mysql_fetch_array($query))

Page 46: Php - Aula_08 Conexão BD - Projeto Parte 01

Devolve o número de linhas afetadas:

<?php

mysql_query("DELETE FROM usuário WHERE nome LIKE ‘%joao’”); printf("Registros excluídos: %d\n“, mysql_affected_rows());

?>

Mostrando o resultado

int mysql_affected_rows ([resource id_conexao])

Page 47: Php - Aula_08 Conexão BD - Projeto Parte 01

Ferramenta que permite criar de maneira intuitiva tabelas no MySQL.

Mas por que então saber MySQL?Abrir http://localhost/phpmyadminEfetuar as atividades propostas

PHP My Admin

Page 48: Php - Aula_08 Conexão BD - Projeto Parte 01

Utilizando o phpMyAdminCrie a tabela empregado e campos (id, nome, salario,

departamento) (id = inteiro; nome = varchar(80); salario=double;

departamento=inteiro “será uma chave estrangeira”)Fazer inserções e testar comandos SQL.Criar PHP que exiba todos os empregados

Exercícios

Page 49: Php - Aula_08 Conexão BD - Projeto Parte 01

Criar as tabelas empregado e produto com os seguintes campos e os seguintes arquivos?

http://forum.imasters.com.br/topic/191441-escolhendo-um-tipo-de-campo-correto/

Mini Projeto Parte 1

Imagem

caminhoImagem

Page 50: Php - Aula_08 Conexão BD - Projeto Parte 01

Incrementar o projeto com:

Outra tabela tb_categoria(id, nome, descricao). O ID será referenciado na tabela produtos no campo categoria.

Outra tabela tb_departamento(id, departamento).O ID será referenciado na tabela empregados no campo departamento.

Outra tabela tb_venda(id, id_empregado, id_produto, quantidade, data). OBS: Verificar a quantidade disponível do produto.

Mini Projeto Parte 1- Achou Fácil

Page 51: Php - Aula_08 Conexão BD - Projeto Parte 01

No add_empregado.php insira um combobox substituindo o input para selecionar o departamento da tabela tb_departamento.

Mini Projeto Parte 1- Achou Fácil

Page 52: Php - Aula_08 Conexão BD - Projeto Parte 01

No alt_empregado.php também insira um combobox conforme código abaixo...

Mini Projeto Parte 1- Achou Fácil

Page 53: Php - Aula_08 Conexão BD - Projeto Parte 01

Projeto BD

Criar o BD denominado bdcrud e as tabelas como segue:Crie a tabela empregado e campos (id, nome, salario,

departamento) (id = inteiro; nome = varchar(80); salario=double;

departamento=inteiro “será uma chave estrangeira”)Tb_departamentosidDeptodepartamento

Page 54: Php - Aula_08 Conexão BD - Projeto Parte 01

Drive Nativo Acesso ao BD MySQL

Criar uma pasta em c:\xampp\htdocs chamada prj_crud Criar os arquivos:conexao.php

Page 55: Php - Aula_08 Conexão BD - Projeto Parte 01

Drive Nativo Acesso ao BD MySQL

index.php

Page 56: Php - Aula_08 Conexão BD - Projeto Parte 01

Drive Nativo Acesso ao BD MySQL

Crie uma pasta css e o arquivo estilo.css

Page 57: Php - Aula_08 Conexão BD - Projeto Parte 01

Drive Nativo Acesso ao BD MySQL

Crie uma pasta css e o arquivo estilo.css

Page 58: Php - Aula_08 Conexão BD - Projeto Parte 01

Drive Nativo Acesso ao BD MySQL

Crie uma pasta empregados e os arquivos:

Add_empregado.php Viz_empregado.php Alt_empregado.php Del_empregado.php

Page 59: Php - Aula_08 Conexão BD - Projeto Parte 01

Drive Nativo Acesso ao BD MySQL

Crie uma pasta empregados e os arquivos: Add_empregado.php

Criar uma pagina com um formulário: <form action="adiciona_bd.php" method="post"> nome <input… salario <input… departamento …. </form>

Enviar para o arquivo adiciona_bd.php

Page 60: Php - Aula_08 Conexão BD - Projeto Parte 01

Drive Nativo Acesso ao BD MySQL No adiciona_bd.php

Page 61: Php - Aula_08 Conexão BD - Projeto Parte 01

Drive Nativo Acesso ao BD MySQL

Crie uma pasta empregados e os arquivos: Viz_empregado.php: criar uma pagina para visualizar os dados do BD Partes do código....

• $res = "select * from tbempregados";• $query = mysql_query($res) or die ("Erro ao selecionar tabela Empregados");

• while ($emp = mysql_fetch_array($query, MYSQL_ASSOC))

• echo $emp['id_empregado'].“ - ".$emp['nome'];• echo $emp['salario'].“-". $emp[‘departamento];

Page 62: Php - Aula_08 Conexão BD - Projeto Parte 01

Revisão

Front-End: HTML index.php CSS conexão.php JavaScript, jQuery ...

Back-End: Sessão de Login PHP Login.php JSP, JSF Confere.php ASP Main.php

Verifica.php

Page 63: Php - Aula_08 Conexão BD - Projeto Parte 01

Revisão

Programação Estruturada Para desenvolver o CRUD/sistema usamos:

Back-End: Inserir Dados no BD

Add_empregado.phpAlterar (Atualizar) Dados no BD

Alt_empregado.phpDeletar Dados no BD

Del_empregado.php

CRUD

Page 64: Php - Aula_08 Conexão BD - Projeto Parte 01

Revisão

Programação Estruturada (Back-End):

Inserir Dados no BD Add_empregado.php: Responsável por criar o formulário para

adicionar os dados no Banco, enviando-os para um novo arquivo; Adiciona_bd.php: Fazer a conexão ao Banco, adicionar os dados

recebido do formulário, providos do Add_empregado.php usando instrução SQL.

Alterar (Atualizar) Dados no BD Alt_empregado.php e Altera_bd: Alteração/atualização dos registros

do banco de dados, seguindo a mesma estrutura dos arquivos anteriores.

Deletar Dados no BD Del_empregado.php: Deleta um registro do banco de dados.

CRUD

Page 65: Php - Aula_08 Conexão BD - Projeto Parte 01

Vitrine de Produtos:

Exercício

Page 66: Php - Aula_08 Conexão BD - Projeto Parte 01

Vitrine de Produtos:

Exercício

Page 67: Php - Aula_08 Conexão BD - Projeto Parte 01

Vitrine de Produtos:

Exercício

Page 68: Php - Aula_08 Conexão BD - Projeto Parte 01

Vitrine de Produtos:

Exercício

Page 69: Php - Aula_08 Conexão BD - Projeto Parte 01

Vitrine de Produtos:

Exercício

Page 70: Php - Aula_08 Conexão BD - Projeto Parte 01

Vitrine de Produtos:

Exercício

Page 71: Php - Aula_08 Conexão BD - Projeto Parte 01

Vitrine de Produtos:

Exercício