Autochamada de páginas

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.

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.

Fonte: http://www.criarweb.com/artigos/97.php

Deixe um comentário