programa§£o para internet - .programa§£o para internet curso de sistemas de...

Download Programa§£o para Internet - .Programa§£o para Internet Curso de Sistemas de Informa§£o Prof

Post on 11-Nov-2018

213 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Programao para Internet

    Mdulo 8

    Web Dinmica com PHP e MySQL

    Prof. Dr. Daniel A. Furtado

    Universidade Federal de Uberlndia Faculdade de Computao

  • Dependendo da verso do PHP so disponibilizadas duas ou trs APIs (mdulos ou extenses) para comunicao com o MySQL:

    MySQL Extension (obsoleta, retirada do PHP 7)

    Suportada apenas por verses anteriores do PHP. No utilize para novos projetos!

    MySQLi Extension (MySQL Improved)

    Prov acesso s funcionalidades do MySQL 4.1 e superior

    Disponibiliza uma coleo de mtodos para comunicao especificamente com o MySQL

    PHP Data Objects (PDO) Extension

    Prov uma interface nica e consistente para acessar diversos SGBDs (MySQL, PostgreSQL, Oracle, Firebird, etc) ;

    PDO suporta 12 sistemas de gerenciamento de banco de dados

    Prof. Dr. Daniel A. Furtado Programao para Internet 2

    PHP e MySQL

  • Ambas as tecnologias:

    Possuem interface de comunicao orientada a objetos;

    Suportam prepared statements. Prepared Statements protegem contra SQL injection, e so muito importantes para a segurana da aplicao;

    Suportam o conceito de transaes.

    PDO

    Possui a vantagem de utilizar basicamente a mesma sintaxe para comunicao com os diversos SGBDs suportados;

    Assim, caso seja necessrio adaptar o projeto para utilizar um SGBD diferente, a alterao mais rpida. Com MySQLi pode ser necessrio reescrever uma parte considervel do cdigo;

    MySQLi

    Possui a vantagem de ser otimizado especificamente para o MySQL, oferecendo um melhor desempenho quando comparado ao PDO.

    Programao para Internet 3

    MySQLi vs PDO

    Prof. Dr. Daniel A. Furtado

  • O acesso a bancos de dados utilizando o PHP geralmente envolve trs etapas:

    1. Conexo com o servidor de banco de dados utilizando um nome de usurio e uma senha (e seleo de um banco de dados);

    2. Execuo das operaes de dados necessrias, como inseres, atualizaes e consultas no banco de dados;

    Para o caso de uma operao de consulta, deve-se processar os resultados.

    3. Encerramento da conexo.

    Prof. Dr. Daniel A. Furtado Programao para Internet 4

    PHP e Bancos de Dados

  • 1. Conexo com o servidor de banco de dados MySQL

    Programao para Internet 5

    Acessando o MySQL com MySQLi

    Prof. Dr. Daniel A. Furtado

  • 2. Execuo das operaes de dados necessrias utilizando SQL

    Programao para Internet 6

    Acessando o MySQL com MySQLi

    Prof. Dr. Daniel A. Furtado

    O mtodo query retorna: - FALSE, caso ocorra algum

    erro na operao; - TRUE, no caso de sucesso

    em operaes que no retornam um resultado (como INSERT e UPDATE);

    - Ou um objeto que d acesso ao resultado da operao (caso da operao SELECT, por exemplo)

  • 2.1. Processando os resultados de consultas

    Programao para Internet 7

    Acessando o MySQL com MySQLi

    Prof. Dr. Daniel A. Furtado

    Nota: No lugar de fetch_assoc, tambm possvel utilizar fetch_row. Neste caso, um array convencional retornado e os campos individuais da tupla podem ser acessados por um ndice: $row[0], $row[1], etc.

  • 3. Encerrando a conexo com o servidor do MySQL

    Programao para Internet 8

    Acessando o MySQL com MySQLi

    Prof. Dr. Daniel A. Furtado

  • Alguns cuidados que devem ser tomados ao executar operaes SQL com PHP:

    A declarao SQL deve ser criada como uma string, entre aspas;

    Strings dentro da declarao SQL devem aparecer entre aspas simples;

    No utilize aspas para valores numricos;

    No utilize aspas para a palavra NULL;

    Strings contendo datas devem aparecer entre aspas;

    Prof. Dr. Daniel A. Furtado Programao para Internet 9

    Acessando o MySQL com MySQLi

  • Acessando o MySQL com MySQLi - Exemplo

  • Acessando o MySQL com PDO - Exemplo

  • Quando vrios arquivos PHP acessam o banco de dados, pode-se colocar os dados de conexo separadamente em outro arquivo PHP e fazer incluso do mesmo utilizando a declarao include ou require.

    Programao para Internet 12

    Dados de Conexo em Arquivo Separado

    Prof. Dr. Daniel A. Furtado

  • Testar e analisar os arquivos anexos (veja os passos no prximo slide):

    conexaoMysql.php

    ex01-cadastraCliente.php

    ex01-cliente.php

    ex01-mostraClientes.php

    ex01-menu.php

    Acessando o MySQL com MySQLi

  • 1. Acesse o banco de dados remoto utilizando o MySQL Workbench e os dados de conexo fornecidos pelo professor;

    2. Crie uma tabela de nome Cliente contendo os seguintes campos: Id (inteiro, chave primria, auto_increment)

    Nome (string)

    Email (string)

    EstadoCivil (string)

    DiaNascimento (inteiro)

    3. Acesse os anexos desta aula e altere o arquivo conexaoMysql.php de acordo com os seus dados de conexo;

    4. Utilize o WinSCP para copiar os arquivos PHP listados no slide anterior para o servidor;

    5. Acesse o arquivos utilizando um navegador de Internet.

    Prof. Dr. Daniel A. Furtado Programao para Internet 14

    Exerccio 1

  • 1. Crie um banco de dados no servidor awardspace.com (veja as dicas nos prximos slides) utilizando sua conta criada previamente;

    2. Crie uma tabela Aluno (matricula, nome, sexo) nesse banco de dados;

    3. Crie um script novoAluno.php para apresentar um formulrio de cadastro de aluno e realizar a devida insero dos dados na tabela Aluno;

    4. Crie um script PHP para listar os dados dos alunos cadastrados em uma tabela (mostraAlunos.php) (Crie uma funo para buscar os dados na tabela e montar um array de objetos. Em seguida, monte a tabela HTML utilizando os dados desse array).

    Programao para Internet 15

    Exerccio 2

    Prof. Dr. Daniel A. Furtado

  • Criando de um Banco de Dados de Teste no awardspace.com

    Utilizando o phpMyAdmin

  • Faa login e acesse MySQL Databases

    Programao para Internet 17

    Criando um Banco de Dados no Awardspace.com

    Prof. Dr. Daniel A. Furtado

  • Fornea um nome para o BD e uma senha de acesso:

    Programao para Internet 18

    Criando um Banco de Dados no Awardspace.com

    O nome do banco e a senha

    sero necessrios no

    momento da conexo com o

    banco utilizando o PHP

    Prof. Dr. Daniel A. Furtado

  • Confira os detalhes do banco de dados criado;

    Esses dados sero necessrios para realizar a conexo utilizando os scripts PHP;

    Programao para Internet 19

    Criando um Banco de Dados no Awardspace.com

    Nome do

    banco de

    dados

    Usurio do

    MySQL

    End. do servidor

    do MySQL

    Prof. Dr. Daniel A. Furtado

  • Para manipular o banco de dados utilizando diretamente um programa navegador como o Google Chrome, acesse o phpMyAdmin

    Programao para Internet 20

    Criando um Banco de Dados no Awardspace.com

    Clique em phpMyAdmin4 para

    acessar o banco de dados

    a partir do navegador (para criao

    de tabelas, realizar testes, etc.)

    Prof. Dr. Daniel A. Furtado

  • Programao para Internet 21

    Criando um Banco de Dados no Awardspace.com

    1. Clique aqui para ativar

    o banco de dados

    2. Coloque o cdigo SQL aqui

    Prof. Dr. Daniel A. Furtado

  • Passando argumentos pela URL - Exemplo

    ...

    $sql = "SELECT cpf, nome FROM Cliente";

    $resultado = $conn->query($sql);

    if ($resultado->num_rows > 0)

    {

    echo "

    Clientes Cadastrados

    CPFNome";

    while ($row = $resultado->fetch_assoc())

    {

    $cpf = $row["cpf"];

    $nome = $row["nome"];

    echo "

    $cpf$nome

    Modificar

    ";

    }

    }

    ...

  • Inicializando Campos de Formulrio para Edio - Exemplo

  • PHP, MySQL e Transaes

  • No contexto de banco de dados, uma transao basicamente uma sequncia de operaes que devem ser executadas na totalidade: no se permite a execuo parcial de tais operaes (executa-se todas elas ou nenhuma).

    Uma transao deve ter um incio e um fim;

    Assim, se ocorrer uma falha no meio de uma transao, deve haver um mecanismo para desfazer as operaes que j tenham sido executadas do incio at o ponto da falha;

    A operao commit normalmente utilizada no final da transao para efetivar todas as operaes efetuadas;

    A operao rollback desfaz as operaes da transao j efetuadas, voltando o banco de dados para o estado anterior ao incio da transao.

    Prof. Dr. Daniel A. Furtado Programao para Internet 25

    Transaes no MySQL - Introduo

  • Por exemplo, o conceito de transao poderia ser utilizado para inserir dados correlacionados no banco de dados;

    Em um cadastro de cliente, por exemplo, pode ser necessrio inserir os dados pessoais do cliente em uma tabela do banco de dados e o seu endereo, em outra tabela. Neste caso, utilizando o conceito de transao, podemos garantir que o cadastro seja sempre realizado na totalidade (ou a insero realizada nas duas tabelas, ou em nenhuma).

    Prof. Dr. Daniel A. Furtado Programao para Internet 26

    Transaes no MySQL - Introduo

  • CREATE TABLE Cliente

    (

    codigo int PRIMARY KEY auto_increment,

    nome varchar(50)

    );

    CREATE TABLE Endereco

    (

    rua varchar(30),

    numero int,

    codCliente int,

    FOREIGN KEY (codCliente) REFERENCES Cliente(codigo)

    );

    begin; /* inicio da transao */

    INSER

Recommended

View more >