Formularios en PHP


 

                    El mecanismo básico de interacción entre el usuario y un sitio web está dado por el uso de formularios html. El server envía el formulario que el browser (navegador) muestra en pantalla permitiendo al usuario ingresar los datos, luego estos datos viajan al servidor para ser procesados en el mismo.
El siguiente ejemplo muestra un formulario en html que contiene un campo editor tipo Text llamado Apellido y un botón cuyo rótulo es Ejecutar..

<FORM ACTION = "Proceso.php" METHOD = "POST">
<INPUT TYPE = "TEXT" NAME="Apellido">
<INPUT TYPE = "SUBMIT" NAME="Boton" VALUE="Ejecutar">
</FORM>

Una vez que se ingresa el texto en el campo editor y presionado el botón Ejecutar, el browser (navegador) genera un request (petición o llamado) con método Post al script "Proceso.php", que es el programa encargado de procesar los datos ingresados.
Dentro del script "Proceso.php", los datos del formulario se reciben en variables que tienen el mismo nombre que los indicados con NAME en el formulario.

En PHP es posible que un Form se procese a si mismo, esto se puede hacer de la siguiente manera:

Ejemplo Práctico : Fichero Form1.php

<Htm>
<Body>
<?PHP
   if ($_REQUEST[Boton] != "" )
    {
     echo "El apellido Ingresado es : $_REQUEST[Apellido]";
    }
    else
   {
 ?>
   <FORM ACTION = "Form1.php" METHOD = "POST">
   <INPUT TYPE = "TEXT" NAME="Apellido">
   <INPUT TYPE = "SUBMIT" NAME="Boton" VALUE="Ejecutar">
   </FORM>
 <?PHP
   }
 ?>
</Body>
</Htm>

F1

Observar que el nombre con que fue grabado el script (Form1.php),  es el que debe llevar FORM ACTION, para que pueda ser procesado.

La instrucción $_REQUEST[Boton]  de PHP, devuelve el contenido que tiene el botón SUBMIT, que en caso de ejecutarse por primera vez la página, no contendrá ningún valor.  Por lo tanto se mostrará el formulario (el campo Text con el Botón), porque la condición del  if  es Falsa.
Una vez ingresado el texto y presionado el Botón, la instrucción $_REQUEST[Boton]  tendrá un valor y la condición dentro del if será verdadera, ya que será distinto de nada ("").
La línea siguiente, imprime la leyenda: El Apellido Ingresado es: conjuntamente con lo rescatado por: $_REQUEST[Apellido], que contiene el dato del Apellido ingresado.  
En definitiva, la instrucción  $_REQUEST  se utiliza para capturar el contenido de los objetos descriptos en el formulario.

El pasaje de los valores del formulario se puede realizar por dos métodos distintos, que son METHOD = "GET"  y  METHOD = "POST".
Cuando se utiliza el método GET, todos los valores son pasados en la URL del navegador y pueden ser observados en la misma.
Al utilizar el método POST los valores son enviados por la entrada estándar STDIO y no son visibles en la URL del navegador.

Ejemplo Práctico: Ingresar por medio de un formulario el nombre de un producto y el peso que le corresponde. Posteriormente mostrar las leyendas según los siguientes puntos:

  • Si el peso es menor o igual a 10, mostrar "Peso Deficiente".
  • Si el peso es mayor a 10 y menor o igual a $20, mostrar "Peso Normal".
  • Si el peso es mayor a 20, mostrar "Excedido de Peso"

<Html>
<Body>
 <?PHP
   if ( $_REQUEST[boton] != "" )
    {
      if ($_REQUEST[Peso]<=10)
        echo "Peso Deficiente";
        elseif ($_REQUEST[Peso]>10 && $_REQUEST[Peso]<=20)
          echo "Peso Normal";
          else
            echo "Excedido de Peso";
   }
   else
   {
 ?>
 <FORM ACTION="Form2.php" METHOD="POST">
 Nombre: <INPUT TYPE="TEXT" NAME="Nombre" size="25">
 <Br>
 Peso: <INPUT TYPE="TEXT" NAME="Peso" size="10">
 <Br>
 <INPUT TYPE="SUBMIT" NAME="boton" VALUE="Ingresar Datos">
 </FORM>
 <?PHP
   }
 ?>
</Body>
</Html>

Nota:  Tener en cuenta que para que el programa funcione correctamente, debe ser grabado como Form2.php, ya que ese es el nombre que se dio en el FORM  ACTION.
En muchos casos se debe tener la seguridad de que el usuario halla ingresado los datos al presionar el botón de entrada, para ello se debe comprobar que los campos estén completos. Hay varias formas de realizar esto, lo mas sencillo es disponer de dos formularios, uno para el ingreso de los datos y el otro para mostrar una leyenda (indicando que falta completar los datos) y un botón para retornar al formulario de ingreso de datos, como se muestra en el siguiente ejemplo.

Ejemplo Práctico:
Permitir el ingreso de los datos de una persona (Nombre, Dni y Sueldo), teniendo en cuenta que el Nombre y el Dni deben ser obligatorios. Si faltara alguno de ellos volver al formulario de ingreso.
Si los campos están completos, procesar el sueldo de la siguiente manera, si es mayor a 2000, mostrar la leyenda "Sueldo Eficiente", de lo contrario mostrar  "Sueldo Ineficiente". Observar la presentación:
 

F2

<Html>
<TITLE>  Form3.php  </TITLE>
<Body>
 <?PHP
   if ( $_REQUEST[boton1] !="" )
    {
      $Nombre = $_REQUEST[Nombre];
      $Dni    = $_REQUEST[Dni];
      $Sueldo = $_REQUEST[Sueldo];
      if ($Nombre=="" || $Dni=="" )
       {
         echo "<H3>";
         echo "Falta ingresar algún dato <Br>";
         echo "Los datos marcados con (*) son obligatorios<Br>";
         echo "Pulse el boton para volver al formulario de Ingreso<Br>";
         ?>
           <FORM ACTION="Form3.php" METHOD="POST">
           <INPUT TYPE="SUBMIT" NAME="boton2" VALUE="Volver">
         <?PHP
       }
       else
       {
         // Procesar de los datos
         echo "<H2>";
         if ($Sueldo>2000)
            echo "$Nombre tiene un Sueldo Eficiente";
            else
            echo "$Nombre tiene un Sueldo Ineficiente";
       }
    }
   else
   {
  ?>
  <H2>
  Formulario de Ingreso de Datos
  <Hr>
  <FORM ACTION="Form3.php" METHOD="POST">
  (*)Nombre: <INPUT TYPE="TEXT" NAME="Nombre" size="25">
  <Br>
  (*)DNI: <INPUT TYPE="TEXT" NAME="Dni" size="20">
  <Br>
  Sueldo: <INPUT TYPE="TEXT" NAME="Sueldo" size="15">
  <Br><Br>
  Los campos marcados con (*) son obligatorios.
  <Br><Br>
  <INPUT TYPE="SUBMIT" NAME="boton1" VALUE="Ingresar Datos">
  </FORM>
  <?PHP
   }
 ?>
</Body>
</Html>

Comentario:
Al comienzo del programa se pregunta si la instrucción $_REQUEST[boton] tiene asignado algún valor, en este caso, por ser la primera vez que se ejecuta esta página, será falso, por lo tanto el programa se transfiere al else del if, mostrando el formulario de carga de datos.
Una vez ingresado los datos y presionado el botón1, la página se llama a sí misma y la pregunta inicial será verdadera, ya que la instrucción $_REQUEST[boton] tendrá ahora asignado un valor. Se continúa con la asignación a cada una de las variables de los respectivos campos y comprobando que los campos estén completos, esto se logra utilizando la línea:
               if ($Nombre=="" || $Dni=="" )
la cual verifica si el nombre o el dni no contienen datos. De ser así, se envía una leyenda indicando tal situación y que deben completarse, luego se realiza un pequeño formulario que llama a la misma página y que contiene un botón únicamente. Al presionarse el botón2, se ejecuta nuevamente la página desde el principio realizándose la pregunta inicial.
Si la pregunta inicial es verdadera y los campos están completos, el programa se transfiere a procesar los datos ingresados, en este caso, se utiliza únicamente el sueldo, emitiendo las leyendas correspondientes, de acuerdo al enunciado del problema.