Autochamada de páginas

Páginas que se chamam a si mesmas passando dados por POST ou GET: formulários reentrantes e variáveis passadas pela URL à mesma página.

Por Miguel Angel Alvarez - Tradução de JML


Publicado em: 21/7/04
Valorize este artigo:
Ao incluir um formulário numa página deve-se indicar, através do atributo action, o nome do ficheiro PHP ao que enviaremos os dados escritos no formulário. Desta maneira, para um esquema de envio de dados por formulário, podem participar duas páginas: uma que contém o formulário e outra que recebe os dados de dito formulário.

O mesmo acontece quando enviamos variáveis pela URL. Temos uma página que conterá o link e outra página que receberá e tratará esses dados para mostrar uns resultados.

Neste artigo vamos ver como se pode enviar e receber dados de um formulário com uma única página. Também veremos como na mesma página podemos ter links com passagem de variáveis pela URL e podemos recolher e tratar esses dados com a mesma página. A este efeito podemos chamar-lhe "autochamada de páginas", mas também é normal dar-lhe o nome de "formulários reentrantes" ou términos similares. É muito interessante conhecer o modo de funcionamento destes scripts, porque serão muito habituais nas nossas páginas PHP e ajudam muito a ter os códigos ordenados.

Em ambos casos, para formulários o envio de dados pela URL, deve-se seguir um esquema como este:

  • Comprovar se recebo dados pela URL ou pelo formulário
  • Se não recebo dados
    • Mostro o formulário e os links que pasma as variáveis
  • Se recebo dados
    • Tenho de processar o formulário ou as variáveis da URL
Para um formulário

Vejamos a continuação como seria o código de um formulário reentrante.

<html>
<head>
   <title>Chamo-me a mim mesmo...</title>
</head>

<body>
<?
if (!$_POST){
?>
   <form action="auto-chamada.php" method="post">
   Nome: <input type="text" name="nome" size="30">
   <br>
   Empresa: <input type="text" name="empresa" size="30">
   <br>
   Telefone: <input type="text" name="telefone" size=14 value="+351 " >
   <br>
   <input type="submit" value="Enviar">
   </form>
<?
}else{
   echo "<br>Seu nome: " . $_POST["nome"];
   echo "<br>Sua empresa: " . $_POST["empresa"];
   echo "<br>Seu Telefone: " . $_POST["telefone"];
}
?>
</body>
</html>


No exemplo, o primeiro passo é conhecer se se estão a receber ou não os dados através de um formulário. Pra isso comprova-se com um enunciado if se existe ou não uma variável $_POST.

Em concreto if (!$_POST) quer dizer algo assim como "Se não existem dados provenientes de um formulário". No caso de que não existam, mostro o formulário. Em caso de que efetivamente existam, recolho os dados e imprimo-os na página.

Pode-se ver o exemplo em funcionamento noutra página.

Para passagem de variáveis pela URL

A idéia é a mesma. Verificar com um enunciado if se os dados são recebidos desde uma URL. Vejamos o código a continuação. Trata-se de uma página que mostra uma serie de links para ver as tabuadas do 1 ao 10. Cada um dos links mostra uma tabuada. Pressionando o primeiro link podemos ver a tabuada do 1, no segundo a tabuada do 2, etc.

Recordemos que a página chama-se a si mesma. Para compreende-la mais facilmente é interessante ve-la em funcionamento.

<html>
<head>
<title>Tabuadas</title>
</head>

<body>
<?
if (!$_GET){
   for ($i=1;$i<=10;$i++){
      echo "<br><a href='ver_tabuada.php?tabuada=$i'>Ver a tabuada do $i</a>\n";
   }
} else {
   $tabuada=$_GET["tabuada"];
?>
   <table align=center border=1 cellpadding="1">
<?
   for ($i=0;$i<=10;$i++){
      echo "<tr><td>$tabuada X $i</td><td>=</td><td>" . $tabuada * $i . "</td></tr>\n";
   }
?>
   </table>
<?
}
?>
</body>
</html>


Este código é um pouco mais complicado, porque faz bastantes mais coisas que o anterior, mas para o assunto que nos preocupa que é a autochamada de páginas, tudo continua igual de simples.

Temos de reparar que o if verifica se recebemos dados pela URL: if (¡$_GET), que quer dizer algo como "Se não se recebem variáveis pela URL".

Em caso positivo (não se recebem dados pela URL) mostram-se os links para ver cada uma das tabuadas e em caso de receber dados, mostra-se a tabuada do número que se está a receber na URL.

Para mostrar os links e as tabuadas utilizam-se loops for, que esperamos que não resultem desconhecidos para o leitor. Pode ficar-se a conhecer mais sobre loops for em Controlo de fluxo em PHP: Loops II.





Comentários do artigo
Foi enviado 1 comentário ao artigo
1 comentário não revisado
0 comentários revisados

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato