miércoles, 15 de octubre de 2014

PHP (06) Validaciones (02) Requiriendo números

Continuamos con las validaciones y vamos a considerar de base el código anterior sobre la combrobación de datos.
Ahora vamos a requerir que el valor introducido sea un número.
En el siguiente código veremos que es muy sencillo una vez que tenemos nuestro script:
<html>
 <head>
  <title>
  Comprobación de datos requeridos
  </title>
 </head>
 <body>
  <h1>Comprobación de datos requeridos</h1>
  <?php
  /*
  Comenzamos buscando si visto esta activo, y vamos llamando a las
  funciones correspondientes para controlar el formulario
  */
   $errors_array = array();
   if(isset($_REQUEST["visto" ])){
    comprobarDatos();
    if(count($errors_array) != 0){
     mostrarErrores();
     mostrarInicio();
    }
    else {
     respuesta();
    }
   }
   else {
    mostrarInicio();
   }
   /*
   Muestra el formulario
   */
   function mostrarInicio()
   {
    echo "<form method='post'>" ;
    echo "<p>¿Que edad tiene?</p>" ;
    echo "<input name='number' type='text'>" ;
    echo "<input type='submit' value='Enviar'>" ;
    echo "<input type='hidden' name='visto' value='already_seen'>" ;
    echo "</form>" ;
   }
   /*
   Comprueba que el campo de texto no este en blanco, de ser así introduce un mensaje
   en el array global
   */
   function comprobarDatos()
   {
    global $errors_array;
    if(strcmp($_REQUEST["number"], strval(intval($_REQUEST["number"])))) {
     $errors_array[] = "<font color='red'>Escriba su edad con números</font>" ;
    }
   }
   /*
   recoge los errores del array global, lo recorre y muestra su contenido
   */
   function mostrarErrores()
   {
    global $errors_array;
    foreach ($errors_array as $err){
     echo '<p>' . $err . '</p>';
    }
   }
   /*
   Muestra la respuesta del servidor cuando todo esta correcto
   */
   function respuesta()
   {
    echo "Su edad es de: ";
    echo $_REQUEST["number"];
   }
   ?>
 </body>
</html>

Si comparamos el código con el que ya conocíamos vemos que lo único que ha cambiado es el nombre de la variable que se recoge a la cual hemos llamado number, y tan solo en la función comprobar datos hemos cambiado la condición del if por:
if(strcmp($_REQUEST["number"], strval(intval($_REQUEST["number"]))))

Lo que hace esta condición es convertir el valor, recogido como una cadena, en un entero con la función intval para reconvertirla en una cadena de nuevo con strval, por otro lado con strcmp se compara la cadena recibida con la obtenida en los cambios y de este modo devuelve, 0 si son iguales, o 1 si no son iguales, en cuyo caso se ejecuta el código introduciendo el error en la matriz de errores.

Como se puede observar es tan solo una adaptación de nuestro anterior script sin mayor complicación.

No hay comentarios:

Publicar un comentario