Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP básico para iniciantes

1,733 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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!

×