Capítulo 9

PHP: parâmetros e páginas dinâmicas

"Antes do software ser reusável, ele precisa ser usável." -- Ralph Johnson

9.1 Submissão do formulário

Todo formulário criado no HTML tem seus dados enviados para o servidor quando submetido. Cada campo do formulário é enviado como parâmetro na requisição feita ao servidor.

No formulário, podemos indicar que página (URL) vai receber os dados preenchidos. É só especificar o atributo action. No nosso exemplo, temos um formulário na página produto.php e vamos criar uma próxima página, checkout.php, que vai receber o produto escolhido e deixar o usuário proceder com a compra.

No formulário de produto então fazemos:

<form action="checkout.php">

Há ainda um outro atributo do form que indica a maneira como os dados são enviados. É o atributo method que pode receber dois valores: GET ou POST. Ambos os métodos enviam os dados do formulário ao servidor, mas o GET faz isso via parâmetros na URL enquanto o POST envia os dados no corpo da requisição (e, portanto, não é visível na barra de endereços).

<form action="checkout.php" method="POST">

Saber inglês é muito importante em TI

Na Alura Língua você reforça e aprimora seu inglês! Usando a técnica Spaced Repetitions o aprendizado naturalmente se adapta ao seu conhecimento. Exercícios e vídeos interativos fazem com que você pratique em situações cotidianas. Além disso, todas as aulas possuem explicações gramaticais, para você entender completamente o que está aprendendo. Aprender inglês é fundamental para o profissional de tecnologia de sucesso!

Pratique seu inglês na Alura Língua.

9.2 Parâmetros com PHP

Os dados enviados no formulário são recebidos no PHP e podemos acessá-los através de variáveis do próprio PHP: $_GET e $_POST, dependendo de qual foi o método do formulário.

Para acessar o valor de um certo campo preenchido, precisamos saber o nome dele. No HTML do formulário, sempre que criamos um componente, damos um name a ele:

<input type="text" name="mensagem">

No PHP, podemos acessar cada parâmetro individualmente usando uma sintaxe de arrays:

<?= $_GET['mensagem'] ?>

ou

<?= $_POST['mensagem'] ?>

Imprimindo variável com PHP

Até o capítulo anterior, quando queríamos imprimir algo na tela usamos a construção:

    <?php print $dado; ?>

Mas o PHP permite uma sintaxe mais curta para declarar um bloco de código quando a única ação é imprimir algo e não há várias linhas de código.

    <?= $dado ?>

É uma sintaxe mais curta que a primeira e tem exatamente o mesmo efeito.

No próximo exercício, vamos criar uma página simples de checkout que, por enquanto, apenas mostra uma mensagem de confirmação para o usuário seguida dos parâmetros que foram submetidos no formulário.

9.3 Listas de definição no HTML

Quando falamos de listas em HTML, sempre lembramos da <ul> e da <ol>. Essas são listas mais clássicas, mudando apenas que uma não tem ordem e a outra tem.

Mas existe uma terceira lista, que semanticamente serve para definir itens. É uma lista de termos e suas respectivas definições. Se quiséssemos criar uma lista das siglas de cursos da Caelum e seu respectivo nome, podemos fazer assim:

<dl>
    <dt>WD-43</dt>
    <dd>Desenvolvimento Web com HTML, CSS e JavaScript</dd>

    <dt>WD-47</dt>
    <dd>Programação front end avançada com JavaScript e jQuery</dd>
</dl>

A lista é a DL e cada termos é representado por um DT seguindo por sua definição em um DD.

9.4 Exercícios: checkout da compra

  1. Crie o arquivo checkout.php com uma estrutura básica.

     <!doctype html>
     <html>
     <head>
         <meta charset="UTF-8">
         <title>Checkout Mirror Fashion</title>
         <meta name="viewport" content="width=device-width">
     </head>
     <body>
    
         <h1>Ótima escolha!</h1>
         <p>Obrigado por comprar na Mirror Fashion!
         Preencha seus dados para efetivar a compra.</p>
    
     </body>
     </html>
    

    Não vamos usar o menu da Mirror Fashion nessa página, para criar uma experiência de checkout mais imersiva.

  2. O formulário na página de produto precisa enviar os dados escolhidos para a página de checkout. Para isso, nosso formulário deve indicar para onde ser submetido.

    Altere a tag <form> no arquivo produto.php para apontar para nossa nova página adicionando o atributo action:

     <form action="checkout.php">
    

    Abra a página de produto no navegador e teste o submit. Repare como a página de checkout é chamada e os parâmetros escolhidos na página anterior vão junto na URL.

  3. Os parâmetros enviados no capítulo anterior aparecem na URL. Isso porque nosso formulário, por padrão, é do tipo GET. Podemos trocar para o tipo POST e, assim, os parâmetros serão enviados mas não estarão visíveis na URL.

    Altere a tag <form> no arquivo produto.php para enviar via POST adicionando o atributo method:

     <form action="checkout.php" method="POST">
    

    Na página checkout.php podemos pegar os valores submetidos através de variáveis do PHP e exibir esses valores na tela. Adicione na página de checkout as informações de cor e tamanho escolhidos. Use uma lista de definições DL com DT/DD pra isso:

     <h2>Sua compra</h2>
     <dl>
         <dt>Cor</dt>
         <dd><?= $_POST['cor'] ?></dd>
    
         <dt>Tamanho</dt>
         <dd><?= $_POST['tamanho'] ?></dd>
     </dl>
    

    Teste acessando um produto e clicando em comprar. Os valores escolhidos devem aparecer na página de checkout, através dos parâmetros escolhidos.

    Teste várias vezes, com escolhas diferentes, pra ver como nossa página de checkout é dinamicamente construída com os parâmetros enviados.

  4. Imagine que vamos ter vários produtos diferentes na loja, todas enviando as compras pra nossa página de checkout. E lá queremos saber qual o nome e preço do produto que está sendo comprado (além da cor e do tamanho).

    Podemos passar mais dois parâmetros para a página de checkout com o nome e o preço do produto. Use dois input hidden pra passar essas informações. Na página produto.php, adicione dentro do form:

     <input type="hidden" name="nome" value="Fuzzy Cardigan">
     <input type="hidden" name="preco" value="129,00">
    

    Por fim, na página checkout.php, adicione a impressão dos parâmetros nome e do preco dentro da lista de definições que fizemos antes:

     <dt>Produto</dt>
     <dd><?= $_POST['nome'] ?></dd>
    
     <dt>Preço</dt>
     <dd>R$ <?= $_POST['preco'] ?></dd>
    

    Teste o funcionamento do hidden fazendo uma nova compra de produto.

Aprenda se divertindo na Alura Start!

Você conhece alguém que tem potencial para tecnologia e programação, mas que nunca escreveu uma linha de código? Pode ser um filho, sobrinho, amigo ou parente distante. Na Alura Start ela vai poder criar games, apps, sites e muito mais! É o começo da jornada com programação e a porta de entrada para uma possível carreira de sucesso. Ela vai estudar em seu próprio ritmo e com a melhor didática. A qualidade da conceituada Alura, agora para Starters.

Conheça os cursos online da Alura Start!