SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
FSM, vetores e funções
       em PHP

             Breno Vitorino
              Seminários III
        PUC Minas Contagem
No último seminário...
● Vimos o que são operações do tipo
  CRUD.
● Entendemos as funções isset() e

  empty() no contexto de validação de
  formulários.
● Revisamos as funções PHP para criar


  uma página de inserção (CRUD).
Alterar
●   Comando SQL:
    UPDATE <tabela> SET <campo =
    valor> WHERE <condição>;
●   Exemplo:
    UPDATE portfolio SET experiencia =
    'Nenhuma';
Alterar em PHP

Podemos aproveitar o
formulário de criação?
Alterar em PHP
Sim, podemos aproveitar:
● Leiaute da página


● Validação dos campos
Alterar em PHP
Entretanto, há diferenças também:
● Ao abrir a página, deve carregar os

  dados do portfólio.
● Ao clicar em Enviar, deve executar

  um UPDATE ao invés de INSERT
Alterar em PHP

Solução: implementar uma
máquina de estados (FSM –
Finite State Machine)
Exemplo: máquina de estados finita


                                 casar
              Solteiro                         Casado

                                                             morrer
                         casar
    morrer
                                         divorciar
                         cônjuge morre               casar
  morrer                                                     morrer
             Viúvo                          Divorciado
FSM para a página de inserção /
         atualização
    Formulário em branco



                                    enviar form.
                           Criar                   Formulário preenchido

   abrir página                                                        inserir no BD




   abrir página                                                       atualizar no BD
                                    enviar form.
                        Atualizar                  Formulário preenchido




 Formulário preenchido
 de acordo com o ID do portfólio.
Máquina de estados em PHP
$estado = obter_estado_pagina();
switch($estado) {
    case INSERCAO_NOVO:
     // Algum processamento ...
     break;
    case ALTERACAO_NOVO:
     // Outro processamento ...
     break;
}
Sintaxe de funções
function
nome_da_função( parâmetro1,
parâmetro2, … ) {
    bloco_de_comandos;
    return valor; // Opcional
}
Funções em PHP
<?php
function fibonacci ($n) {
    if ($n == 1 || $n == 2) {
        return 1;
    } else {
        return fibonacci($n - 1) + fibonacci($n - 2);
    }
}
?>
Geração dinâmica de
      caixas de seleção
●   2 vetores:
       – Um para armazenar a lista de
          opções
       – Outro para armazenar a opção
          selecionada
Vetores em PHP
●    Armazenam uma coleção de valores.
●    Podem ser declarados como:
    <? frutas = array ( quot;bananaquot;, quot;pêraquot;, quot;maçãquot; ); ?>
ou
    <? chamada = array (
          quot;albertoquot; => quot;317345quot;
          quot;biancaquot; => quot;792652quot;
      ); ?>
Vetores para caixas de
            seleção
$estado_options = array(
     'MG', 'RJ', 'RS', 'SP'
);
$estado_selected [ $estado ] = 'selected =
quot;selectedquot; ';
Caixa de seleção dinâmica
<select name=quot;estadoquot; id=quot;estadoquot;>
   <option value=quot;quot; <?= $estado_selected['']
                     ?>>Escolha</option>
<? foreach( $estado_options as $option ) { ?>
   <option <?= $estado_selected [ $option ]
            ?>><?= $option ?></option>
<? } ?>
</select>
Alterar: Demo
Obrigado!


                     Breno Vitorino
http://brenovitorino.wordpress.com

Mais conteúdo relacionado

Mais de Breno Vitorino

Linux: Kernel, Runlevels e Virtualização
Linux: Kernel, Runlevels e VirtualizaçãoLinux: Kernel, Runlevels e Virtualização
Linux: Kernel, Runlevels e VirtualizaçãoBreno Vitorino
 
Linux: Instalação de aplicativos
Linux: Instalação de aplicativosLinux: Instalação de aplicativos
Linux: Instalação de aplicativosBreno Vitorino
 
Introdução ao Software Livre e Linux
Introdução ao Software Livre e LinuxIntrodução ao Software Livre e Linux
Introdução ao Software Livre e LinuxBreno Vitorino
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasBreno Vitorino
 
Sistema gerenciador de conteúdo
Sistema gerenciador de conteúdoSistema gerenciador de conteúdo
Sistema gerenciador de conteúdoBreno Vitorino
 
Introdução à Arquitetura Web
Introdução à Arquitetura WebIntrodução à Arquitetura Web
Introdução à Arquitetura WebBreno Vitorino
 
Como criar blogs: WordPress.com
Como criar blogs: WordPress.comComo criar blogs: WordPress.com
Como criar blogs: WordPress.comBreno Vitorino
 
Uma visao geral sobre blogs
Uma visao geral sobre blogsUma visao geral sobre blogs
Uma visao geral sobre blogsBreno Vitorino
 
Arquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaArquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaBreno Vitorino
 

Mais de Breno Vitorino (11)

Linux: Kernel, Runlevels e Virtualização
Linux: Kernel, Runlevels e VirtualizaçãoLinux: Kernel, Runlevels e Virtualização
Linux: Kernel, Runlevels e Virtualização
 
Linux: Instalação de aplicativos
Linux: Instalação de aplicativosLinux: Instalação de aplicativos
Linux: Instalação de aplicativos
 
Introdução ao Software Livre e Linux
Introdução ao Software Livre e LinuxIntrodução ao Software Livre e Linux
Introdução ao Software Livre e Linux
 
Modelo de Camadas
Modelo de CamadasModelo de Camadas
Modelo de Camadas
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e Técnicas
 
Criando seu Blog
Criando seu BlogCriando seu Blog
Criando seu Blog
 
Sistema gerenciador de conteúdo
Sistema gerenciador de conteúdoSistema gerenciador de conteúdo
Sistema gerenciador de conteúdo
 
Introdução à Arquitetura Web
Introdução à Arquitetura WebIntrodução à Arquitetura Web
Introdução à Arquitetura Web
 
Como criar blogs: WordPress.com
Como criar blogs: WordPress.comComo criar blogs: WordPress.com
Como criar blogs: WordPress.com
 
Uma visao geral sobre blogs
Uma visao geral sobre blogsUma visao geral sobre blogs
Uma visao geral sobre blogs
 
Arquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaArquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em Java
 

FSM, vetores e funções em PHP

  • 1. FSM, vetores e funções em PHP Breno Vitorino Seminários III PUC Minas Contagem
  • 2. No último seminário... ● Vimos o que são operações do tipo CRUD. ● Entendemos as funções isset() e empty() no contexto de validação de formulários. ● Revisamos as funções PHP para criar uma página de inserção (CRUD).
  • 3. Alterar ● Comando SQL: UPDATE <tabela> SET <campo = valor> WHERE <condição>; ● Exemplo: UPDATE portfolio SET experiencia = 'Nenhuma';
  • 4. Alterar em PHP Podemos aproveitar o formulário de criação?
  • 5. Alterar em PHP Sim, podemos aproveitar: ● Leiaute da página ● Validação dos campos
  • 6. Alterar em PHP Entretanto, há diferenças também: ● Ao abrir a página, deve carregar os dados do portfólio. ● Ao clicar em Enviar, deve executar um UPDATE ao invés de INSERT
  • 7. Alterar em PHP Solução: implementar uma máquina de estados (FSM – Finite State Machine)
  • 8. Exemplo: máquina de estados finita casar Solteiro Casado morrer casar morrer divorciar cônjuge morre casar morrer morrer Viúvo Divorciado
  • 9. FSM para a página de inserção / atualização Formulário em branco enviar form. Criar Formulário preenchido abrir página inserir no BD abrir página atualizar no BD enviar form. Atualizar Formulário preenchido Formulário preenchido de acordo com o ID do portfólio.
  • 10. Máquina de estados em PHP $estado = obter_estado_pagina(); switch($estado) { case INSERCAO_NOVO: // Algum processamento ... break; case ALTERACAO_NOVO: // Outro processamento ... break; }
  • 11. Sintaxe de funções function nome_da_função( parâmetro1, parâmetro2, … ) { bloco_de_comandos; return valor; // Opcional }
  • 12. Funções em PHP <?php function fibonacci ($n) { if ($n == 1 || $n == 2) { return 1; } else { return fibonacci($n - 1) + fibonacci($n - 2); } } ?>
  • 13. Geração dinâmica de caixas de seleção ● 2 vetores: – Um para armazenar a lista de opções – Outro para armazenar a opção selecionada
  • 14. Vetores em PHP ● Armazenam uma coleção de valores. ● Podem ser declarados como: <? frutas = array ( quot;bananaquot;, quot;pêraquot;, quot;maçãquot; ); ?> ou <? chamada = array ( quot;albertoquot; => quot;317345quot; quot;biancaquot; => quot;792652quot; ); ?>
  • 15. Vetores para caixas de seleção $estado_options = array( 'MG', 'RJ', 'RS', 'SP' ); $estado_selected [ $estado ] = 'selected = quot;selectedquot; ';
  • 16. Caixa de seleção dinâmica <select name=quot;estadoquot; id=quot;estadoquot;> <option value=quot;quot; <?= $estado_selected[''] ?>>Escolha</option> <? foreach( $estado_options as $option ) { ?> <option <?= $estado_selected [ $option ] ?>><?= $option ?></option> <? } ?> </select>
  • 18. Obrigado! Breno Vitorino http://brenovitorino.wordpress.com