在PHP开发过程中,我们有时候会遇到表单不固定的情况,需要在程序运行过程中动态生成,这里分享一个PHP自动创建表单的类给大家
Form.php
- <?php
- //Form.php
- class form {
- var $layout=true;//是否使用表格布局
- var $action;//表单要提交到的URL
- var $method;
- var $enctype="";
- var $name="";
- var $id="";
- var $class="";
- function form($action,$method="POST"){ //通过构造函数初始化成员变量
- $this->action=$action;
- $this->method=$method;
- }
- function form_start(){
- $text="<form action=/"{$this->action}/" method=/"{$this->method}/"";
- if($this->class!==""){
- $text.=" class=/"{$this->class}/"";
- }
- if ($this->enctype!=="") {
- $text.=" enctype=/"{$this->enctype}/"";
- }
- if($this->id!==""){
- $text.=" id=/"{$this->id}/"";
- }
- if($this->name!==""){
- $text.=" name=/"{$this->name}/"";
- }
- $text.=">/n";
- if($this->layout==true){
- $text.="<table>/n";
- }
- return $text;
- }
- function form_end(){
- if ($this->layout==true) {
- $text="/t</table>/n";
- $text.="</form>/n";
- }else {
- $text="</form>/n";
- }
- return $text;
- }
- //文本框函数
- function form_text($name,$id,$label_name,$label_for,$value=""){
- $text="<input type=/"text/" name=/"{$name}/" ";
- $text.="id=/"{$id}/" ";
- if(isset($value)){
- $text.="value=/"{$value}/" ";
- }
- $text.="/>/n";
- $label=$this->form_label($label_name,$label_for);
- $form_item=$this->form_item($label,$text);
- return $form_item;
- }
- //密码框函数
- function form_passwd($name,$id,$label_name,$label_for,$value=""){
- $text="<input type=/"password/" name=/"{$name}/" ";
- $text.="id=/"{$id}/" ";
- if(isset($value)){
- $text.="value=/"{$value}/" ";
- }
- $text.="/>/n";
- $label=$this->form_label($label_name,$label_for);
- $form_item=$this->form_item($label,$text);
- return $form_item;
- }
- //隐藏域函数
- function form_hidden($name,$id,$label_name,$label_for,$value=""){
- $text="<input type=/"hidden/" name=/"{$name}/" id=/"{$id}/" ";
- if(isset($value)){
- $text.="value=/"{$value}/" ";
- }
- $text.="/>/n";
- $label=$this->form_label($label_name,$label_for);
- $form_item=$this->form_item($label,$text);
- return $form_item;
- }
- //文件域函数
- function form_file($name,$id,$label_name,$label_for,$size=""){
- $text="<input type=/"file/" name=/"{$name}/" ";
- $text.="id=/"{$id}/" ";
- if(isset($size)){
- $text.="size=/"{$size}/" ";
- }
- $text.="/>/n";
- $label=$this->form_label($label_name,$label_for);
- $form_item=$this->form_item($label,$text);
- return $form_item;
- }
- //复选框函数
- function form_checkbox($name,$label=array(),$label_name,$label_for=""){
- $i=0;
- $text=array();
- foreach ($label as $id=>$value){
- $text[$i]="<input type=/"checkbox/" id=/"{$id}/" name=/"{$name}/" value=/"{$value}/" />";
- $text[$i].="<label for=/"{$id}/">{$value}</label>";
- $i++;
- }
- $label=$this->form_label($label_name,$label_for);
- $form_item=$this->form_item($label,$text);
- return $form_item;
- }
- //单选框函数
- function form_radio($name,$label=array(),$label_name,$label_for=""){
- $i=0;
- $text=array();
- foreach ($label as $id=>$value){
- $text[$i]="<input type=/"radio/" id=/"{$id}/" name=/"{$name}/" value=/"{$value}/" />";
- $text[$i].="<label for=/"{$id}/">{$value}</label>";
- $i++;
- }
- $label=$this->form_label($label_name,$label_for);
- $form_item=$this->form_item($label,$text);
- return $form_item;
- }
- //下拉菜单函数
- function form_select($id,$name,$options=array(),$selected=false,$label_name,$label_for,$onchange=""){
- if($onchange!==""){
- $text="<select id=/"{$id}/" name=/"{$name}/" onchang=/"{$onchange}/">/n";
- }
- else{
- $text="<select id=/"{$id}/" name=/"{$name}/">/n";
- }
- foreach ($options as $value=>$key){
- if($selected==$value){
- $text.="/t<option valute=/"{$value}/" selected=/"selected/">{$key}</option>/n";
- }elseif ($selected===false) {
- $text.="/t<option value=/"{$value}/">{$key}</option>/n";
- }
- }
- $text.="</select>";
- $label=$this->form_label($label_name,$label_for);
- $form_item=$this->form_item($label,$text);
- return $form_item;
- }
- //多选列表函数
- function form_selectmul($id,$name,$size,$options=array(),$label_name,$label_for){
- $text="<select id=/"{$id}/" name=/"{$name}/" size=/"{$size}/" multiple=/"multiple/">/n";
- foreach ($options as $value=>$key){
- $text.="/t<option value=/"{$value}/">{$key}</option>/n";
- }
- $text.="</select>/n";
- $label=$this->form_label($label_name,$label_for);
- $form_item=$this->form_item($label,$text);
- return $form_item;
- }
- //按钮函数
- function form_button($id,$name,$type,$value,$onclick=""){
- $text="<button id=/"{$id}/" name=/"{$name}/" type=/"{$type}/"";
- if($onclick!==""){
- $text.=" onclick='{$onclick}'";
- }
- $text.=">".$value;
- $text.="</button>/n";
- if($this->layout==true){
- $form_item="<tr>/n/t<th> </th><td>{$text}</td>/n</tr>/n";
- }else {
- $form_item=$text;
- }
- return $form_item;
- }
- //文本域函数
- function form_textarea($id,$name,$cols,$rows,$label_name,$label_for,$value=""){
- $text="<textarea id=/"{$id}/" name=/"{$name}/" cols=/"{$cols}/" rows=/"{$rows}/">{$value}</textarea>/n";
- $label=$this->form_label($label_name,$label_for);
- $form_item=$this->form_item($label,$text);
- return $form_item;
- }
- //文字标签函数
- function form_label($text,$for){
- if($for!==""){
- $label="<label for=/"{$for}/">{$text}:</label>";
- }else {
- $label=$text.":";
- }
- return $label;
- }
- function form_item($form_label,$form_text){
- switch ($this->layout){
- case true:
- $text="<tr>/n";
- $text.="/t<th class=/"label/">";
- $text.=$form_label;
- $text.="</th>/n";
- $text.="/t<td>";
- $text.=$form_text;
- $text.="</td>/n";
- $text.="</tr>/n";
- break;
- case false:
- $text=$form_label;
- $text.=$form_text;
- break;
- }
- return $text;
- }
- function CreateForm($form_item=array()){
- echo $this->form_start();
- foreach ($form_item as $item){
- echo $item;
- }
- echo $this->form_end();
- }
- }
- ?>
使用示例:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh" lang="zh">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- <link rel="stylesheet" type="text/css" href="css/styles.css" />
- <title>用户登录</title>
- </head>
- <body>
- <?php
- require_once("form.php");
- $form=new form($_SERVER['PHP_SELF']); //提交到本页
- $form->layout=false; //不使用表格布局,大家可以把这句注释掉看结果有何不同
- $name=$form->form_text("userid","userid","用户名","userid");
- $passwd=$form->form_passwd("passwd","passwd","密码","passwd");
- $submit=$form->form_button("","submit","submit","登录");
- $form_item=array($name,$passwd,$submit);
- $form->CreateForm($form_item);
- ?>
- </body>
- </html>
以上所述就是本文的全部内容了,希望大家能够喜欢。
新闻热点
疑难解答