Recuperando informações utilizando $_GET e $_POST no mesm formulário
No post recupenado informações via $_GET foi ensinado como pode ser feito para recuperar dados de um formulário pelo método get, e em recuperando informações via $_POST foi ensinado como pode ser feito para recuperar dados de um formulário pelo método POST.
Em ambos os casos, foram explicados os conceitos, as vantagens e as desvantagens de cada um. E como a programação está aí para facilitar a vida de todo mundo, é possível utilizar os dois métodos juntos, caso necessário. Porém, é necessário a separação das informações para seu uso correto.
Há duas formas de fazer isso, estaticamente, com o valor fixo para o parâmetro que será recuperado pelo $_GET, ou dinamicamente, utilizando uma função javascript para manipular o valor antes do envio do formulário.
1. Da forma estática:
- Montagem do formulário
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Teste de Formulário com $_GET e $_POST</title>
</head>
<body>
<h1>Teste de Formulário com $_GET e $_POST</title></h1>
<form name="formulario" action="pagina.php?acao=Cadastrar" method="post">
<label>Nome:</label>
<input type="text" name="txtNome" id="txtNome" /> <br />
<label>Email:</label>
<input type="text" name="txtEmail" id="txtEmail" /> <br />
<label>Cidade:</label>
<input type="text" name="txtCidade" id="txtCidade" /> <br />
<input type="submit" name="cmdEnviar" id="cmdEnviar" value="Enviar" />
</form>
</body>
</html>
Veja que todos os campos (input, select, etc) do formulário serão enviados com o método POST, pois o atributo method do formulario contém o valor 'post'. Esses dados serão acessíveis em nossa página na variável $_POST.
O campo que será enviado pelo método GET é o atributo acao, que está configurado na url do atributo action da tag form. Tudo que estiver após o ponto de interrogação estará disponível em nossa página PHP na variável $_GET.
- Página PHP
<?php
echo 'Acao: ' . $_GET['acao'] . '<br />';
echo 'Nome: ' . $_POST['txtNome'] . '<br />';
echo 'Email: ' . $_POST['txtEmail'] . '<br />';
echo 'Cidade: ' . $_POST['txtCidade'] . '<br />';
?>
Veja que o valor de acao é recuperado por $_GET e os demais campos são recuperados por $_POST. E lembre-se,todos os campos poderiam ser utilizados por $_REQUEST, tanto o valor de acao, quanto os demais campos.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Teste de Formulário com $_GET e $_POST</title>
</head>
<body>
<h1>Teste de Formulário com $_GET e $_POST</title></h1>
<form name="formulario" id="formulario" action="pagina.php" method="post">
<label>Nome:</label>
<input type="text" name="txtNome" id="txtNome" /> <br />
<label>Email:</label>
<input type="text" name="txtEmail" id="txtEmail" /> <br />
<label>Cidade:</label>
<input type="text" name="txtCidade" id="txtCidade" /> <br />
<input type="button" name="cmdEnviar" id="cmdEnviar" onclick="doEnviar()" value="Enviar" />
</form>
</body>
</html>
2. Da forma dinâmica:
- Montagem do formulário
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Teste de Formulário com $_GET e $_POST</title>
</head>
<body>
<h1>Teste de Formulário com $_GET e $_POST</title></h1>
<form name="formulario" id="formulario" action="pagina.php" method="post">
<label>Nome:</label>
<input type="text" name="txtNome" id="txtNome" /> <br />
<label>Email:</label>
<input type="text" name="txtEmail" id="txtEmail" /> <br />
<label>Cidade:</label>
<input type="text" name="txtCidade" id="txtCidade" /> <br />
<input type="button" name="cmdEnviar" id="cmdEnviar" onclick="doEnviar()" value="Enviar" />
</form>
</body>
</html>
Veja que o action do formulário contém apenas a página, não tem o sinal de interrogação.
Outra mudança é o botão de envio, que mudou o atributo type de submit para button. Essa alteração faz com que o botão não envie o formulário quando for acionado. Outra mudança foi a adição do atributo onclick como o valor doEnviar(). Isso faz com que quando esse botão for acionado por um click, a função doEnviar() sejá executada (em javascript)
- Função Javascript
<script type="text/javascript">
function doEnviar() { //inicio da funcao
//pega o formulário como elemento
var formulario = document.getElementById('formulario');
//monta os parametros de get
var parsGet = '?acao=cadastrar';
parsGet = parsGet + '&txtNome=' + document.getElementById('txtNome').value;
//muda o parâmetro action do formulário com os parmetros get
formulario.action = formulario.action + parsGet;
//envia o formulário
formulario.submit();
}
</script>
A função javascript acima deve ser copiada e colada antes do fechamento da tag header. Seu objetivo é montar os parâmetros da url que devem ser recuperadas por GET em nossa página PHP, adicionando os campos ao action do formulário e enviando o formulário com o comando submit.
- Página PHP
<?php
echo 'Acao: ' . $_GET['acao'] . '<br />';
echo 'Nome: ' . $_GET['txtNome'] . '<br />';
echo 'Email: ' . $_POST['txtEmail'] . '<br />';
echo 'Cidade: ' . $_POST['txtCidade'] . '<br />';
?>
Veja que o valor de acao e o nome (txtNome) são recuperados por $_GET e os demais campos são recuperados por $_POST. E lembre-se,todos os campos poderiam ser utilizados por $_REQUEST, tanto o valor de acao e nome, quanto os demais campos.
quinta-feira, 11 de setembro de 2008
PHP: Utilizando GET e POST no mesmo formulário
Assinar:
Postar comentários (Atom)
Um comentário:
Olá, que bom que encontrei seu blog!
Sou Carlos, faço faculdade de sistemas de informação e estou aprendendo PHP. Creio que seu blog irá me ajudar muito.
Abraço
Carlos Garcia
Postar um comentário