首页 > 开发 > PHP > 正文

PHP自动生成表单代码分享

2024-05-04 23:36:35
字体:
来源:转载
供稿:网友

在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. function form_start(){ 
  15. $text="<form action=/"{$this->action}/" method=/"{$this->method}/""
  16. if($this->class!==""){ 
  17. $text.=" class=/"{$this->class}/""
  18. if ($this->enctype!=="") { 
  19. $text.=" enctype=/"{$this->enctype}/""
  20. if($this->id!==""){ 
  21. $text.=" id=/"{$this->id}/""
  22. if($this->name!==""){ 
  23. $text.=" name=/"{$this->name}/""
  24. $text.=">/n"
  25. if($this->layout==true){ 
  26. $text.="<table>/n"
  27. return $text
  28. function form_end(){ 
  29. if ($this->layout==true) { 
  30. $text="/t</table>/n"
  31. $text.="</form>/n"
  32. }else { 
  33. $text="</form>/n"
  34. return $text
  35. //文本框函数 
  36. function form_text($name,$id,$label_name,$label_for,$value=""){ 
  37. $text="<input type=/"text/" name=/"{$name}/" "
  38. $text.="id=/"{$id}/" "
  39. if(isset($value)){ 
  40. $text.="value=/"{$value}/" "
  41. $text.="/>/n"
  42. $label=$this->form_label($label_name,$label_for); 
  43. $form_item=$this->form_item($label,$text); 
  44. return $form_item
  45. //密码框函数 
  46. function form_passwd($name,$id,$label_name,$label_for,$value=""){ 
  47. $text="<input type=/"password/" name=/"{$name}/" "
  48. $text.="id=/"{$id}/" "
  49. if(isset($value)){ 
  50. $text.="value=/"{$value}/" "
  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. function form_hidden($name,$id,$label_name,$label_for,$value=""){ 
  57. $text="<input type=/"hidden/" name=/"{$name}/" id=/"{$id}/" "
  58. if(isset($value)){ 
  59. $text.="value=/"{$value}/" "
  60. $text.="/>/n"
  61. $label=$this->form_label($label_name,$label_for); 
  62. $form_item=$this->form_item($label,$text); 
  63. return $form_item
  64. //文件域函数 
  65. function form_file($name,$id,$label_name,$label_for,$size=""){ 
  66. $text="<input type=/"file/" name=/"{$name}/" "
  67. $text.="id=/"{$id}/" "
  68. if(isset($size)){ 
  69. $text.="size=/"{$size}/" "
  70. $text.="/>/n"
  71. $label=$this->form_label($label_name,$label_for); 
  72. $form_item=$this->form_item($label,$text); 
  73. return $form_item
  74. //复选框函数 
  75. function form_checkbox($name,$label=array(),$label_name,$label_for=""){ 
  76. $i=0; 
  77. $text=array(); 
  78. foreach ($label as $id=>$value){ 
  79. $text[$i]="<input type=/"checkbox/" id=/"{$id}/" name=/"{$name}/" value=/"{$value}/" />"
  80. $text[$i].="<label for=/"{$id}/">{$value}</label>"
  81. $i++; 
  82. $label=$this->form_label($label_name,$label_for); 
  83. $form_item=$this->form_item($label,$text); 
  84. return $form_item
  85. //单选框函数 
  86. function form_radio($name,$label=array(),$label_name,$label_for=""){ 
  87. $i=0; 
  88. $text=array(); 
  89. foreach ($label as $id=>$value){ 
  90. $text[$i]="<input type=/"radio/" id=/"{$id}/" name=/"{$name}/" value=/"{$value}/" />"
  91. $text[$i].="<label for=/"{$id}/">{$value}</label>"
  92. $i++; 
  93. $label=$this->form_label($label_name,$label_for); 
  94. $form_item=$this->form_item($label,$text); 
  95. return $form_item
  96. //下拉菜单函数 
  97. function form_select($id,$name,$options=array(),$selected=false,$label_name,$label_for,$onchange=""){ 
  98. if($onchange!==""){ 
  99. $text="<select id=/"{$id}/" name=/"{$name}/" onchang=/"{$onchange}/">/n"
  100. else
  101. $text="<select id=/"{$id}/" name=/"{$name}/">/n"
  102. foreach ($options as $value=>$key){ 
  103. if($selected==$value){ 
  104. $text.="/t<option valute=/"{$value}/" selected=/"selected/">{$key}</option>/n"
  105. }elseif ($selected===false) {  
  106. $text.="/t<option value=/"{$value}/">{$key}</option>/n"
  107. $text.="</select>"
  108. $label=$this->form_label($label_name,$label_for); 
  109. $form_item=$this->form_item($label,$text); 
  110. return $form_item
  111. //多选列表函数 
  112. function form_selectmul($id,$name,$size,$options=array(),$label_name,$label_for){ 
  113. $text="<select id=/"{$id}/" name=/"{$name}/" size=/"{$size}/" multiple=/"multiple/">/n"
  114. foreach ($options as $value=>$key){ 
  115. $text.="/t<option value=/"{$value}/">{$key}</option>/n"
  116. $text.="</select>/n"
  117. $label=$this->form_label($label_name,$label_for); 
  118. $form_item=$this->form_item($label,$text); 
  119. return $form_item
  120. //按钮函数 
  121. function form_button($id,$name,$type,$value,$onclick=""){ 
  122. $text="<button id=/"{$id}/" name=/"{$name}/" type=/"{$type}/""
  123. if($onclick!==""){ 
  124. $text.=" onclick='{$onclick}'"
  125. $text.=">".$value
  126. $text.="</button>/n"
  127. if($this->layout==true){ 
  128. $form_item="<tr>/n/t<th> </th><td>{$text}</td>/n</tr>/n"
  129. }else { 
  130. $form_item=$text
  131. return $form_item
  132. //文本域函数 
  133. function form_textarea($id,$name,$cols,$rows,$label_name,$label_for,$value=""){ 
  134. $text="<textarea id=/"{$id}/" name=/"{$name}/" cols=/"{$cols}/" rows=/"{$rows}/">{$value}</textarea>/n"
  135. $label=$this->form_label($label_name,$label_for); 
  136. $form_item=$this->form_item($label,$text); 
  137. return $form_item
  138. //文字标签函数 
  139. function form_label($text,$for){ 
  140. if($for!==""){ 
  141. $label="<label for=/"{$for}/">{$text}:</label>"
  142. }else { 
  143. $label=$text.":"
  144. return $label
  145. function form_item($form_label,$form_text){ 
  146. switch ($this->layout){ 
  147. case true: 
  148. $text="<tr>/n"
  149. $text.="/t<th class=/"label/">"
  150. $text.=$form_label
  151. $text.="</th>/n"
  152. $text.="/t<td>"
  153. $text.=$form_text
  154. $text.="</td>/n"
  155. $text.="</tr>/n"
  156. break
  157. case false: 
  158. $text=$form_label
  159. $text.=$form_text
  160. break
  161. return $text
  162. function CreateForm($form_item=array()){ 
  163. echo $this->form_start(); 
  164. foreach ($form_item as $item){ 
  165. echo $item
  166. echo $this->form_end(); 
  167. ?> 

使用示例:

 

 
  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> 

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表