PHP básico para iniciantes

150
Iniciando PHP Professor: Eduardo Mendes

description

Conceitos e exemplos básicos de PHP envolvendo variáveis, funções, arrays, arquivos, manipulação de Strings

Transcript of PHP básico para iniciantes

Page 1: PHP básico para iniciantes

Iniciando PHP

Professor: Eduardo Mendes

Page 2: PHP básico para iniciantes

Agenda

•  Visão Geral •  Arquitetura Cliente-Servidor •  Programas Básicos •  Sintaxe do PHP •  Formulários •  Manipulação de Strings •  Controle de Fluxo

Page 3: PHP básico para iniciantes

Visão Geral

•  Páginas web simples documentos

Page 4: PHP básico para iniciantes

Visão Geral

•  Página web com PHP –  aplicação interativa

Page 5: PHP básico para iniciantes

Testando Configuração

•  Iniciar o EasyPHP –  Iniciar Programas EasyPHP

Page 6: PHP básico para iniciantes

Testando Configuração

•  Executar algum browser (navegador) –  http://localhost

Page 7: PHP básico para iniciantes

Testando Configuração

•  Os arquivos serão salvos na pasta www do EasyPHP –  C:\Arquivos de programas\EasyPHP1-8\www

Page 8: PHP básico para iniciantes

Material Exemplo

•  http://www.fa7.edu.br/webiniciantes/modulo2/iniciandoPhp.zip

Page 9: PHP básico para iniciantes

Escrevendo programas php

•  Primeiro Exemplo <html>

<body> <? print "Hello, world!"; ?>

</body> </html>   Salve-o na pasta www do EasyPHP

como exemplo1.php   Executando a página

http://localhost/exemplo1.php

Page 10: PHP básico para iniciantes
Page 11: PHP básico para iniciantes

Escrevendo programas php

•  Segundo exemplo <html> <body> A data atual é <?php echo gmdate(“d/m/Y”); ?> </body> </html>   Salve-o na pasta www EasyPHP como

exemplo2.php   Executando a página

http://localhost/exemplo2.php

Page 12: PHP básico para iniciantes
Page 13: PHP básico para iniciantes

Escrevendo programas php

•  Terceiro exemplo <html> <body> O nome da faculdade é <?php $nomeDaFaculdade = “FA7”; echo $nomeDaFaculdade; ?> </body> </html>

  Salve-o na pasta www EasyPHP como exemplo3.php

  Executando a página http://localhost/exemplo3.php

Page 14: PHP básico para iniciantes
Page 15: PHP básico para iniciantes

PHP & Arquivos

•  Crie um arquivo txt na pasta www do EasyPHP com o nome “dicas.txt”

Page 16: PHP básico para iniciantes

Dica do Dia <html> <head>

<title>Dica do Dia</title> </head> <body> <h1>Dica do Dia:</h1>

<br/> <p class=“destaque”>

<? readfile("dicas.txt");

?> </p>

</body> </html>

  Salve-o na pasta www EasyPHP como dicadodia.php

  Executando a página http://localhost/dicadodia.php

Page 17: PHP básico para iniciantes
Page 18: PHP básico para iniciantes

Formulários

Page 19: PHP básico para iniciantes

Formulários

Page 20: PHP básico para iniciantes

qualSeuNome.html

<h1>Qual seu nome?</h1> <form method = “post” action = "oiUsuario.php"> Por favor digite seu nome: <input type = “text” name = "nome“/> <br/> <br/> <input type = “submit” value = “Enviar”/> </form>

Page 21: PHP básico para iniciantes

oiUsuario.php

<h1>Oi, usuário</h1> <p class=“destaque”> <? print "Olá, “ . $_POST[‘nome’]; ?> </p>

Page 22: PHP básico para iniciantes

musica.html

Page 23: PHP básico para iniciantes

musica.php

Page 24: PHP básico para iniciantes

musica.html <h3>Por favor, preencha os campos abaixo</h3> <form method = "post" action = "musica.php"> <p>Dia da Semana</p> <p> <input type = "text" name = "diaDaSemana"/> </p> <p>Ação</p> <p> <input type = "text" name = "acao"/> </p> <p>Quantidade de Horas</p> <p> <input type = "text" name = "horas"/> </p> <p>Tempo</p> <p> <select name = "tempo">

<option>Da próxima vez</option> <option>Hoje</option> <option>Nunca</option> </select>

</p> <p><input type = "submit" value = "Faça a Música"></p> </form>

Page 25: PHP básico para iniciantes

musica.php <h1>Semana que vem</h1> <p class="texto"> A partir de <span class="var"> <?php print $_POST['diaDaSemana']; ?> </span> eu vou discutir <br />

<span class="var"> <?php print $_POST['tempo']; ?></span> eu vou questionar <br /> Na segunda eu começo a agir <br />

Só mais <span class="var” <?php print $_POST['horas']; ?></span> horas pra eu decidir. </p>’

Page 26: PHP básico para iniciantes

oiUsuario2.php

Page 27: PHP básico para iniciantes

oiUsuario2.php

Page 28: PHP básico para iniciantes

oiUsuario2.php <h1>Oi Usuário</h1> <?php if (empty($_POST[‘nomeDoUsuario’])){ ?>

<form method=“post”> Por favor, digite o seu nome: <input type = ”text” name =”nomeDoUsuario”><br /> <input type =”submit” value =”Enviar”> </form>

<?php } else {

print "<h3>Olá, “ . $_POST[‘nomeDoUsuario’] . “!</h3>"; } ?>

Page 29: PHP básico para iniciantes

Trabalhando com Variáveis numéricas

Page 30: PHP básico para iniciantes

numeros.php <html> <body> <? $x = 3; $y = 5; print "$x + $y = "; print $x + $y; print "<br><br>"; print "$x - $y = "; print $x - $y; print "<br><br>";

print "$x * $y = "; print $x * $y; print "<br><br>"; print "$x / $y = "; print $x / $y; print "<br><br>"; ?> </body> </html>

Page 31: PHP básico para iniciantes

Criando um número randômico

Page 32: PHP básico para iniciantes

dado.php

<html> <body> <h1>Jogar Dado!</h1> <h3>Demonstração de um dado</h3> <? $valor = rand(1,6); print "O valor que você obteve é $valor"; print "<br/><br/>"; print "<img src =\”dado$valor.gif\” width=100 height=100>"; ?> <br/><br/> Dê um refresh nesta página para jogar de novo. </body> </html>

Page 33: PHP básico para iniciantes

Condicionais Jogo do Dado

Page 34: PHP básico para iniciantes

jogoDado.php <html> <body> <? $valor = rand(1,6); print "O valor que você obteve foi $valor"; if ($valor == 1 || $valor==4){ print "<h1>Você é o ganhador!!!!!</h1>"; } // end if print "<br/><br/>"; print "<img src =dado$valor.gif width=100 height=100>"; ?> <br/><br/> Dê um refresh nesta página para jogar de novo. </body> </html>

Page 35: PHP básico para iniciantes

Condicionais Operadores de comparação

Operador Descrição == Igual a < Menor do que > Maior do que <= Menor do que ou

igual a >= Maior do que ou

igual a != Diferente de

Page 36: PHP básico para iniciantes

Condicionais if e else

Page 37: PHP básico para iniciantes

jogoDado2.php <html> <body> <h1>Ganhou ou nao?</h1> <? $valor = rand(1,6); print "O valor que voce obteve foi $valor"; print "<br>"; if ($valor == 1){ print "<h1>Voce ganhou!!!!!</h1>"; } else { print "Tente novamente..."; } // end if print "<br>"; print "<img src = dado$valor.gif width=100 height=100>"; ?> <br> Dê um refresh nesta página para jogar de novo. </body> </html>

Page 38: PHP básico para iniciantes

Múltiplas condições

$valor = rand(1,6); print “Você obteve o valor $valor"; print "<br>"; if ($valor == 1){ $binValue = "001"; } else if ($valor == 2) { $binValue = "010"; } else if ($valor == 3) { $binValue = "011"; } else if ($valor == 4) { $binValue = "100"; } else if ($valor == 5) { $binValue = "101"; } else if ($valor == 6) { $binValue = "110"; } else { print “Eu não sei qual o valor..."; } // end if

Page 39: PHP básico para iniciantes

Múltiplas condições switch

switch ($valor){ case 1: $romValue = "I"; break; case 2: $romValue = "II"; break; case 3: $romValue = "III"; break; case 4: $romValue = "IV"; break; case 5: $romValue = "V"; break; case 6: $romValue = "VI"; break; default: print “Este dado não existe!"; } // end switch

Page 40: PHP básico para iniciantes

Funções - Encapsulando parte do programa

Page 41: PHP básico para iniciantes

<? function soma() { print "A soma de 2 + 2 eh " . (2 + 2) . "<br>"; } function subtrai() { print "A subtracao de 2 por 2 eh " . (2 - 2) . "<br>"; } function multiplica() { print "A multiplicacao de 2 por 2 eh " . (2 * 2) . "<br>"; } function divide() { print "A divisao de 2 por 2 eh " . (2 / 2) . "<br>"; } ?> <html> <body> <? soma(); subtrai(); multiplica(); divide(); ?> </body> </html>

calculos.php

Page 42: PHP básico para iniciantes

Funções com parâmetros

Page 43: PHP básico para iniciantes

<? function soma($x) { print "A soma de $x + $x eh " . ($x + $x) . "<br>"; } function subtrai($x) { print "A subtracao de $x por $x eh " . ($x - $x) . "<br>"; } function multiplica($x) { print "A multiplicacao de $x por $x eh " . ($x * $x) . "<br>"; } function divide($x) { print "A divisao de $x por $x eh " . ($x / $x) . "<br>"; } ?> <html> <body> <? soma(4); subtrai(7); multiplica(2); divide(1); ?> </body> </html>

calculos2.php

Page 44: PHP básico para iniciantes

Funções Retornando um valor

Page 45: PHP básico para iniciantes

calculosRetorno.php <? function soma($x) { $y = ($x + $x); return $y;

} ?> <html> <body> <h1>Funcoes de Calculos</h1> <? print "A soma de 2 + 2 eh " . soma(2) . "<br>"; ?> </body> </html>

Page 46: PHP básico para iniciantes

DESAFIOS!!!

•  Elaborar uma função que passado um valor para a função entre 1 e 6, a função exiba na tela o dado correspondente ao valor

•  Melhorar a função, podendo ser passado qualquer valor, mas se o número for menor que 1 ou maior que 6, deve apresentar a frase “Este dado não existe”;

Page 47: PHP básico para iniciantes

Solução

function desenhaDado($valor) { if ($valor < 1 || $valor > 6) { print “Este dado não existe”; } else { print “<img src=\“dado$valor.gif\” width=\”100\” heigth=

\”100\”>”; } }

Page 48: PHP básico para iniciantes

PHP & Estruturas de Controle LOOPS

Page 49: PHP básico para iniciantes

As 3 etapas de um loop FOR •  Inicialização da variável de controle •  Condição para finalizar o loop •  Alteração da variável de controle

for ( ; ; ){ print "$i <br>"; }

$i = 0 $i <= 3 $i = $i+1

Page 50: PHP básico para iniciantes

Contando com o loop FOR

Page 51: PHP básico para iniciantes

forSimples.php <html> <head> <title>Um loop for simples</title> </head> <body> <h1>Um loop for simples</h1> <? for ($i = 0; $i <= 10; $i++){ print "$i <br>"; } ?> </body> </html>

Page 52: PHP básico para iniciantes

Contando de 5 em 5

Page 53: PHP básico para iniciantes

O que há de novo?

for ( $i = 5; $i <= 50; $i=$i + 5){ print "$i <br>"; }

$i = $i + 5

Page 54: PHP básico para iniciantes

forContando5.php

<html> <head> <title>Contando de Trás pra Frente </title> </head> <body> <h1> Contando de Trás pra Frente</h1> <? for ($i = 10; $i > 0; $i--){ print "$i <br>"; } ?> </body> </html>

Page 55: PHP básico para iniciantes

Usando um loop WHILE

Page 56: PHP básico para iniciantes

whileSimples.php

<html> <body> <h1> Um Loop While Simples</h1> <? $i = 1; while ($i <= 10){ print "$i <br>"; $i = $i + 1; } ?> </body> </html>

Page 57: PHP básico para iniciantes

Relembrando Tabelas •  <table>

–  Define uma tabela •  <tr>

–  Define uma linha •  <td>

–  Define uma coluna •  Atenção:

–  Uma linha tem ao menos uma coluna!

Page 58: PHP básico para iniciantes

Desafio!

•  Construir uma função que imprima na tela uma linha de uma tabela <table> <? function linhaTabela() ;

?> </table>

Page 59: PHP básico para iniciantes

Solução!

<? function linhaTabela($nome) {

print “<tr><td>$nome</td></tr>”; } ?> <table border=“1”>

<? linhaTabela(“Eduardo”);

?> </table>

Page 60: PHP básico para iniciantes

Desafio 2!

•  Construir uma função que, dado o número de linhas como argumento da função, construa uma tabela como o número de linhas pedido

•  Declaração function tabela($numeroDeLinhas) { } •  Exemplo de uso function tabela(5);

Page 61: PHP básico para iniciantes

Arrays

•  Variáveis são como copos –  Contém, guardam alguma coisa –  Valores

•  Arrays são como bandejas de copos

Page 62: PHP básico para iniciantes

Gerando o Array $camelPop[1] = "Somalia"; $camelPop[2] = "Sudan"; $camelPop[3] = "Mauritania"; $camelPop[4] = "Pakistan"; $camelPop[5] = "India";

Page 63: PHP básico para iniciantes

Examinando o conteúdo do Array com um loop for ($i = 1; $i <= 5; $i++) { print "$i: $camelPop[$i]<br>"; }

Page 64: PHP básico para iniciantes

As funções array() e count() •  Carregando um Array com valores $binary = array("000", "001", "010", "011");

•  Detectando o tamanho de um array for ($i = 0; $i < count($binary); $i++){ print "$i: $binary[$i]<br>\n"; }

Page 65: PHP básico para iniciantes

arrayBasico.php

<html> <body> <h1>Array Básico</h1> <? $camelPop[1] = "Somalia"; $camelPop[2] = "Sudan"; $camelPop[3] = "Mauritania"; $camelPop[4] = "Pakistan"; $camelPop[5] = "India";

Page 66: PHP básico para iniciantes

arrayBasico.php

print "<h3>Maiores populações de camelos no mundo</h3>"; for ($i = 1; $i <= 5; $i++) { print "$i: $camelPop[$i]<br>"; } $binary = array("000", "001", "010", "011"); print "<h3>Números binários</h3>"; for ($i = 0; $i < count($binary); $i++){ print "$i: $binary[$i]<br>\n"; } ?> </body> </html>

Page 67: PHP básico para iniciantes

Loop com forEach

<? $nomes = array("Eduardo", "Luiz", "Guilherme", "Victor");

?> <html> <body> <? foreach ($nomes as $nome) { echo $nome."<br/>"; } ?> </body> </html>

Page 68: PHP básico para iniciantes

Desafio 3

•  Dado um array de nomes –  Criar uma função que desenhe a tabela – O número de linhas igual ao tamanho do array –  Cada linha deve conter um dos nomes –  As linhas devem ser desenhadas por uma função

que passado o valor desenhe uma linha da tabela –  Array

$nomes = array("Eduardo", "Luiz", "Guilherme", "Victor");

Page 69: PHP básico para iniciantes

Campos ocultos

Page 70: PHP básico para iniciantes

persistencia.php <html> <body> <h1>Persistencia</h1> <form> <? if (!isset($contador) && !isset($oculto)) { $contador = 0; $oculto = 0; } $contador++; $oculto++;

Page 71: PHP básico para iniciantes

persistencia.php

print “ <input type=\”text\” name=\”contador\” value=\”$contador\”> <input type=\”hidden\” name=\”oculto\” value=\”$oculto\”> <h3>O valor oculto(hidden) $oculto</h3> <input type=\”submit\” value=\”Incremente os contadores\”> “; ?> </form> </body> </html>

Page 72: PHP básico para iniciantes

Funções de arquivos em Php

•  Funções que servem para manipular arquivos –  Criar –  Ler –  Alterar –  Sobrescrever conteúdo

•  O nome destas funções sempre iniciam com a letra “f” –  referente a file (arquivo em inglês)

Page 73: PHP básico para iniciantes

Funções de arquivos em Php

Page 74: PHP básico para iniciantes

Abrindo um arquivo

•  Abre arquivos do servidor web •  Cria um atalho (ponteiro) para o arquivo e

atribui a uma variável •  Parâmetros

– Nome do arquivo – Modificador de acesso

$p = fopen("casa.txt", "w");

Page 75: PHP básico para iniciantes

Modificadores de Acesso

Modificador Tipo Descrição “r” Somente leitura O programa pode ler o

arquivo “w” Escrever Escreve no arquivo,

sobrescreve se ele já existe

“a” Adicionar Escreve no fim do arquivo

“r+” “w+” Ler e escrever

Page 76: PHP básico para iniciantes

Escrevendo em um arquivo

•  Parâmetros –  Ponteiro para o arquivo –  Texto a ser escrito

fputs($p, $texto);

Page 77: PHP básico para iniciantes

Fechando um arquivo •  A função fclose() diz ao sistema que o seu

arquivo já foi escrito e pode ser fechado •  Parâmetros

–  Ponteiro para um arquivo

fclose($p);

•  IMPORTANTE: – O programa só salva realmente no arquivo depois de fclose()

Page 78: PHP básico para iniciantes

Tudo junto - Criando um arquivo

•  Vamos criar um programa em PHP que cria um arquivo de texto no diretório.

•  Depois vamos usar funções de arquivo para ler o arquivo recém-criado

Page 79: PHP básico para iniciantes

salvarPoema.php <html> <head><title>Salvar Poema</title></head> <body> <? $poema = “Casa do Tempo Perdido, Drummond Bati no portão do tempo perdido, ninguém atendeu. Bati segunda vez e mais outra e mais outra. Resposta nenhuma. “; $p = fopen("casa.txt", "w"); fputs($p, $poema); fclose($p); ?> Arquivo Criado com Sucesso!!! </body> </html>

Page 80: PHP básico para iniciantes

Carregando um Arquivo

Page 81: PHP básico para iniciantes

Verificando o fim do Arquivo •  Geralmente você não sabe o tamanho do arquivo •  fgets()

–  Pega linha por linha do arquivo $linha = fgets($p);

•  feof() –  Indica o fim do arquivo while (!feof($p))

Page 82: PHP básico para iniciantes

carregarPoema.php <html> <head> <title>Carregar Poema</title> </head> <body> <? $c = fopen("casa.txt", "r"); $linha = fgets($c); print "<h1>$linha</h1>\n"; while (!feof($c)){ $linha = fgets($c); print "$linha <br />\n"; } fclose($c); ?> </body> </html>

Page 83: PHP básico para iniciantes

carregarPoema.php NUMERANDO <html> <head> <title>Carregar Poema</title> </head> <body> <? $c = fopen("casa.txt", "r"); $linha = fgets($c); print "<h1>$linha</h1>\n"; $i = 1; while (!feof($c)){ $linha = fgets($c); print “$i. $linha <br />\n"; $i++; } fclose($c); ?> </body> </html>

Page 84: PHP básico para iniciantes

Trabalhando com diretórios

Page 85: PHP básico para iniciantes

A função openDir() •  Para usar diretórios do servidor web •  Cria um atalho (ponteiro) para o diretório •  Parâmetros

–  Caminho do diretório

$d = opendir($diretorio);

Page 86: PHP básico para iniciantes

A função chDir() •  Muda o diretório atual para o diretório

especificado como parâmetro •  Parâmetros

–  Caminho do diretório

chdir($diretorio);

Page 87: PHP básico para iniciantes

A função readDir() •  Recupera o nome do próximo arquivo dentro

do diretório •  Parâmetros

–  Ponteiro para diretório

$arquivoAtual = readDir($d);

Page 88: PHP básico para iniciantes

listandoDiretorio.php <html> <head><title>Listar Arquivos</title></head> <body> <h1>Listando Arquivos</h1> <? $diretorio =“."; $d = opendir($diretorio); chdir($diretorio); $atual = true; while ($atual!= false){ $atual = readDir($d); $arquivos[] = $atual; }

foreach ($arquivos as $nome){ print “<a href=\”$nome\”>$nome</a> <br />”; }

?> </body> </html>

Page 89: PHP básico para iniciantes

Selecionando Arquivos específicos

•  Seleciona arquivos de acordo com um critério –  Expressões regulares no estilo Perl –  Cria um outro array $imagens = preg_grep("/jpg$|gif$/", $arquivos);

Page 90: PHP básico para iniciantes

listandoDiretorio.php <html> <head><title>Album Simples</title></head> <body> <h1>Listando Arquivos</h1> <? $diretorio =“imagens"; $d = opendir($diretorio); chdir($diretorio); $arquivoAtual = true; while ($arquivoAtual != false){ $arquivoAtual = readDir($d); $arquivos[] = $arquivoAtual; } $arquivos = preg_grep("/jpg$|gif$/", $arquivos);

foreach ($arquivos as $atual){ print “<a href=\”$diretorio/$atual\”> <img src=\”$diretorio/$atual\” width=\”20\” height=\”20\”></a>

<br />”; }

?> </body> </html>

Page 91: PHP básico para iniciantes

Concatenando palavras

•  Operador de concatenação . $vogais = “A” . “E” . “I” . “O” . “U”; print “$vogais”;

$output .= “texto qualquer“;

$output = $output . “texto qualquer”;

Page 92: PHP básico para iniciantes

Álbum Simples

Page 93: PHP básico para iniciantes

Preparando as Imagens •  Google •  3 Imagens de cachorro •  Tipo imagem

–  jpg –  gif

Page 94: PHP básico para iniciantes

albumSimples.php

<html> <head> <title>Album Simples</title> </head> <body> <? $nomeDiretorio = "C:\Arquivos de programas\EasyPHP1-8\www\"; $dp = opendir($nomeDiretorio); chdir($nomeDiretorio); $arquivoAtual = true; while ($arquivoAtual !== false){ $arquivoAtual = readDir($dp); $arquivos[] = $arquivoAtual; }

Page 95: PHP básico para iniciantes

albumSimples.php

$imagens = preg_grep("/jpg$|gif$/", $arquivos); $output = ""; foreach ($imagens as $arquivoAtual){ $output .= “ <a href=$arquivoAtual> <img src="$arquivoAtual“ height=50 width=50> </a> “; } $fp = fopen(“imagens/albumSimples.html", "w"); fputs ($fp, $output); fclose($fp); print "<a href=imagens/albumSimples.html>Seu Album</a>\n"; ?>

Page 96: PHP básico para iniciantes
Page 97: PHP básico para iniciantes

borderMaker.html

<html> <head> <title>Escolha de Fonte</title> </head> <body> <center> <h1>Escolha de Fonte</h1> <h3>Demonstração de como ler os campos do um formulário HTML</h3>

Page 98: PHP básico para iniciantes

borderMaker.html

<form method = "post“ action = "borderMaker.php"> <h3>Texto a modificar</h3> <textarea name = “textoQualquer" rows = "10“ cols = "40">TEXTO QUALQUER </textarea>

Page 99: PHP básico para iniciantes

borderMaker.html

<table border =“2”> <tr> <td> <h3>Estilo da borda</h3> </td> <td colspan =“2”> <h3>Tamanho da borda</h3> </td> </tr>

Page 100: PHP básico para iniciantes

borderMaker.html <tr>

<td> <select name =“tipoBorda”> <option value = "ridge">ridge</option> <option value = "groove">groove</option> <option value = "double">double</option> <option value = "inset">inset</option> <option value = "outset">outset</option> </select> </td>

Page 101: PHP básico para iniciantes

borderMaker.html

<td> <select size =“5” name = “tamanhoBorda”> <option value = "1">1</option> <option value = "2">2</option> <option value = "3">3</option> <option value = "5">5</option> <option value = "10">10</option> </select>

</td>

Page 102: PHP básico para iniciantes

borderMaker.html <td> <input type = "radio“ name = “tipoMedida“ value = "px">pixels<br> <input type = "radio“

name = " tipoMedida“ value = "pt">points<br> <input type = "radio“ name = " tipoMedida“ value = "cm">centimeters<br> <input type = "radio“ name = " tipoMedida“ value = "in">inches<br>

</td> </tr>

</table>

Page 103: PHP básico para iniciantes

borderMaker.html

<input type = "submit“ value = "Mostre-me"> </form> </center>

</body> </html>

Page 104: PHP básico para iniciantes

borderMaker.php

<html> <head><title>Sua Borda</title></head> <body> <h1>Your Output</h1> <center> <? $estilo = <<<HERE "border-width:$tamanhoBorda$tipoMedida; border-style:$tipoBorda; border-color:green“ HERE;

Page 105: PHP básico para iniciantes

borderMaker.php

print "<div style = $estilo>"; print $textoQualquer; print "</div>"; ?> </center> </body>

</html>

Page 106: PHP básico para iniciantes

Alterando as informações recebidas

Page 107: PHP básico para iniciantes

A função file() •  file()

– Não usa ponteiros –  Coloca o conteúdo do arquivo em um array –  Cada linha ocupa um espaço do array – Não indicado para arquivos muito grandes

$poema = file($arquivo);

Page 108: PHP básico para iniciantes

O comando foreach() •  foreach()

– Laço (loop) para percorrer um array

foreach ($poema as $linha){ $linha = str_replace("r", "w", $linha); $linha = str_replace("s", "w", $linha); $output .= rtrim($linha) . "<br>\n";

}

Page 109: PHP básico para iniciantes

O comando str_replace() •  str_replace()

– Substitui certas partes da string por outra

foreach ($poema as $linhaAtual){

$linhaAtual =str_replace("r", "w", $linhaAtual); $linhaAtual = str_replace("s", "w", $linhaAtual); ... }

Casa do tempo perdido Casa do tempo pewdido Casa do tempo pewdido Cawa do tempo pewdido

Page 110: PHP básico para iniciantes

Cortando as sobras

•  rtrim() –  Retira espaços em branco do lado direito da

String –  rtrim() Right Trim

•  Variante –  ltrim() Left Trim

Page 111: PHP básico para iniciantes

bagucando.php

<html> <head><title>Bagunçando</title></head> <body> <? $arquivo = "casa.txt"; $poema = file($arquivo); $output = ""; foreach ($poema as $linha){ $linha = str_replace("r", "w", $linha); $linha = str_replace("s", "w", $linha); $output .= rtrim($linha) . "<br>\n"; } $output .= "Tudo modificado!<br>\n"; print $output; ?> </body> </html>

Page 112: PHP básico para iniciantes

Desafio

•  Criar uma função que receba uma data no formato dd-mm-yyyy e devolva a data no formato dd/mm/yyyy

function formataData($data) { $data = str_replace(“-”, “/”, $data); return $data; } formataData(“04-04-2004”);

Page 113: PHP básico para iniciantes

Formatando Textos

Page 114: PHP básico para iniciantes

Transfomando String em Array

•  split() –  Transforma uma String em um Array

•  list() – Não é uma função –  É uma construção de dados –  Recebe o conteúdo de um array e põe em várias

variáveis

list($nome, $email) = split("\t", $linha);

Page 115: PHP básico para iniciantes

lista.dat

Page 116: PHP básico para iniciantes

listaEmail.php

<html> <head><title>Lista de Emails</title></head> <body> <form> <? $dados = file("lista.dat"); foreach($dados as $linha){ $linha = rtrim($linha); print "<h3>$linha</h3>"; list($nome, $email) = split("\t", $linha); print "Nome: $nome";

Page 117: PHP básico para iniciantes

listaEmail.php $messagem = “ Para: $email Caro $nome: Obrigado por participar do nosso forum. Atenciosamente, FA7. “; print "<pre>$messagem</pre>"; } ?> </body> </html>

Page 118: PHP básico para iniciantes

QuizMachine

Page 119: PHP básico para iniciantes

estilo.css

.secao { border-style:solid; border-width:thin; border-color:#000066; width: 400px; background-color:#E5E5E5;

}

Page 120: PHP básico para iniciantes

QuizMachine

Page 121: PHP básico para iniciantes

Página baseada em funções <html> <head> <title>Quiz Machine</title> </head> <body> <h1>Quiz Machine</h1> <? recuperarArquivos(); exibirTeste(); exibirEditar(); exibirLog(); ?> </body> </html>

Page 122: PHP básico para iniciantes

Página baseada em funções <? include("funcoes.php");

?> <html> <head> <title>Quiz Machine</title>

</head> <body> <h1>Quiz Machine</h1>

<? //recuperarArquivos(); exibirTeste(); //exibirEditar(); //exibirLog(); ?> </body> </html>

Page 123: PHP básico para iniciantes

Exibindo um teste

Page 124: PHP básico para iniciantes

funcoes.php function exibirTeste(){ global $arquivos; print " <center> <div class=\"secao\">

<form action=\"jogarQuiz.php\" method=\"post\"> <h3>Jogue um quiz</h3> <p>Senha do quiz: <input type=\“password\" name=\"senha\"> </p> <p>Quiz: <select name=\"pegarArquivo\">";

Page 125: PHP básico para iniciantes

funcoes.php $html = preg_grep("/htm$/", $arquivos); foreach ($html as $temp){ $quiz=substr($temp, 0, strlen($temp) - 4); print "<option value=$quiz>$quiz</option>\n"; } print "</select></p>

<p><input type=\"submit\" value=\"ok\"></p> </div> </center>

</form> "; }

Page 126: PHP básico para iniciantes

Recuperando arquivos <? function recuperarArquivos(){ global $dirPtr, $arquivos; chdir("."); $dirPtr = openDir("."); $arquivoAtual = readDir($dirPtr); while ($arquivoAtual !== false){ $arquivos[] = $arquivoAtual; $arquivoAtual = readDir($dirPtr); } }

Page 127: PHP básico para iniciantes

Editando um quiz

Page 128: PHP básico para iniciantes

funcoes.php function exibirEditar(){ global $arquivos; $mestres = preg_grep("/mestre$/", $arquivos); print " <center> <div class=\"secao\"> <form action=\"editarQuiz.php\" method=\"post\">

<h3>Editar um quiz</h3> <p>Senha Administrativa:

<input type=\"password\" name=\"senha\"/> </p> <p>Quiz:

<select name=\"editarArquivo\"> <option value=\"novo\">Novo Quiz</option> ";

Page 129: PHP básico para iniciantes

funcoes.php foreach ($mestres as $original){ $nome = substr($original, 0, strlen($original) - 8); print "<option value=\"$original\">$nome</option>\n"; }

print " </select> <p><input type = \"submit\" value = \"ok\"></p> </form> </div> </center> ";

}

Page 130: PHP básico para iniciantes

Imprimindo uma variável na tela facilmente

•  Para imprimir <? print $nomeDaVariavel; ?>

•  Simplificademente para uma linha ou única variável <?= $nomeDaVariavel ?>

Page 131: PHP básico para iniciantes

EditarQuiz

Page 132: PHP básico para iniciantes

editarQuiz.php <html> <head> <title>Editar Quiz</

title> </head> <body> <? $dadosQuiz = ""; $senha = $_POST[‘senha’]; $editarArquivo =

$_POST[‘editarArquivo’]; if ($senha != "phpfa7"){ print "Senha Inválida!";

} else { if ($editarArquivo == "novo"){ $nomeQuiz = "sample test"; $emailQuiz = "root@localhost"; $dadosQuiz = "q:a:b:c:d:correct"; $senhaQuiz = "php"; } else { $fp = fopen($editarArquivo, "r"); $nomeQuiz = fgets($fp); $emailQuiz = fgets($fp); $senhaQuiz = fgets($fp); while (!feof($fp)){ $dadosQuiz .= fgets($fp); } } ?>

Page 133: PHP básico para iniciantes

editarQuiz.php <center> <div class="secao"> <form action="escreverQuiz.php" method="post"> <p>Nome do Quiz: <input type="text" name="nomeQuiz" value="<?= $nomeQuiz ?>"> </p> <p>Email do elaborador: <input type="text" name="emailQuiz" value="<?= $emailQuiz ?>"> </p> <p>Senha: <input type="password" name="senhaQuiz" value="<?= $senhaQuiz ?>"> </p> <p>Perguntas e Respostas:</p> <p> <textarea name="dados" rows="5" cols="30"><?= $dadosQuiz ?> </textarea> </p> <p><input type="submit" value="Salvar quiz"></p> </form> <? } ?> </div> </center>

Page 134: PHP básico para iniciantes

editarQuiz.php <tr> <td rowspan = “1” colspan = “2”> <textarea name = "dadosQuiz“ rows = "10" cols = "60"> <?= $dadosQuiz ?> </textarea> </td> </tr> <tr> <td colspan = "2"> <input type = "submit“ value = "Salvar quiz"> </td> </tr> </table> </form> <? } ?> </body> </html>

Page 135: PHP básico para iniciantes

editarQuiz.php $dadosQuiz = ""; if ($senha != "phpfa7"){ print "Senha Inválida!"; } else { if ($editarArquivo == "novo"){ $nomeQuiz = "sample test"; $emailQuiz = "root@localhost"; $dadosQuiz = "q:a:b:c:d:correct"; $senhaQuiz = "php"; } else { $fp = fopen($editarArquivo, "r"); $nomeQuiz = fgets($fp); $emailQuiz = fgets($fp); $senhaQuiz = fgets($fp); while (!feof($fp)){ $dadosQuiz .= fgets($fp); } }

Page 136: PHP básico para iniciantes

Baixar Material

•  http://www.fa7.edu.br/phpparainiciantes/modulo2/quiz.zip

•  Descompactar •  Abrir o escreverQuiz.php

Page 137: PHP básico para iniciantes

escreverQuiz.php

$arquivoBase = str_replace(" ", "_", $nomeQuiz); $arquivoHtml = $arquivoBase . ".html"; $arquivoMestre = $arquivoBase . ".mas"; $htfp = fopen($arquivoHtml, "w"); $dadosHtml = construirHTML(); fputs($htfp, $dadosHtml); fclose($htfp); $msfp = fopen($arquivoMestre, "w"); $dadosMestre = construirMestre(); fputs($msfp, $dadosMestre); print " <pre>$dadosMestre</pre> "; fclose($msfp);

Page 138: PHP básico para iniciantes

escreverQuiz.php function construirMestre(){ global $nomeQuiz, $emailQuiz, $senhaQuiz, $dadosQuiz; $dadosMestre = $nomeQuiz . "\n"; $dadosMestre .= $emailQuiz . "\n"; $dadosMestre .= $senhaQuiz . "\n"; $dadosMestre .= $dadosQuiz; return $dadosMestre; }

Page 139: PHP básico para iniciantes

Percorrendo o arquivo $numeroQuestao = 1; foreach ($problemas as $problemaAtual){ list($questao, $respostaA, $respostaB, $respostaC, $respostaD,

$correct) = explode (":", $problemaAtual);

Page 140: PHP básico para iniciantes

Criando String delimitadas por caracteres

•  Exemplo –  “Qual meu nome?:Dudu:Du:Edu” –  “Animais-cachorro-gato”

list($variavel1, $variavel2, $varialvel3) = explode (“-”, $animais);

Page 141: PHP básico para iniciantes

Pontuando o Quiz Arquivo Mestre(.mas) Meu Nome root@localhost nome Qual meu nome?:Eduardo:Marcelo:Álvaro:Mauro:A

Page 142: PHP básico para iniciantes

Baixar Material

•  http://www.fa7.edu.br/phpparainiciantes/modulo2/quiz2.zip

•  Descompactar •  Abrir o pontuarQuiz.php

Page 143: PHP básico para iniciantes

Pontuando o Quiz Abrindo os Arquivos //abre o arquivo master correto para leitura $arquivoBase = str_replace(" ", "_", $nomeQuiz); $arquivoMas = $arquivoBase . ".mestre"; $msfp = fopen($arquivoMas, "r"); //Cria o nome do arquivo de log $logFile = $arquivoBase . ".log"; //As tres primeiras linhas são o nome, email do

instrutor e senha $nomeQuiz = fgets($msfp); $emailQuiz = fgets($msfp); $senhaQuiz = fgets($msfp);

Page 144: PHP básico para iniciantes

Pontuando o Quiz Criando uma Resposta //percorre as questoes em busca da $numeroCorretas = 0; $numeroQuestao = 1; while (!feof($msfp)){ $problemaAtual = fgets($msfp); list($questao, $respostaA, $respostaB, $respostaC,

$respostaD, $correta) = split (":", $problemaAtual); $respostaCorreta[$numeroQuestao] = $correta;

$numeroQuestao++;} fclose($msfp);

Page 145: PHP básico para iniciantes

Pontuando o Quiz Checando a resposta do usuário

//Confere as repostas do usuário for($numeroQuestao = 1; $numeroQuestao <= count($quest); $numeroQuestao++){

$jogada = $quest[$numeroQuestao]; $correta = $respostaCorreta[$numeroQuestao]; $correta = rtrim($correta); if ($jogada == $correta){ //Acertos e erros $numeroCorretas++; print "Problema nº $numeroQuestao está correta<br>

\n"; } else { print “ <font color = red>Problema nº $numeroQuestao está

incorreta</font><br>\n"; } // fim do if } // fim do for

Page 146: PHP básico para iniciantes

Pontuando o Quiz Exibindo o resultado print “ Você tem $numeroCorretas correta(s)<br>\n"; $porcentagem = ($numeroCorretas/count($quest)) * 100; print “ $porcentagem %<br>\n";$hoje = date ("F j, Y, g:i a"); $location = getenv("REMOTE_ADDR"); //adiciona o resultado ao arquivo de log $lgfp = fopen($logFile, "a"); $linhaDeLog = $jogador . "\t"; $linhaDeLog .= $hoje . "\t"; $linhaDeLog .= $location . "\t"; $linhaDeLog .= $numeroCorretas . "\t"; $linhaDeLog .= $porcentagem . "\n"; fputs($lgfp, $linhaDeLog); fclose($lgfp);?></html>

Page 147: PHP básico para iniciantes

Visualizando LOG

Page 148: PHP básico para iniciantes

visualizarLog.php <? if ($senha == "phpfa7"){ $linhas = file($logFile); print "<pre>\n"; foreach ($linhas as $linha){ print $linha; } // fim foreach print "</pre>\n"; } else { print “ <font color = \"red\“ size = +2> Você não tem permissão para exibir este arquivo </font>"; } // fim if ?>

Page 149: PHP básico para iniciantes

Dúvidas?

Page 150: PHP básico para iniciantes

Obrigado!