PHP自动生成表单的方法

阅读量:30
2021-04-18

本篇文章主要介绍PHP自动生成表单的方法,感兴趣的朋友参考下,希望对大家有所帮助。

在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>nt<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 "/DTD XHTML 1.0 /EN" "">
<html xmlns="" xml:lang="zh" lang="zh">
<head>
    <meta "Content-Type" content="/html; charset=gb2312" />
    <link rel="stylesheet" type="/css" href="https://www.php.cn/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>

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

php针对数据库的读写操作及随机数等操作

php动态创建文件夹及文件上传的方法

php针对数据库的读写操作及随机数等操作

以上就是PHP自动生成表单的方法的详细内容,更多请关注星网无限其它相关文章!

声明:本文原创发布星网无限,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@处理

THE END

发表评论

相关推荐

  • 有关fgets()函数的文章推荐10篇

    以下正文:这篇文章主要介绍了PHP文件读写操作相关函数总结,本文总结了fwrite()、fread()、fgets()、fgetc()、file()、readf ...

    阅读量:66
    2021-04-19
  • php递归与无限分类实例详解

    这篇文章主要介绍了php实现递归与无限分类的方法,涉及php的递归操作技巧,需要的朋友可以参考下本文实例讲述了php实现递归与 ...

    阅读量:45
    2021-04-19
  • CI框架中zip类的使用

    CI框架自带的zip类简单实用,本文就来简单说一下ci框架的zip类的使用,需要的朋友可以参考下CI框架自带的zip类简单实用,本文 ...

    阅读量:44
    2021-04-18
  • SWFUpload插件上传文件的代码

    这篇文章主要介绍了文件上传之SWFUpload插件(代码),实现此代码主要分为两部分:1.前台文件和 2.后台文件upload.php,需要 ...

    阅读量:42
    2021-04-18
  • 关于destoon的URL Rewrite设置方法

    这篇文章主要介绍了destoon的URL Rewrite(伪静态)设置方法,需要的朋友可以参考下1、如果您的服务器支持.htaccess,则无需设 ...

    阅读量:47
    2021-04-18