PHP básico para iniciantes

1.587 visualizações

Publicada em

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

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.587
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
101
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

PHP básico para iniciantes

  1. 1. Iniciando PHP Professor: Eduardo Mendes
  2. 2. Agenda •  Visão Geral •  Arquitetura Cliente-Servidor •  Programas Básicos •  Sintaxe do PHP •  Formulários •  Manipulação de Strings •  Controle de Fluxo
  3. 3. Visão Geral •  Páginas web  simples documentos
  4. 4. Visão Geral •  Página web com PHP –  aplicação interativa
  5. 5. Testando Configuração •  Iniciar o EasyPHP –  Iniciar  Programas  EasyPHP
  6. 6. Testando Configuração •  Executar algum browser (navegador) –  http://localhost
  7. 7. Testando Configuração •  Os arquivos serão salvos na pasta www do EasyPHP –  C:Arquivos de programasEasyPHP1-8www
  8. 8. Material Exemplo •  http://www.fa7.edu.br/webiniciantes/ modulo2/iniciandoPhp.zip
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. PHP & Arquivos •  Crie um arquivo txt na pasta www do EasyPHP com o nome “dicas.txt”
  13. 13. 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
  14. 14. Formulários
  15. 15. Formulários
  16. 16. 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>
  17. 17. oiUsuario.php <h1>Oi, usuário</h1> <p class=“destaque”> <? print "Olá, “ . $_POST[‘nome’]; ?> </p>
  18. 18. musica.html
  19. 19. musica.php
  20. 20. 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>
  21. 21. 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>’
  22. 22. oiUsuario2.php
  23. 23. oiUsuario2.php
  24. 24. 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>"; } ?>
  25. 25. Trabalhando com Variáveis numéricas
  26. 26. 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>
  27. 27. Criando um número randômico
  28. 28. 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>
  29. 29. Condicionais Jogo do Dado
  30. 30. 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>
  31. 31. 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
  32. 32. Condicionais if e else
  33. 33. 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>
  34. 34. 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
  35. 35. 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
  36. 36. Funções - Encapsulando parte do programa
  37. 37. <? 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
  38. 38. Funções com parâmetros
  39. 39. <? 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
  40. 40. Funções Retornando um valor
  41. 41. 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>
  42. 42. 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”;
  43. 43. 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”>”; } }
  44. 44. PHP & Estruturas de Controle LOOPS
  45. 45. 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
  46. 46. Contando com o loop FOR
  47. 47. 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>
  48. 48. Contando de 5 em 5
  49. 49. O que há de novo? for ( $i = 5; $i <= 50; $i=$i + 5){ print "$i <br>"; } $i = $i + 5
  50. 50. 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>
  51. 51. Usando um loop WHILE
  52. 52. whileSimples.php <html> <body> <h1> Um Loop While Simples</h1> <? $i = 1; while ($i <= 10){ print "$i <br>"; $i = $i + 1; } ?> </body> </html>
  53. 53. Relembrando Tabelas •  <table> –  Define uma tabela •  <tr> –  Define uma linha •  <td> –  Define uma coluna •  Atenção: –  Uma linha tem ao menos uma coluna!
  54. 54. Desafio! •  Construir uma função que imprima na tela uma linha de uma tabela <table> <? function linhaTabela() ; ?> </table>
  55. 55. Solução! <? function linhaTabela($nome) { print “<tr><td>$nome</td></tr>”; } ?> <table border=“1”> <? linhaTabela(“Eduardo”); ?> </table>
  56. 56. 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);
  57. 57. Arrays •  Variáveis são como copos –  Contém, guardam alguma coisa –  Valores •  Arrays são como bandejas de copos
  58. 58. Gerando o Array $camelPop[1] = "Somalia"; $camelPop[2] = "Sudan"; $camelPop[3] = "Mauritania"; $camelPop[4] = "Pakistan"; $camelPop[5] = "India";
  59. 59. Examinando o conteúdo do Array com um loop for ($i = 1; $i <= 5; $i++) { print "$i: $camelPop[$i]<br>"; }
  60. 60. 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"; }
  61. 61. arrayBasico.php <html> <body> <h1>Array Básico</h1> <? $camelPop[1] = "Somalia"; $camelPop[2] = "Sudan"; $camelPop[3] = "Mauritania"; $camelPop[4] = "Pakistan"; $camelPop[5] = "India";
  62. 62. 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>
  63. 63. Loop com forEach <? $nomes = array("Eduardo", "Luiz", "Guilherme", "Victor"); ?> <html> <body> <? foreach ($nomes as $nome) { echo $nome."<br/>"; } ?> </body> </html>
  64. 64. 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");
  65. 65. Campos ocultos
  66. 66. persistencia.php <html> <body> <h1>Persistencia</h1> <form> <? if (!isset($contador) && !isset($oculto)) { $contador = 0; $oculto = 0; } $contador++; $oculto++;
  67. 67. 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>
  68. 68. 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)
  69. 69. Funções de arquivos em Php
  70. 70. 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");
  71. 71. 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
  72. 72. Escrevendo em um arquivo •  Parâmetros –  Ponteiro para o arquivo –  Texto a ser escrito fputs($p, $texto);
  73. 73. 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()
  74. 74. 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
  75. 75. 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>
  76. 76. Carregando um Arquivo
  77. 77. 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))
  78. 78. 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>
  79. 79. 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>
  80. 80. Trabalhando com diretórios
  81. 81. 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);
  82. 82. 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);
  83. 83. A função readDir() •  Recupera o nome do próximo arquivo dentro do diretório •  Parâmetros –  Ponteiro para diretório $arquivoAtual = readDir($d);
  84. 84. 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>
  85. 85. 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);
  86. 86. 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>
  87. 87. Concatenando palavras •  Operador de concatenação  . $vogais = “A” . “E” . “I” . “O” . “U”; print “$vogais”; $output .= “texto qualquer“; $output = $output . “texto qualquer”;
  88. 88. Álbum Simples
  89. 89. Preparando as Imagens •  Google •  3 Imagens de cachorro •  Tipo imagem –  jpg –  gif
  90. 90. 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; }
  91. 91. 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"; ?>
  92. 92. 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>
  93. 93. borderMaker.html <form method = "post“ action = "borderMaker.php"> <h3>Texto a modificar</h3> <textarea name = “textoQualquer" rows = "10“ cols = "40">TEXTO QUALQUER </textarea>
  94. 94. borderMaker.html <table border =“2”> <tr> <td> <h3>Estilo da borda</h3> </td> <td colspan =“2”> <h3>Tamanho da borda</h3> </td> </tr>
  95. 95. 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>
  96. 96. 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>
  97. 97. 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>
  98. 98. borderMaker.html <input type = "submit“ value = "Mostre-me"> </form> </center> </body> </html>
  99. 99. 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;
  100. 100. borderMaker.php print "<div style = $estilo>"; print $textoQualquer; print "</div>"; ?> </center> </body> </html>
  101. 101. Alterando as informações recebidas
  102. 102. 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);
  103. 103. 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"; }
  104. 104. 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
  105. 105. Cortando as sobras •  rtrim() –  Retira espaços em branco do lado direito da String –  rtrim()  Right Trim •  Variante –  ltrim()  Left Trim
  106. 106. 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>
  107. 107. 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”);
  108. 108. Formatando Textos
  109. 109. 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);
  110. 110. lista.dat
  111. 111. 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";
  112. 112. listaEmail.php $messagem = “ Para: $email Caro $nome: Obrigado por participar do nosso forum. Atenciosamente, FA7. “; print "<pre>$messagem</pre>"; } ?> </body> </html>
  113. 113. QuizMachine
  114. 114. estilo.css .secao { border-style:solid; border-width:thin; border-color:#000066; width: 400px; background-color:#E5E5E5; }
  115. 115. QuizMachine
  116. 116. Página baseada em funções <html> <head> <title>Quiz Machine</title> </head> <body> <h1>Quiz Machine</h1> <? recuperarArquivos(); exibirTeste(); exibirEditar(); exibirLog(); ?> </body> </html>
  117. 117. 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>
  118. 118. Exibindo um teste
  119. 119. 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">";
  120. 120. 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> "; }
  121. 121. Recuperando arquivos <? function recuperarArquivos(){ global $dirPtr, $arquivos; chdir("."); $dirPtr = openDir("."); $arquivoAtual = readDir($dirPtr); while ($arquivoAtual !== false){ $arquivos[] = $arquivoAtual; $arquivoAtual = readDir($dirPtr); } }
  122. 122. Editando um quiz
  123. 123. 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> ";
  124. 124. 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> "; }
  125. 125. Imprimindo uma variável na tela facilmente •  Para imprimir <? print $nomeDaVariavel; ?> •  Simplificademente para uma linha ou única variável <?= $nomeDaVariavel ?>
  126. 126. EditarQuiz
  127. 127. 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); } } ?>
  128. 128. 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>
  129. 129. 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>
  130. 130. 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); } }
  131. 131. Baixar Material •  http://www.fa7.edu.br/phpparainiciantes/ modulo2/quiz.zip •  Descompactar •  Abrir o escreverQuiz.php
  132. 132. 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);
  133. 133. escreverQuiz.php function construirMestre(){ global $nomeQuiz, $emailQuiz, $senhaQuiz, $dadosQuiz; $dadosMestre = $nomeQuiz . "n"; $dadosMestre .= $emailQuiz . "n"; $dadosMestre .= $senhaQuiz . "n"; $dadosMestre .= $dadosQuiz; return $dadosMestre; }
  134. 134. Percorrendo o arquivo $numeroQuestao = 1; foreach ($problemas as $problemaAtual){ list($questao, $respostaA, $respostaB, $respostaC, $respostaD, $correct) = explode (":", $problemaAtual);
  135. 135. Criando String delimitadas por caracteres •  Exemplo –  “Qual meu nome?:Dudu:Du:Edu” –  “Animais-cachorro-gato” list($variavel1, $variavel2, $varialvel3) = explode (“-”, $animais);
  136. 136. Pontuando o Quiz Arquivo Mestre(.mas) Meu Nome root@localhost nome Qual meu nome?:Eduardo:Marcelo:Álvaro:Mauro:A
  137. 137. Baixar Material •  http://www.fa7.edu.br/phpparainiciantes/ modulo2/quiz2.zip •  Descompactar •  Abrir o pontuarQuiz.php
  138. 138. 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);
  139. 139. 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);
  140. 140. 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
  141. 141. 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>
  142. 142. Visualizando LOG
  143. 143. 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 ?>
  144. 144. Dúvidas?
  145. 145. Obrigado!

×