Version: .5

Type: Class

Category: HTML

License: GNU General Public License

Description: This is a simple class for handling data from forms. At the moment, it only supports the input tag with the following attributes: "text" and "radio". At the end of the file there is a short sample and description of how to use this class.



<?php

class FormHandling
{
  var $formStructure;
  var $strayFormVariables;
  var $errorFormVariables = array();
  var $passedFormVariables;
  var $postData;
  
  
  function FormHandling()
  {
    global $_POST;
    $this->postData = $_POST;
  }
  
  function ParseFormData()
  {
    reset( $this->formStructure );
    while( list( $key, $val ) = each( $this->formStructure ) )
    {
      switch( $val["type"] )
      {
        case "int":
          $this->CheckInt( $key, $val );
          break;
          
        case "string":
          $this->CheckString( $key, $val );
          break;
          
        case "radio":
          $this->CheckRadio( $key, $val );
          break;
          
        default:
      }
      
    }
    $this->StrayFormData();
  
  }
  
  
  function CheckInt( $formName, $variableStructure )
  {
    $this->postData["$formName"] += 0;
    if( !( $variableStructure["canBeEmpty"] ) && empty( $this->postData["$formName"] ) )
    {
      $this->errorFormVariables[] = $formName;
      return;
    } else if( !is_int( $this->postData["$formName"] ) )
    {
      $this->errorFormVariables[] = $formName;
      return;
    }
    
    $variableLength = strlen( $this->postData["$formName"] );
    if( $variableLength < $variableStructure["minLength"] &&
        $variableLength > $variableStructure["maxLength"] )
    {
      $this->errorFormVariables[] = $formName;
      return;
    } else
      $this->passedFormVariables[] = $formName;
      
    return;
  }
  
  function CheckString( $formName, $variableStructure )
  {
    if( !( $variableStructure["canBeEmpty"] ) && empty( $this->postData["$formName"] ) )
    {
      $this->errorFormVariables[] = $formName;
      return;
    } else if( !is_string( $this->postData["$formName"] ) )
    {
      $this->errorFormVariables[] = $formName;
      return;
    }
    
    $variableLength = strlen( $this->postData["$formName"] );
    
    if( $variableLength < $variableStructure["minLength"] &&
        $variableLength > $variableStructure["maxLength"] )
    {
      $this->errorFormVariables[] = $formName;
      return;
    } else
      $this->passedFormVariables[] = $formName;
      
    return;
  }
  
  function CheckRadio( $formName, $variableStructure )
  {
    if( !( $variableStructure["canBeEmpty"] ) && empty( $this->postData["$formName"] ) )
    {
      $this->errorFormVariables[] = $formName;
      return;
    }
    if( !in_array( $this->postData["$formName"], $variableStructure["possibleValues"] ) )
    {
      $this->errorFormVariables[] = $formName;
      return;
    }
    
    $this->passedFormVariables[] = $formName;
    return;
  }
  
  function StrayFormData()
  {
    reset( $this->postData );
    while( list( $key, $val ) = each( $this->postData ) )
    {
      if( empty( $this->formStructure["$key"] ) )
        $this->strayFormVariables[] = $key;
    }
  }
  
  function DisplayStructure( $dataArray = '' )
  {
    if( $dataArray == '' )
      $dataArray = $this->formStructure;

    reset( $dataArray );
    while( list( $key, $val ) = each( $dataArray ) )
    {
      echo $key;
      if( is_array( $val ) )
      {
        echo "<br />";
        $this->DisplayStructure( $val );
      } else
        echo " => ". $val ."<br />";
    }
  }
}