PHP自动生成表单的Form类

n672的头像 n672 17 2015-02-07 22:47 3

 基本信息

× 1   

浏览数: 6809

分享时间: 4 年 前

4
<?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>


12 [下一页]

  • jhoneila的头像 jhoneila 2019-01-13 17:05 代码数:0

    The website is looking bit flashy and it catches the visitors eyes. Design is pretty simple and a good user friendly interface.Club Control

  • jhoneila的头像 jhoneila 2019-01-15 19:22 代码数:0

    I am hoping the same best effort from you in the future as well. In fact your creative writing skills has inspired me. Find more information

  • jhoneila的头像 jhoneila 2019-01-16 21:14 代码数:0

    This is my first time i visit here. I found so many interesting stuff in your blog especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all the enjoyment here! keep up the good worknews   news 

  • JuNnoOb的头像 JuNnoOb 2019-01-17 14:02 代码数:0

    233

  • jhoneila的头像 jhoneila 2019-01-19 17:39 代码数:0

    I recently came across your blog and have been reading along. I thought I would leave my first comment. I don't know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often. amazon product ranking service

  • jhoneila的头像 jhoneila 2019-01-23 16:18 代码数:0

    You completed a few fine points there. I did a search on the subject and found nearly all persons will go along with with your blog. kpop shop

  • jhoneila的头像 jhoneila 2019-01-27 18:01 代码数:0

    I found this is an informative and interesting post so i think so it is very useful and knowledgeable. I would like to thank you for the efforts you have made in writing this article. labour jobs Toronto

  • jhoneila的头像 jhoneila 2019-02-02 18:09 代码数:0

    I have read your blog it is very helpful for me. I want to say thanks to you. I have bookmark your site for future updates. news 24 @ABC

  • zuizuimao的头像 zuizuimao 2016-02-05 12:52 代码数:0
    谢谢!能给出复选框和单选框的示例么?
  • jhoneila的头像 jhoneila 2019-02-04 16:43 代码数:0

    I found this is an informative and interesting post so i think so it is very useful and knowledgeable. I would like to thank you for the efforts you have made in writing this article.SR&ED tax Consultant

您的评论: