curso de gestão da informação prof. dr. daniel a. furtado módulo 5 – web dinâmica com php e...

Post on 07-Apr-2016

213 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Programação para InternetCurso de Gestão da Informação

Prof. Dr. Daniel A. FurtadoMódulo 5 – Web Dinâmica com PHP e MySQL

Universidade Federal de UberlândiaFaculdade de Computação

Programação para Internet - Prof. Dr. Daniel A. Furtado 2

PHP é uma linguagem de script utilizada no desenvolvimento de páginas Web interativas e dinâmicas;

Scripts em PHP são executados no lado do servidor, diferentemente daqueles em JavaScript, que rodam no lado do cliente (navegador);

Amplamente utilizada e gratuita;

PHP é um acrônimo recursivo para PHP: Hypertext Preprocessor

Linguagem PHP – Introdução

Programação para Internet - Prof. Dr. Daniel A. Furtado 3

Arquivo PHP (.php) Um arquivo PHP pode conter elementos HTML, texto, CSS, e o

código PHP; O código PHP é executado no servidor, e o resultado é enviado

para o navegador como um arquivo HTML;

O que pode ser feito com PHP Gerar conteúdo de página dinamicamente; Manipular arquivos no servidor; Coletar e manipular dados de formulários; Enviar e receber cookies; Adicionar, atualizar ou remover dados em um banco de dados; Criptografar dados; Controle de acesso;

Linguagem PHP – Introdução

Programação para Internet - Prof. Dr. Daniel A. Furtado 4

Para utilizar PHP, é preciso: Utilizar um servidor de hospedagem web (web host)

com suporte a PHP; ou Instalar um servidor web no próprio PC e instalar e

configurar o PHP;

Linguagem PHP – Introdução

Programação para Internet - Prof. Dr. Daniel A. Furtado 5

Um script PHP começa com <?php e terminar com ?>

Linguagem PHP – Sintaxe

<?php

// Código PHP…

?>

Programação para Internet - Prof. Dr. Daniel A. Furtado 6

Um arquivo PHP normalmente contém tags HTML e código PHP;

A função echo retorna um texto formatado para a página;

Linguagem PHP – Hello Word

1. <!DOCTYPE html>2. <html>3. <body>

4. <h1>Primeira página PHP</h1>

5. <?php6. echo "Hello World!";7. ?>

8. </body>9. </html>10.</html>

Programação para Internet - Prof. Dr. Daniel A. Furtado 7

Comentários em PHP podem ser inseridos de maneira semelhante a outras linguagens de programação

Comentários em PHP

1. <!DOCTYPE html>2. <html>3. <body>4. <h1>Primeira página PHP</h1>5. <?php

6. // comentário de linha

/* comentário de

bloco */

7. ?>

8. </body>9. </html>10. </html>

Programação para Internet - Prof. Dr. Daniel A. Furtado 8

PHP não é sensível à caixa (case-sensitive) com respeito às palavras reservadas, nomes de classes e funções;

Entretanto, PHP é sensível à caixa com respeito aos nomes de variáveis;

Sensibilidade à maiúsculas e minúsculas

Programação para Internet - Prof. Dr. Daniel A. Furtado 9

Em PHP, uma variável começa com o símbolo $, seguido pelo nome propriamente dito;

Não há um comando para declarar uma variável; ela é declarada no momento de sua primeira atribuição;

Declaração de Variáveis

<?php

$x = 10;$y = 2.5;$msg = "um texto qualquer";

?>

Programação para Internet - Prof. Dr. Daniel A. Furtado 10

O escopo de uma variável é a parte do script onde a variável pode ser acessada;

Em PHP, uma variável pode ser local ou global; Uma variável declarada fora de uma função tem escopo global e

pode ser acessada somente fora das funções (exceto se for utilizada a palavra reservada global para realizar o acesso dentro da função);

Uma variável declarada dentro de uma função tem escopo local e pode ser acessada somente dentro da função;

Escopo de Variáveis

Programação para Internet - Prof. Dr. Daniel A. Furtado 11

Escopo de Variáveis - Exemplo

1. <?php2. $x = 5; // escopo global

3. function Teste() {4. // acessar x dentro desta função resultará em um erro5. echo "<p>Variável x dentro da função: $x</p>";6.7. // entretanto, ela pode ser acessada desta forma8. global $x;9. echo "<p>Variável x dentro da função (com global): $x</p>";10. }

11. Teste();

12. echo "<p>Variavel x fora da função: $x</p>";13. ?>

Programação para Internet - Prof. Dr. Daniel A. Furtado 12

PHP suporta os seguintes tipos de dados:

String Integer Float Boolean Array Object NULL Resource

Tipos de Dados

Programação para Internet - Prof. Dr. Daniel A. Furtado 13

Tipos de Dados

1. <?php

2. $x = 5; // variavel do tipo integer3. $y = -6; // variavel do tipo integer4. $z = 3.14; // variavel do tipo float5. $str = "bla bla bla"; // variavel do tipo string6. $cond = true; // variável booleana

7. $estados = array("MG","SP","RJ"); // array de strings8. echo $estados[0]. "<br>"; // mostra o 1o elemento9. echo $estados[1]. "<br>"; // mostra o 2o elemento

10. ?>

Programação para Internet - Prof. Dr. Daniel A. Furtado 14

Operadores de Atribuição

Operador Significado

= Atribuição

+= Atribuição com soma

-= Atribuição com subtração

*= Atribuição com multiplicação

/= Atribuição com divisão

%= Atribuição com módulo

Programação para Internet - Prof. Dr. Daniel A. Furtado 15

Operadores Aritméticos

Operador Significado

+ Adição

- Subtração

* Multiplicação

/ Divisão

% Resto da divisão inteira (módulo)

++ Incremento

-- Decremento

** Exponenciação

Programação para Internet - Prof. Dr. Daniel A. Furtado 16

Operadores Relacionais e Lógicos

Operador Significado

== Comparação por igualdade

=== Verifica se valores são idênticos (igual e de mesmo tipo)

!= ou <> Diferente

> Maior que

>= Maior ou igual a

< Menor que

<= Menor ou igual a

&& ou and “E” lógico

|| ou or “Ou” lógico

! Negação lógica

Programação para Internet - Prof. Dr. Daniel A. Furtado 17

Declaração if simples

Declaração if-else

Estrutura Condicional if-else

if (expressão) {// operações a serem executadas// caso 'expressao' seja verdadeira

}

if (expressão) {// operações a serem executadas caso 'expressao' seja verdadeira

}else {

// operações a serem executadas caso 'expressao' seja falsa}

Programação para Internet - Prof. Dr. Daniel A. Furtado 18

Declarações if-else aninhadas

Estrutura Condicional if-else

if (expressao1) { // ops. a serem executadas caso 'expressao1' seja verdadeira}else if (expressao2) { // ops. a serem executadas caso 'expressao2' seja verdadeira}else if (expressao3) { // ops. a serem executadas caso 'expressao3' seja verdadeira}else { // ops. a serem executadas caso nenhuma expressão seja verdadeira}

Programação para Internet - Prof. Dr. Daniel A. Furtado 19

PHP também disponibiliza a declaração elseif

Estrutura Condicional if-elseif

if (expressao1) { // ops. a serem executadas caso 'expressao1' seja verdadeira}elseif (expressao2) { // ops. a serem executadas caso 'expressao2' seja verdadeira}elseif (expressao3) { // ops. a serem executadas caso 'expressao3' seja verdadeira}else { // ops. a serem executadas caso nenhuma expressão seja verdadeira}

Programação para Internet - Prof. Dr. Daniel A. Furtado 20

Permite comparar uma expressão com diversas condições possíveis:

Estrutura Condicional switch-case

switch (expressao) {case condicao1:

// bloco de operaçõesbreak;

case condicao1:// bloco de operaçõesbreak;

...

case condicaon:// bloco de operaçõesbreak;

default:// bloco de operações

}

Programação para Internet - Prof. Dr. Daniel A. Furtado 21

Exemplo:

Estrutura Condicional switch-case

$corFav = "azul";

switch ($corFav) {case "vermelha":

echo "sua cor favorita eh vermelha";break;

case "azul":echo "sua cor favorita eh azul";break;

case "amarela":echo "sua cor favorita eh amarela";break;

}

Repete um bloco de declarações enquanto uma expressão for verdadeira;

“operação”

Estrutura de Repetição while

while (expressao) {// operações a serem executadas// enquanto 'expressao' for// verdadeira

}

Semelhante à estrutura while, porém a condição é verificada após a execução do bloco de operações;

“operação”

Estrutura de Repetição do-while

do {

// Operações a serem executadas// enquanto 'expressao' for// verdadeira;// Este bloco de operações é sempre// executado pelo menos uma vez

} while (expressao)

A estrutura for compreende três partes principais: initialization: declaração executada uma única vez, antes do laço ter início;

test condition: condição que é verificada antes de cada execução do bloco de operações; se for verdadeira, o bloco é executado; se for falsa, o laço encerra.

iteration statement: executada após cada execução do bloco de operações.

Exemplo:

Estrutura de Repetição forfor (initialization; test condition; iteration statement) {

// operações a serem executadas caso // 'test condition' seja verdadeira

}

$soma = 0;for ($i=0; $i<10; $i++) { $soma += $i;}echo "A soma dos números de 0 a 10 é $soma ";

Utilizada somente com arrays

Estrutura de Repetição foreach

1. <?php

2. $colors = array("red", "green", "blue", "yellow");

3. foreach ($colors as $value) {4. echo "$value <br>";5. }

6. ?>

Programação para Internet - Prof. Dr. Daniel A. Furtado 26

Sintaxe:

Exemplo:

Definindo Funções

function nomeFuncao(parâmetros) {

// operações da função

}

...function max($a, $b) { if ($a > $b) return $a; else return $b;}...echo “O maior numero entre 5 e 8 eh: “ . max(5,8);

Exemplo 1: recebendo dados de um formulário HTML

1. <html>2. <body>3. <form action="processaForm.php" method="post">4. Nome: <input type="text" name="nome"><br>5. E-mail: <input type="text" name="email"><br>6. <input type="submit">7. </form>8. </body>9. </html>

Programação para Internet - Prof. Dr. Daniel A. Furtado27

1. <html>2. <body>3. <?php4. $nome = $_POST["nome"]; // o array $_POST armazena os val. dos

campos5. $email = $_POST["email"]; // do formulário enviado pelo método

'post'

6. echo "Bem vindo, $nome! <br>";7. echo "Seu e-mail eh: $email! <br>";8. ?>9. </body>10. </html>

Formulário HTML

Arquivo processaForm.php

Programação para Internet - Prof. Dr. Daniel A. Furtado 28

O acesso a bancos de dados utilizando o PHP geralmente envolve três etapas:

1. Conexão com o servidor de banco de dados utilizando um nome de

usuário e senha;

2. Execução das operações de dados necessárias, como inserção,

consultas e atualizações no banco de dados;

3. Encerramento da conexão.

PHP e Bancos de Dados

Programação para Internet - Prof. Dr. Daniel A. Furtado 29

Para testar o script PHP do exemplo a seguir, crie uma tabela no banco de dados utilizando o seguinte código SQL:

PHP e Bancos de Dados

1. CREATE TABLE Aluno2. (3. matricula varchar(50),4. nome varchar(50)5. )

Exemplo 2: Conectado com o MySQL e Inserindo Dados (parte 1)

1. <DOCTYPE html><html><head></head><body>2. <?php3. // Para maior conveniencia, resgata os valores dos campos do 4. // formulario e armazena em variaveis5. $nome = $_POST["nome"];6. $matricula = $_POST["matricula"];

7. // Dados para conexao com o MySQL8. $servername = "fdb7.awardspace.net"; // endereço do servidor MySQL9. $username = "1875689_daniel"; // usuario do MySQL10. $password = "FACOM39802"; // senha do usuario11. $dbname = "1875689_daniel"; // nome do banco de dados

12. // Cria uma conexao com o MySQL e seleciona o 13. // banco de dados de nome 1875689_daniel14. $conn = new mysqli($servername, $username, $password, $dbname);

15. // continua no proximo slide... Programação para Internet - Prof. Dr. Daniel A. Furtado30

1. <html>2. <body>3. <form action="processaForm.php" method="post">4. Nome: <input type="text" name="nome"><br>5. E-mail: <input type="text" name="email"><br>6. <input type="submit">7. </form>8. </body>9. </html>

Arquivo HTML

Arquivo PHP

1. // Se um erro ocorreu durante a conexao, encerra o script2. // e apresenta a mensagem de erro3. if ($conn->connect_error) {4. die("Falha na conexão com o MySQL: " . $conn->connect_error);5. } 6. echo "Conectado ao MySQL";

7. // Comando SQL para insercao dos dados do formulario na tabela Aluno

8. $sql = "INSERT INTO Aluno (matricula, nome)9. VALUES ('$matricula', '$nome')";

10. // Executa o comando SQL de insercao e verifica11. // se houve sucesso na operacao12. if ($conn->query($sql)) 13. echo "Dados inseridos com sucesso!";14. else 15. echo "Erro na execucao de: " . $sql . "<br>" . $conn->error;

16. // Encerra a conexao com o MySQL17. $conn->close();18. ?>19. </body></html>

Programação para Internet - Prof. Dr. Daniel A. Furtado31

Exemplo 2: Conectado com o MySQL e Inserindo Dados (parte 2)

1. <DOCTYPE html><html><head></head><body>2. <?php3. ...Conexao com o MySQL, como no exemplo anterior

4. // Consulta SQL a tabela Alunos5. $sql = "SELECT * FROM Aluno";6. $resultado = $conn->query($sql);7. if (!$resultado)8. die("Ocorreu um erro ao executar a consulta: " . $conn-

>error);9.10. if ($resultado->num_rows > 0)11. {12. echo "<h1>Conteudo da tabela Aluno:</h1>";13. echo "<table border=1>\n";14. echo "<thead><th>Matricula</th><th>Nome</th></thead>\n";15.16. // Navega pelo resultado da consulta, linha a linha.17. // O metodo fetch_assoc constroi um array associativo18. // para a linha corrente do resultado.19. while ($row = $resultado->fetch_assoc()) 20. { 21. echo "<tr>";22. echo "<td>".$row["matricula"]."</td>";23. echo "<td>".$row["nome"]."</td></tr>";24. } 25. echo "</table>"; 26. }27. else28. echo "Nenhum dado na tabela Aluno";

29. ...Encerrar conexao e fechar HTML Programação para Internet - Prof. Dr. Daniel A. Furtado32

Exemplo 3: Apresentando os dados da tabela Aluno em uma tabela HTML

É importante destacar que o exemplo anterior não trata qualquer questão relacionada à segurança dos dados e da página;

O objetivo do exemplo é mostrar uma conexão simples e direta com o MySQL;

Exemplo de Conexão com o MySQL

Exemplo 4: Formulário com elementos Radio, Checkbox, Date

Código SQL

Para tornar este exemplo mais simples, os interesses do cliente serão concatenados e armazenados em um único campo (o que não seria uma boa prática em uma situação real);

Exemplo 4 - Criação da tabela para armazenar os dados dos clientes

1. CREATE TABLE Cliente2. (3. cpf char(12) primary key,4. nome varchar(50) NOT NULL,5. sexo char NOT NULL,6. dataNasc date,7. nroFilhos int,8. telefone char(10),9. interesses varchar(100)10. );11.

Exemplo 4 - Criação da tabela para armazenar os dados dos clientes

1. <td>2. Interesses: <br>3. <input type="checkbox" name="interesses[]" value="Esportes">Esportes<br>4. <input type="checkbox" name="interesses[]" value="Cinema">Cinema<br>5. <input type="checkbox" name="interesses[]"

value="Automobilismo">Automob.<br>6. <input type="checkbox" name="interesses[]" value="Viagens">Viagens7. </td>

No formulário HTML, os campos do tipo checkbox devem receber um nome seguido de colchetes (no PHP, será criado um vetor para armazenar os itens selecionados)

1. ... Cabecalho HTML

2. include "dadosConexao.php";

3. $nome = $_POST["nome"];4. $cpf = $_POST["cpf"];5. $dataNascimento = $_POST["dataNascimento"];6. $sexo = $_POST["sexo"];7. $fone_ddd = $_POST["fone-ddd"];8. $fone_nro = $_POST["fone-numero"];9. $telefone = $fone_ddd . $fone_nro;10. $num_filhos = $_POST["num-filhos"];11.12. $interesses = "";13. if (isset($_POST["interesses"]))14. {15. foreach ($_POST["interesses"] as $value)16. $interesses = $interesses . $value . ";";17.18. $interesses = rtrim($interesses, ";");19. }

20. // mostra a data de nascimento. Observar formato!21. echo "Data de nascimento: $dataNascimento";22.23. $db = new mysqli($servername, $username, $password, $dbname);24. if ($db->connect_error)25. die("Connection failed: " . $db->connect_error);

26. $sql = "INSERT INTO Cliente (cpf, nome, sexo, dataNasc, nroFilhos, telefone, interesses) VALUES ('$cpf', '$nome', '$sexo', '$dataNascimento', $num_filhos, '$telefone', '$interesses')";

Programação para Internet - Prof. Dr. Daniel A. Furtado37

Exemplo 4: Recebendo dados de formulário e inserindo na tabela cliente

1. $sql = "SELECT cpf, nome FROM Cliente";2. $resultado = $conn->query($sql);3. if (!$resultado)4. die("Ocorreu um erro ao executar a consulta: " . $conn->error);5.6. if ($resultado->num_rows > 0)7. {8. echo "<h1>Clientes Cadastrados</h1>\n";9. echo "<table border=1>\n";10. echo "<thead><th>CPF</th><th>Nome</th><th></th></thead>\n";11. while ($row = $resultado->fetch_assoc()) 12. {13. $cpf = $row["cpf"];14. $nome = $row["nome"];15. echo "<tr>";16. echo "<td>$cpf</td><td>$nome</td>";17. echo "<td><a

href=modificaCliente.php?cpf=$cpf>Modificar</a></td>"; echo "<tr>"; } }

Exemplo 5: Passando argumento pelo método GET

1. <?php2. $cpf = $_GET['cpf'];3.4. echo "cpf recebido: " . $cpf;5. $sql = "SELECT nome , nroFilhoes6. FROM Cliente7. WHERE cpf = '$cpf'";8.9. $resultado = $conn->query($sql);10. if (!$resultado)11. die("Ocorreu um erro ao executar a consulta: " . $conn->error);12.13. $row = $resultado->fetch_assoc();14. $nome = $row["nome"];15. $nroFilhos = $row["nroFilhos"];16. ?>

17. <!DOCTYPE html>18. <html>19. <head>20. <meta charset="UTF-8">21. <title>Cadastro de Cliente</title>22. <link rel="stylesheet" href="style.css" type="text/css">23. </head>24. <body>25. ...26. <td>27. Nome: <br>28. <input type="text" name="nome" value="<?php echo $nome; ?>">29. </td>

Arquivo modificaCliente.php

Programação para Internet - Prof. Dr. Daniel A. Furtado 40

www.w3schools.com

Referências

top related