Upload
jolvani-morgan
View
12
Download
0
Embed Size (px)
DESCRIPTION
Aula 08 php
Citation preview
Roteiro
Armazenamento em Banco de dados
Conectividade com Banco de dados
Linguagem SQL
SQL
SQL – Structured Query Language. (Linguagem de consulta estruturada)
Padrão para interagir com banco de dados relacionais.
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.
Tipos de dados MySQL – (Principais)
Principais comandos
Create table
Insert
Select
Update
Delete
Create Table
Cria uma tabelaSintaxe:
Exemplo:
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...
Select
Retorna um subconjunto de registrosSintaxe:
Exemplos:
Select - WHERE
Usando WHERESintaxe:
SELECT <lista de atributos> FROM <tabela> WHERE <condição>
Condição:<nome atributo> <operador> <valor>
Operadores:=,>=,<,AND, OR e NOT
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
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é%”
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
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
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)
Update
Atualiza uma tabela.
Sintaxe:
Exemplo:
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 !!!
Delete
Deleta (apaga) registro(s) de uma tabela.
Sintaxe:
Exemplo:
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!!!
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
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
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);?>
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’)");?>
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 />"; ?>
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);?>
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());?>
PHP – Banco de Dados
• 1 - insira um dado na tabela aluno
PHP – Banco de Dados
• 2 - monte um formulário com a estrutura da tabela alunos, e insira os dados do formulário nela
PHP – Banco de Dados
• 3 - monte uma tela que exiba os dados da tabela aluno, e a qtde de registros gravados.
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
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
Conectividade com SGBD
Existem duas maneiras:
Drive Nativo:
ODBC:
Drive Nativo
Fala a mesma “Língua” do SGBD:Extremamente rápido
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.
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
Drive Nativo
Principais Funções:
mysql_connect(); mysql_select_db(); mysql_query(); mysql_affected_rows(); mysql_num_rows(); mysql_fecth_array();
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
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);
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";
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...
Executando queries
Executa uma query
resuerce mysql_query(string $sql);
Executando Queries
Exemplo
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());
?>
Recuperando dados da base
Métodosmysql_facth_arrayarray mysql_facth_array(resuerce $query)$query: resultado de um mysql_query
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))
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])
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
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
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
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
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
No alt_empregado.php também insira um combobox conforme código abaixo...
Mini Projeto Parte 1- Achou Fácil
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
Drive Nativo Acesso ao BD MySQL
Criar uma pasta em c:\xampp\htdocs chamada prj_crud Criar os arquivos:conexao.php
Drive Nativo Acesso ao BD MySQL
index.php
Drive Nativo Acesso ao BD MySQL
Crie uma pasta css e o arquivo estilo.css
Drive Nativo Acesso ao BD MySQL
Crie uma pasta css e o arquivo estilo.css
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
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
Drive Nativo Acesso ao BD MySQL No adiciona_bd.php
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];
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
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
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
Vitrine de Produtos:
Exercício
Vitrine de Produtos:
Exercício
Vitrine de Produtos:
Exercício
Vitrine de Produtos:
Exercício
Vitrine de Produtos:
Exercício
Vitrine de Produtos:
Exercício
Vitrine de Produtos:
Exercício