curso de gestão da informação prof. dr. daniel a. furtado módulo 5 – web dinâmica com php e...
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