Procesamiento de formulario en un solo archivo PHP
En la lección anterior, nuestro formulario estaba ubicado
en una página y se enviaba a otra.
En realidad, esto no es necesario. Si se deja
el atributo action vacío o se elimina
completamente, el formulario se enviará a esta
misma página.
Cómo funcionará esto: en la primera visita a la página, llenaremos el formulario con datos y haremos clic en el botón. Después de esto, la página se actualizará y su código se ejecutará nuevamente, pero esta vez con los datos del formulario.
Veamos un ejemplo. Supongamos que tenemos en un mismo archivo el formulario y su procesamiento:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
En la primera visita a la página, la función var_dump
mostrará un array vacío. Y después de enviar el formulario,
mostrará los datos del formulario. Es decir, la primera
vez $_GET estará vacío, y la segunda vez
- contendrá los datos del formulario.
Esto puede causar problemas. Supongamos, por ejemplo, que introducimos números en el formulario y queremos mostrar la suma de estos números en la pantalla:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
En este caso, en la primera visita a la página
veremos errores de PHP, relacionados con el hecho de que
el array $_GET está vacío, y nosotros accedemos
a sus elementos.
Cabe decir aquí que puede que los errores no aparezcan en su navegador. En este caso, compruebe que tiene activada la visualización de errores de PHP, y también asegúrese de que es su primera visita a la página y que no hay datos del formulario en la barra de direcciones.
Arreglemos el problema. Para ello, añadiremos una condición en la que comprobaremos si el formulario ha sido enviado.
Por ejemplo, se puede comprobar si $_GET
no está vacío. Si $_GET no está vacío -
entonces el formulario fue enviado y se puede realizar
la suma. En caso contrario, todavía estamos en la
primera visita a la página y la suma no se realizará.
He aquí el código corregido:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Pregunte al usuario su apellido, nombre y patronímico. Después de enviar el formulario, muestre en la pantalla los datos introducidos.