Posted By

hasantayyar on 07/06/09


Tagged

form php array


Versions (?)

Who likes this?

1 person have marked this snippet as a favorite

hasantayyar


array2form


 / Published in: PHP
 

URL: http://www.phpclasses.org/browse/file/27381.html

  1. <?php
  2. /**
  3.  *  array2form
  4.  *  written by: Mark Berube 
  5.  *  Takes an array of form input parameters and builds form rows in a 2 column vertical layout table format
  6.  *    In addition to the common form inputs, there are two custom form input this class will interpret:
  7.  *    1. date: creates a text input which is populated from clicking an icon pointed to any javascript calendar script
  8.  *    2. custom: creates a text input which is populated from clicking an icon pointed to any javascript function(useful for sql queries etc))
  9.  *    See accompanying expample page for more detailed usage
  10.  */ 
  11. class array2form{
  12.   public $icon_dir   = './';
  13.   public $cal_icon   = 'calicon2_20.png';
  14.   public $cust_icon  = '1downarrow.png';
  15.   
  16.     function array2form($input_array){
  17.             $rows = "";
  18.             foreach($input_array as $input){
  19.                 $params = $this->get_input_params($input);
  20.                 $type = strtolower($params['type']);
  21.                     switch ($type){
  22.                         case 'text':
  23.                             $form_input = $this->get_text_input($params['name'],$params['values'], $params['size']);
  24.                         break;
  25.                         case 'radio':
  26.                             $form_input = $this->get_radio_input($params['name'],$params['values']);
  27.                         break;
  28.                         case 'checkbox':
  29.                             $form_input = $this->get_check_input($params['name'],$params['values']);
  30.                         break;
  31.                         case 'select':
  32.                             $form_input = $this->get_select_input($params['name'],$params['values']);
  33.                         break;
  34.                         case 'textarea':
  35.                             $form_input = $this->get_textarea_input($params['name'],$params['size']);
  36.                         break;
  37.                         case 'custom':
  38.                             $form_input = $this->text_from_script_call($params['name'],$params['values'],$params['size'],$params['script']);
  39.                         break;
  40.                         case 'date':
  41.                             $form_input = $this->get_date_input($params['name'],'',$params['script']);
  42.                         break;
  43.                     }
  44.                 $row = "\n<tr>\n\t<td class=\"form_heading\">\n\t\t".$params['label']."\n\t</td>\n\t<td class=\"form_input\" nowrap>\n\t\t$form_input\n\t</td>\n</tr>";
  45.  
  46.                 $rows .= $row;
  47.             }
  48.     echo $rows;
  49.     }
  50.  
  51.     private function get_input_params($input){
  52.         list($input_type, $heading, $input_name, $values, $input_size, $script_call) = explode('|',$input);
  53.             
  54.               //if the input_name left blank, make one out of the label
  55.               if($input_name == ''){
  56.                 $input_name = str_replace(array(' ',':',',','.','#'),array('_','','','',''),$heading);
  57.                 $input_name = trim(strtolower($input_name));
  58.               }
  59.           $params = array(
  60.                 'type'    => $input_type,
  61.                 'label'   => $heading,
  62.                 'name'    => $input_name,
  63.                 'values'  => $values,
  64.                 'size'    => $input_size,
  65.                 'script'  => $script_call
  66.             );
  67.         return $params;
  68.     }
  69.  
  70.     private function text_from_script_call($input_name, $default_value, $size, $script_call){
  71.         $form_input = "<INPUT TYPE=\"text\" NAME=\"$input_name\" ID=\"$input_name\" SIZE=\"$size\" VALUE=\"$default_value\" readonly>\n";
  72.         $icon = $this->icon_dir . $this->cust_icon;
  73.         $form_input .= "<IMG src=\"1downarrow.png\" onclick=\"$script_call\">\n";
  74.         return $form_input;
  75.     }
  76.  
  77.     private function get_text_input($input_name, $default_value, $size){
  78.         $form_input = "<INPUT TYPE=\"text\" NAME=\"$input_name\" ID=\"$input_name\" SIZE=\"$size\" VALUE=\"$default_value\">\n";
  79.         return $form_input;
  80.     }
  81.  
  82.     private function get_textarea_input($input_name, $size){
  83.         list($cols,$rows) = explode(',',$size);
  84.         $form_input = "<TEXTAREA NAME=\"$input_name\" ID=\"$input_name\" ROWS=\"$rows\" COLS=\"$cols\"></TEXTAREA>\n";
  85.         return $form_input;
  86.     }
  87.  
  88.     private function get_date_input($input_name, $default_value, $script_call){
  89.         $form_input = "<INPUT TYPE=\"text\" NAME=\"$input_name\" ID=\"$input_name\" SIZE=\"10\" MAXLENGTH=\"10\" VALUE=\"$default_value\" readonly>\n";
  90.         $icon = $this->icon_dir . $this->cal_icon;
  91.         $form_input .= "<IMG src=\"$icon\" onclick=\"$script_call\">\n";
  92.         return $form_input;
  93.     }
  94.  
  95.     private function get_radio_input($input_name, $values){
  96.         $search = '(checked)';
  97.         $form_input = "";
  98.         $vals = explode(',',$values);
  99.         foreach($vals as $val){
  100.             if(strpos($val, $search) !== false){
  101.                 $on = true;
  102.                 $val = str_replace($search, '', $val);
  103.             }else{
  104.                 $on = false;
  105.             }
  106.  
  107.  
  108.            $form_input .= "$val<INPUT TYPE=\"radio\" NAME=\"$input_name\" VALUE=\"$val\"";
  109.            $form_input .=  ($on) ? " " .substr($search,1,-1) : "";
  110.            $form_input .= ">&nbsp;&nbsp;\n";
  111.  
  112.         }
  113.          return $form_input;
  114.     }
  115.  
  116.     private function get_check_input($input_name, $values){
  117.         $search = '(checked)';
  118.         $form_input = "";
  119.         $vals = explode(',',$values);
  120.         $count = 0;
  121.         foreach($vals as $val){
  122.  
  123.             if(strpos($val, $search) !== false){
  124.                 $on = true;
  125.                 $val = str_replace($search, '', $val);
  126.             }else{
  127.                 $on = false;
  128.             }
  129.            $form_input .= "$val<INPUT TYPE=\"checkbox\" NAME=\"". $input_name . '['.$count .']' ."\" VALUE=\"$val\"";
  130.            $form_input .= ($on) ? " " .substr($search,1,-1) : "";
  131.            $form_input .= ">&nbsp;&nbsp;\n";
  132.            $count ;
  133.         }
  134.          return $form_input;
  135.     }
  136.  
  137.     private function get_select_input($input_name, $values){
  138.         $search = '(selected)';
  139.         $form_input = "<SELECT NAME=\"$input_name\" ID=\"$input_name\">\n";
  140.         $vals = explode(',',$values);
  141.         foreach($vals as $val){
  142.             if(strpos($val, $search) !== false){
  143.                 $on = true;
  144.                 $val = str_replace($search, '', $val);
  145.             }else{
  146.                 $on = false;
  147.             }
  148.            $form_input .= "\t<OPTION VALUE=\"$val\"";
  149.            $form_input .= ($on) ? " SELECTED=\"" .substr($search,1,-1) . "\"" : "";
  150.            $form_input .= ">$val</OPTION>\n";
  151.         }
  152.         $form_input .= "</SELECT>\n";
  153.     return $form_input;
  154.     }
  155.  
  156.  
  157.  
  158. }
  159.  
  160. ?>

Report this snippet  

You need to login to post a comment.