PHP básico para iniciantes

Post on 26-Jun-2015

1.114 views 4 download

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

Iniciando PHP

Professor: Eduardo Mendes

Agenda

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

Visão Geral

•  Páginas web simples documentos

Visão Geral

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

Testando Configuração

•  Iniciar o EasyPHP –  Iniciar Programas EasyPHP

Testando Configuração

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

Testando Configuração

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

Material Exemplo

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

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

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

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

PHP & Arquivos

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

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

Formulários

Formulários

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>

oiUsuario.php

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

musica.html

musica.php

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>

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>’

oiUsuario2.php

oiUsuario2.php

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>"; } ?>

Trabalhando com Variáveis numéricas

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>

Criando um número randômico

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>

Condicionais Jogo do Dado

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>

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

Condicionais if e else

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>

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

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

Funções - Encapsulando parte do programa

<? 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

Funções com parâmetros

<? 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

Funções Retornando um valor

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>

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”;

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\”>”; } }

PHP & Estruturas de Controle LOOPS

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

Contando com o loop FOR

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>

Contando de 5 em 5

O que há de novo?

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

$i = $i + 5

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>

Usando um loop WHILE

whileSimples.php

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

Relembrando Tabelas •  <table>

–  Define uma tabela •  <tr>

–  Define uma linha •  <td>

–  Define uma coluna •  Atenção:

–  Uma linha tem ao menos uma coluna!

Desafio!

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

?> </table>

Solução!

<? function linhaTabela($nome) {

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

<? linhaTabela(“Eduardo”);

?> </table>

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);

Arrays

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

•  Arrays são como bandejas de copos

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

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

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"; }

arrayBasico.php

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

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>

Loop com forEach

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

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

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");

Campos ocultos

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

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>

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)

Funções de arquivos em Php

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");

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

Escrevendo em um arquivo

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

fputs($p, $texto);

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()

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

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>

Carregando um Arquivo

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))

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>

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>

Trabalhando com diretórios

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);

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);

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

do diretório •  Parâmetros

–  Ponteiro para diretório

$arquivoAtual = readDir($d);

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>

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);

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>

Concatenando palavras

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

$output .= “texto qualquer“;

$output = $output . “texto qualquer”;

Álbum Simples

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

–  jpg –  gif

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; }

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"; ?>

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>

borderMaker.html

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

borderMaker.html

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

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>

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>

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>

borderMaker.html

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

</body> </html>

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;

borderMaker.php

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

</html>

Alterando as informações recebidas

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);

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";

}

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

Cortando as sobras

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

String –  rtrim() Right Trim

•  Variante –  ltrim() Left Trim

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>

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”);

Formatando Textos

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);

lista.dat

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";

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

QuizMachine

estilo.css

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

}

QuizMachine

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

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>

Exibindo um teste

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\">";

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> "; }

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

Editando um quiz

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> ";

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> ";

}

Imprimindo uma variável na tela facilmente

•  Para imprimir <? print $nomeDaVariavel; ?>

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

EditarQuiz

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); } } ?>

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>

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>

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); } }

Baixar Material

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

•  Descompactar •  Abrir o escreverQuiz.php

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);

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

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

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

Criando String delimitadas por caracteres

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

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

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

Baixar Material

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

•  Descompactar •  Abrir o pontuarQuiz.php

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);

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);

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

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>

Visualizando LOG

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 ?>

Dúvidas?

Obrigado!