|   | 
  
  
    
  
     
  
  
      | 
    Objetivos | 
   
  
    - Conocer los elementos de entrada de un formulario
 - Conocer las principales funciones de salida
 
  | 
   
  
  
      | 
    Fuentes de información | 
   
  
     | 
   
  
  
      | 
     | 
   
  
  
    |   | 
    1.- Introducción
      Hasta ahora hemos visto programas en PHP donde las variables 
tenían un valor predefinido y en los que los valores se imprimían con la
 función echo, pero ésto se puede flexibilizar gracias a las 
instrucciones de entrada y salida. De hecho PHP ofrece una serie de 
opciones de entrada/salida que permite tanto introducir datos (para 
tratarlos) como mostrarlos en pantalla.  
      En esta unidad aprenderemos a utilizar las principales instrucciones para realizar tales funcionalidades.       
      2.- Entrada de datos: Formularios HTML
      Antes de comenzar a ver la entrada y salida de datos vamos a 
explicar el mecanismo básico de interacción entre el usuario y un  
web-site, es decir, el formulario HTML. Para ello el servidor envía un 
formulario que el navegador muestra en pantalla permitiendo al usuario 
ingresar datos para, a continuación, transferir estos datos al servidor 
para ser procesados por éste. Para terminar, el servidor responde con 
una página en función de los datos recibidos en el formulario. 
        
      Veamos un ejemplo que lo clarifica y en el que insertamos dos 
cajas de texto, así como un botón (el fichero lo hemos llamado 
prueba1.php): 
        
      Y su resultado: 
        
      Si nos fijamos, en el formulario tenemos tres 
elementos: un campo de texto llamado usuario, otro campo de texto 
llamado password y un último botón llamado proc. Además, éste se ha 
definido fuera de las marcas de php (<?php y ?>), pero dentro de 
las etiquetas de body de HTML.  
      Una vez que el usuario ingresa un texto y presiona
 el botón de Enviar el navegador genera una petición al servidor (con el
 método POST) al script “procesar.php” que es el script que se va a 
encargar de procesar los datos ingresados        en el formulario. 
Dentro del script php los datos del formulario se reciben en variables  
php que tienen el mismo nombre que los        indicados con “NAME” en el
 formulario, en este caso el  script recibe usuario y password con el 
texto  que haya escrito el usuario en el formulario. 
      Ahora vamos a crear el script procesar.php, el cual se encargará de recibir y procesar los datos: 
        
      En el script podemos observar el acceso a la 
variable $_POST. Ésta no ha sido explicada en en apartado de variables 
debido a que es una variable predefinida de PHP, la cual recoge todos 
los elementos que han sido proporcionados al script mediante el envío 
(pulsando el botón Enviar del script prueba1.php). Es por ello que la 
variable $_POST es una matriz donde están todas las variables y a la que
 podemos acceder usando el nombre de éstas, nombre que se corresponde 
con el de los componentes. 
      Si insertamos los datos de usuario y contraseña 
(en el ejemplo hemos utilizado usuario profesor y contraseña profe), el 
resultado será: 
        
      Los formularios, como hemos podido ver, se forman a
 partir de otros elementos como son: los cuadros de texto, los botones 
de activación, las casillas de verificación, las áreas de texto y 
selección múltiple. Estos elementos harán que la propiedad TYPE de los 
campos INPUT varíen. 
      2.1.- Cuadros de texto
      Los cuadros de texto son componentes que permiten 
la introducción de datos en formato texto. En este caso el tipo del 
campo es TEXT, como en el ejemplo: 
      <INPUT TYPE="text" NAME="apellidos"> 
      Además posee un conjunto de atributos que permiten modificar sus propiedades: 
      -           maxlength=”número”: Cantidad máxima de caracteres que se pueden ingresar
 - name=”texto”: Nombre de la variable que recibirá el valor
 - size=”número” Tamaño del campo de entrada a mostrar en pantalla
 - value=”texto”:Valor inicial o por defecto a mostrar en el campo de entrada
  
      En el siguiente programa mostramos el ejemplo del punto 2 pero con todos los atributos: 
        
      Y el resultado queda así: 
        
        | 
   
  
  
      | 
    
           | 
   
  
  
  
    |   | 
    En la teoría hemos visto dos programas en los que se 
implementan ejemplos de utilización de formularios HTML. Créalos y 
almacenalos con los nombres entradasalida01.php (el primer formulario 
HTML), entradasalida02.php (el programa procesar.php) y 
entradasalida03.php. Ten en cuenta que deberás cambiar la propiedad FORM
 ACTION para que, en lugar de apuntar al script procesar.php, apunte a 
entradasalida02.php. 
      Además crea un nuevo programa (almacénalo como entradasalida04.php) en el que crees un formulario con: 
      - un cuadro de texto de nombre "nombrecompleto" y con valor inicial "Introduzca su nombre"
 - un cuadro de texto de nombre "direccion", con tamaño 30 y con longitud máxima 40
 - un cuadro de texto de nombre "telefono", con longitud máxima 9 y con tamaño 10
 
  | 
   
   
   
      | 
     | 
   
  
  
    |   | 
    2.2.- Botones de activación
      Los botones de activación o radio buttons son botones con dos 
posibles estados: encendidos o apagados. Éstos pueden agruparse        
de forma tal que sólo un radio-button del grupo pueda estar encendido.  
      El nombre de radio  button fue asignado por parecerse al 
funcionamiento de los botones de las viejas radios de automóviles, en 
las que siempre debían estar 
        presionado uno de los botones y nunca (mientras funcionaba 
correctamente) podían estar dos presionados al        mismo tiempo. 
      En este tipo de campo, el valor es RADIO y un ejemplo de ello 
sería (como se puede observar, los radio buttons no tienen texto por lo 
que hemos de escribirlo nostros después de cada uno de ellos: 
      <INPUT TYPE="radio" NAME="nombre" VALUE="hombre">Hombre<br/> 
      <INPUT TYPE="radio" NAME="nombre" VALUE="mujer">Mujer<br/> 
       
        Además posee un conjunto de atributos que permiten modificar sus propiedades: 
      - checked: Indica si está seleccionado (sólo se puede poner en uno de cada grupo)
 - name=”texto”: Nombre de la variable que recibirá el valor
 - value=”texto”:Valor inicial o por defecto a mostrar en el campo 
  
      Un elemento a tener en cuenta es que todos los radio  buttons 
del mismo nombre pertenecen al mismo        grupo, es decir que de todo 
el grupo sólo uno podrá ser seleccionado. El  value del botón determina 
cual es el        radio elegido del grupo.  
      En el programa siguiente mostramos un ejemplo que lo clarifica. Primero mostramos el formulario: 
        
      Y su resultado en el navegador: 
        
      Ahora mostramos el script procesar.php: 
        
      Y su resultado al elegir la primera fruta: 
        
      Si nos fijamos, el checked nos permite seleccionar uno de los 
radio buttons de entre los que hay en el grupo. Sus valores se envían 
mediante la variable fruta que será recogida y mostrada por el script 
procesar.php. 
      2.3.- Casillas de verificación
      Las casillas de verificación o checkboxes son campos de entrada
 que soportan únicamente los estados de  activado o desactivado aunque, 
al contrario que los anteriores, en un grupo puede haber varios 
seleccionados.  Para ello se usa el        tipo CHECKBOX de la siguiente
 manera: 
      <INPUT TYPE="checkbox" NAME="valor1" VALUE="Pera"> 
      <INPUT TYPE="checkbox" NAME="valor2" VALUE="Manzana"> 
      Al igual que los anteriores elementos tiene un conjunto de atributos: 
      - checked: Indica si está seleccionado
 - name=”texto”: Nombre de la variable que recibirá el valor
 - value=”texto”:Valor inicial o por defecto a mostrar en el campo 
  
      El script que recibe los resultados sólo recibe los nombres de 
los  checkboxes que están seleccionados, por lo que habrá que tratar la 
respuesta.Veamos un ejemplo comenzando por el formulario: 
        
      Y su vista en el navegador: 
        
      Ahora falta el script que lo procesará: 
        
      Y su resultado (con la primera y tercera frutas seleccionadas): 
       
  | 
    
  
      | 
     | 
   
  
  
  
    |   | 
    Implementa los ejemplos vistos en la teoría y almacénalos con
 los nombres entradasalida05.php (formulario del punto 2.2), 
entradasalida06.php (script del punto 2.2), entradasalida07.php 
(formulario del punto 2.3) y entradasalida08.php (script del punto 
2.3).Ten en cuenta que deberás cambiar la propiedad FORM ACTION para 
que, en lugar de apuntar al script procesar.php, apunte a los que 
correspondan. 
      Además crea un nuevo programa (almacénalo como entradasalida09.php) en el que crees un formulario con: 
      - un cuadro de texto de nombre "nombrecompleto" y con valor inicial "Introduzca su nombre"
 - tres radio buttons en los que indiques "Sr", "Sra" y "Srta" como elementos a seleccionar y cuyo nombre sea "tratamiento"
 - cuatro radio buttons en los que indiques "1-10", "11-30", "31-50", "50-" como elementos a seleccionar y cuyo nombre sea "edad"
 - dos checkboxes en los que indiques "Estudiante" y 
"Trabajador" como elementos a seleccionar y cuyos nombres sean "estudia"
 y "trabaja"
 
  | 
   
  
  
      | 
     | 
   
  
  
    |   | 
    2.4.- Área de texto
      Un área de texto o textarea permite ingresar texto en una caja 
de formato mayor a un  campo de texto. Su  notación es distinta a la de 
un  tag de INPUT: 
      <TEXTAREA NAME="texto"></TEXTAREA> 
      Aunque se asemeja en el apartado de atributos, el cual tiene un mayor número: 
      - cols=”numero”: Número de columnas del textarea
 -  rows=”numero”: Número de líneas
 -  name=”texto”: Nombre de la variable que recibe el texto
 -  wrap=”off/virtual/physical”:  Forma en la cual se cortan 
las palabras cuando termina cada línea:  off          elimina el corte 
de palabras, virtual muestra los cortes pero estos no son transmitidos 
al  server,  physical corta          las palabras y además transmite los
 saltos de línea al server.
 
          
      Mostramos un formulario en el que se puede observar un ejemplo: 
        
      Y su resultado: 
        
      Si en lugar de fijar el valor del atributo WRAP a off, lo cambiamos a virtual o a physical, el resultado es: 
        
      También podemos poner un texto por defecto en el textarea como en el siguiente ejemplo: 
        
      Y su resultado en el navegador: 
        
      2.5.- Selección múltiple
      En ocasiones es necesario tener un listado de 
opciones y poder seleccionar algunas de ellas, y es el control de 
selección múltiple el que nos permite realizar esa labor.  Su  notación,
 al igual que en el caso anterior, es distinta a la de un  tag de INPUT: 
      <SELECT MULTIPLE NAME="menu"> 
        <OPTION VALUE="Tortilla">Tortilla</OPTION> 
        <OPTION VALUE="Paella">Paella</OPTION> 
        <OPTION VALUE="Arroz al horno">Arroz al horno</OPTION> 
        </SELECT> 
      Si nos fijamos, hay un elemento de apertura 
(SELECT) y uno de cierre (/SELECT), y entre ambos las diferentes 
opciones existentes, también entre aperturas y cierres de elementos 
OPTION. 
      Mostramos un ejemplo ilustrativo: 
        
      En éste podemos ver que el nombre que se le da al 
elemento SELECT es menu[], ello es debido a que es un array en el que se
 irán insertando los diferentes valores seleccionados. En caso de poner 
como nombre menu, solo podríamos acceder al primer elemento, limitando 
la funcionalidad del componente. 
      El resultado en el navegador: 
        
      Y ahora el script que imprimiría todos los valores seleccionados (procesar.php): 
        
      Seleccionando los tres primeros, el resultado sería: 
        
       
    
  | 
    
  
 
      | 
     | 
   
  
  
  
    |   | 
    Implementa los ejemplos vistos en la teoría y almacénalos con
 los nombres entradasalida10.php (formulario del punto 2.4), 
entradasalida11.php (formulario de texto por defecto al textarea del 
punto 2.4), entradasalida12.php (formulario del punto 2.5) y 
entradasalida13.php (script del punto 2.5).Ten en cuenta que deberás 
cambiar la propiedad FORM ACTION para que, en lugar de apuntar al script
 procesar.php, apunte a los que correspondan.  | 
   
   
      | 
     | 
   
  
  
    |   | 
    3.- Salida de datos
      Habitualmente la salida de datos se realiza por pantalla a 
través de páginas HTML. Para ello se ha de utilizar alguna funciones 
como son: echo, print, printf y sprintf, las cuales explicaremos en los 
siguientes puntos. 
      3.1.- Echo
      La función echo la hemos estado utilizando a lo largo de todas 
las unidades y es la más común para representar los datos por pantalla. 
Su sintaxis es la siguiente: 
      echo argumento1, argumento2, ..., argumenton 
      Si el argumento es una cadena entre comillas 
dobles, las variables incluidas se expandirán mientras que si es con 
comillas simples no lo harán. Ejemplo: 
      $nombre = "Mario" 
      echo "Hola $nombre" --> Hola Mario 
      echo 'Hola $nombre' --> Hola $nombre 
      3.2.- Print
      Función que realiza similares funcionalidades a la
 de echo, de hecho se puede intercambiar sin problemas con la anterior. 
Su sintaxis es la siguiente: 
      print argumento1, argumento2, ..., argumenton 
      Las condiciones de las cadenas son las mismas que las vistas en la función echo. Mostramos un programa en el que se ilustra: 
        
      Y su resultado: 
        
      3.3.- Printf
      Tanto con echo como print no podíamos imprimir con
 formato a no ser que lo fijáramos en el propio texto (argumento). 
Gracias a la función printf podemos imprimir una cadena o varias con un 
determinado formato. Su sintaxis es la siguiente: 
      printf(formato, argumento1, argumento2,..., argumenton) 
      El formato indica el modo en el que se imprimirá 
la cadena y contendrá tanto caracteres fijos como directivas % 
(similares a las utilizadas en C/C++). Esta directiva puede tener un 
conjunto de valores dependiendo del tipo de salida que vayamos a 
incluir: 
      - %b: aparece en formato binario
 - %d: aparece en formato decimal
 - %f: aparece en formato de coma flotante
 - %s: aparece como una cadena
  
      En el siguiente programa aparecen ejemplos de diferentes tipos de salidas: 
        
      Y su resultado es: 
        
      3.4.- Sprintf
      Esta función es igual a la anterior pero con la 
particularidad de que permite guardar el resultado en una variable. De 
este modo la sintaxis es la siguiente: 
      $variable = sprintf(formato, argumento1, argumento2,..., argumenton) 
      Mostramos un programa con un ejemplo de uso: 
        
      Y su resultado: 
               | 
    
  
 
      | 
     | 
   
  
  
  
    |   | 
    Implementa los ejemplos vistos en la teoría y almacénalos con
 los nombres entradasalida14.php, entradasalida15.php y 
entradasalida16.php. Además crea un programa (llamado 
entradasalida17.php) en el que muestres por pantalla el número 100 en 
binario, en decimal, en octal y en hexadecimal utilizando la directiva %
 con su correspondiente letra (%o para octal, %b para binario, %d para 
decimal y %x para hexadecimal). 
      Una vez hecho comprímelo todo en un fichero llamado entradasalida.zip y súbelo a la plataforma.  | 
   
 
  
  
   
  
    
 
 | 
  |