Post on 26-Jun-2015
description
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!