当前位置:首页 > PHP教程 > php应用 > 列表

PHP自动生成表单代码分享

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-29 14:30:03 浏览: 评论:0 

在PHP开发过程中,我们有时候会遇到表单不固定的情况,需要在程序运行过程中动态生成,这里分享一个PHP自动创建表单的类给大家

Form.php

  1. <?php 
  2. //Form.php 
  3. class form { 
  4.     var $layout=true;//是否使用表格布局 
  5.     var $action;//表单要提交到的URL 
  6.     var $method
  7.     var $enctype=""
  8.     var $name=""
  9.     var $id=""
  10.     var $class=""
  11.     function form($action,$method="POST"){  //通过构造函数初始化成员变量 
  12.         $this->action=$action
  13.         $this->method=$method
  14.     } 
  15.     function form_start(){ 
  16.         $text="<form action=\"{$this->action}\" method=\"{$this->method}\""
  17.         if($this->class!==""){ 
  18.             $text.=" class=\"{$this->class}\""
  19.         } 
  20.         if ($this->enctype!=="") { 
  21.             $text.=" enctype=\"{$this->enctype}\""
  22.         } 
  23.         if($this->id!==""){ 
  24.             $text.=" id=\"{$this->id}\""
  25.         } 
  26.         if($this->name!==""){ 
  27.             $text.=" name=\"{$this->name}\""
  28.         } 
  29.         $text.=">\n"
  30.         if($this->layout==true){ 
  31.             $text.="<table>\n"
  32.         } 
  33.         return $text
  34.     } 
  35.     function form_end(){ 
  36.         if ($this->layout==true) { 
  37.             $text="\t</table>\n"
  38.             $text.="</form>\n"
  39.         }else { 
  40.             $text="</form>\n"
  41.         } 
  42.         return $text
  43.     } 
  44.     //文本框函数 
  45.     function form_text($name,$id,$label_name,$label_for,$value=""){ 
  46.         $text="<input type=\"text\" name=\"{$name}\" "
  47.         $text.="id=\"{$id}\" "
  48.         if(isset($value)){ 
  49.             $text.="value=\"{$value}\" "
  50.         } 
  51.         $text.="/>\n"
  52.         $label=$this->form_label($label_name,$label_for); 
  53.         $form_item=$this->form_item($label,$text); 
  54.         return $form_item
  55.     } 
  56.     //密码框函数 
  57.     function form_passwd($name,$id,$label_name,$label_for,$value=""){ 
  58.         $text="<input type=\"password\" name=\"{$name}\" "
  59.         $text.="id=\"{$id}\" "
  60.         if(isset($value)){ 
  61.             $text.="value=\"{$value}\" "
  62.         } 
  63.         $text.="/>\n"
  64.         $label=$this->form_label($label_name,$label_for); 
  65.         $form_item=$this->form_item($label,$text); 
  66.         return $form_item
  67.     } 
  68.     //隐藏域函数 
  69.     function form_hidden($name,$id,$label_name,$label_for,$value=""){ 
  70.         $text="<input type=\"hidden\" name=\"{$name}\" id=\"{$id}\" "
  71.         if(isset($value)){ 
  72.             $text.="value=\"{$value}\" "
  73.         } 
  74.         $text.="/>\n"
  75.         $label=$this->form_label($label_name,$label_for); 
  76.         $form_item=$this->form_item($label,$text); 
  77.         return $form_item
  78.     } 
  79.     //文件域函数 
  80.     function form_file($name,$id,$label_name,$label_for,$size=""){ 
  81.         $text="<input type=\"file\" name=\"{$name}\" "
  82.         $text.="id=\"{$id}\" "
  83.         if(isset($size)){ 
  84.             $text.="size=\"{$size}\" "
  85.         } 
  86.         $text.="/>\n"
  87.         $label=$this->form_label($label_name,$label_for); 
  88.         $form_item=$this->form_item($label,$text); 
  89.         return $form_item
  90.     } 
  91.     //复选框函数 
  92.     function form_checkbox($name,$label=array(),$label_name,$label_for=""){ 
  93.         $i=0; 
  94.         $text=array(); 
  95.         foreach ($label as $id=>$value){ 
  96.             $text[$i]="<input type=\"checkbox\" id=\"{$id}\" name=\"{$name}\" value=\"{$value}\" />"
  97.             $text[$i].="<label for=\"{$id}\">{$value}</label>"
  98.             $i++; 
  99.         } 
  100.         $label=$this->form_label($label_name,$label_for); 
  101.         $form_item=$this->form_item($label,$text); 
  102.         return $form_item
  103.     } 
  104.     //单选框函数 
  105.     function form_radio($name,$label=array(),$label_name,$label_for=""){ 
  106.         $i=0; 
  107.         $text=array(); 
  108.         foreach ($label as $id=>$value){ 
  109.             $text[$i]="<input type=\"radio\" id=\"{$id}\" name=\"{$name}\" value=\"{$value}\" />"
  110.             $text[$i].="<label for=\"{$id}\">{$value}</label>"
  111.             $i++; 
  112.         } 
  113.         $label=$this->form_label($label_name,$label_for); 
  114.         $form_item=$this->form_item($label,$text); 
  115.         return $form_item
  116.     } 
  117.     //下拉菜单函数 
  118.     function form_select($id,$name,$options=array(),$selected=false,$label_name,$label_for,$onchange=""){ 
  119.         if($onchange!==""){ 
  120.             $text="<select id=\"{$id}\" name=\"{$name}\" onchang=\"{$onchange}\">\n"
  121.         } 
  122.         else
  123.             $text="<select id=\"{$id}\" name=\"{$name}\">\n"
  124.         } 
  125.         foreach ($options as $value=>$key){ 
  126.             if($selected==$value){ 
  127.                 $text.="\t<option valute=\"{$value}\" selected=\"selected\">{$key}</option>\n"
  128.             }elseif ($selected===false) {             
  129.                 $text.="\t<option value=\"{$value}\">{$key}</option>\n"
  130.             } 
  131.         } 
  132.         $text.="</select>"
  133.         $label=$this->form_label($label_name,$label_for); 
  134.         $form_item=$this->form_item($label,$text); 
  135.         return $form_item
  136.     } 
  137.     //多选列表函数 
  138.     function form_selectmul($id,$name,$size,$options=array(),$label_name,$label_for){ 
  139.         $text="<select id=\"{$id}\" name=\"{$name}\" size=\"{$size}\" multiple=\"multiple\">\n"
  140.         foreach ($options as $value=>$key){ 
  141.             $text.="\t<option value=\"{$value}\">{$key}</option>\n"
  142.         } 
  143.         $text.="</select>\n"
  144.         $label=$this->form_label($label_name,$label_for); 
  145.         $form_item=$this->form_item($label,$text); 
  146.         return $form_item
  147.     } 
  148.     //按钮函数 
  149.     function form_button($id,$name,$type,$value,$onclick=""){ 
  150.         $text="<button id=\"{$id}\" name=\"{$name}\" type=\"{$type}\""
  151.         if($onclick!==""){ 
  152.             $text.=" onclick='{$onclick}'"
  153.         } 
  154.         $text.=">".$value
  155.         $text.="</button>\n"
  156.         if($this->layout==true){ 
  157.             $form_item="<tr>\n\t<th> </th><td>{$text}</td>\n</tr>\n"
  158.         }else { 
  159.             $form_item=$text
  160.         } 
  161.         return $form_item
  162.     } 
  163.     //文本域函数 
  164.     function form_textarea($id,$name,$cols,$rows,$label_name,$label_for,$value=""){ 
  165.         $text="<textarea id=\"{$id}\" name=\"{$name}\" cols=\"{$cols}\" rows=\"{$rows}\">{$value}</textarea>\n"
  166.         $label=$this->form_label($label_name,$label_for); 
  167.         $form_item=$this->form_item($label,$text); 
  168.         return $form_item
  169.     } 
  170.     //文字标签函数 
  171.     function form_label($text,$for){ 
  172.         if($for!==""){ 
  173.             $label="<label for=\"{$for}\">{$text}:</label>"
  174.         }else { 
  175.             $label=$text.":"
  176.         } 
  177.         return $label
  178.     } 
  179.     function form_item($form_label,$form_text){ 
  180.         switch ($this->layout){ 
  181.             case true: 
  182.                 $text="<tr>\n"
  183.                 $text.="\t<th class=\"label\">"
  184.                 $text.=$form_label
  185.                 $text.="</th>\n"
  186.                 $text.="\t<td>"
  187.                 $text.=$form_text
  188.                 $text.="</td>\n"
  189.                 $text.="</tr>\n"
  190.                 break
  191.             case false: 
  192.                 $text=$form_label
  193.                 $text.=$form_text
  194.                 break
  195.         } 
  196.         return $text
  197.     } 
  198.     function CreateForm($form_item=array()){ 
  199.         echo $this->form_start(); 
  200.         foreach ($form_item as $item){ 
  201.             echo $item
  202.         } 
  203.         echo $this->form_end(); 
  204.     } 
  205. ?> 

使用示例:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh" lang="zh"
  3. <head> 
  4.     <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  5.     <link rel="stylesheet" type="text/css" href="css/styles.css" /> 
  6.     <title>用户登录</title> 
  7. </head> 
  8. <body> 
  9. <?php 
  10. require_once("form.php"); 
  11. $form=new form($_SERVER['PHP_SELF']);   //提交到本页 
  12. $form->layout=false;                   //不使用表格布局,大家可以把这句注释掉看结果有何不同 
  13. $name=$form->form_text("userid","userid","用户名","userid"); 
  14. $passwd=$form->form_passwd("passwd","passwd","密码","passwd"); 
  15. $submit=$form->form_button("","submit","submit","登录"); 
  16. $form_item=array($name,$passwd,$submit); 
  17. $form->CreateForm($form_item); 
  18. ?> 
  19. </body> 
  20. </html>

Tags: PHP自动生成表单

分享到: