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 programasEasyPHP1-8www
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 programasEasyPHP1-8www";
$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!

PHP básico para iniciantes