PHP阶段案例之Web表单生成器

  • ① 准备表单
  • ② 定义表单生成函数
  • 效果图
  • 原码奉上

① 准备表单


这里是用form.php文件来保存表单信息,通过$element元素以数组的形式来保存需要生成的表单项,然后在form中调用我后面介绍的表单生成函数即可。***【注意:文件后缀是.php,而不是.html;在html文件中php代码会被注释,但是html代码却可以在php文件中正常使用。】***

② 定义表单生成函数

编写一个generate.php文件用于存放表单生成函数,generate()负责分配任务给其他函数,然后通过各种拆分组合后返回html代码。(图片中含详细解释)

  • generate()函数与generate_attr()函数

  • generate_input()函数
  • generate_select()函数
  • generate_textarea()函数

效果图

原码奉上

form.php文件完整代码

<?PHP
require 'generate.php';   //引入表单生成函数
//  -------------准备表单数组$elements------------
//定义一个变量$elements用于保存需要生成的表单项,
$elements = [0=>['tag'  => 'input',                              //tag元素用于保存标签'text' => '姓 名:',                            //text元素用于保存提示文本'attr' => ['type'=>'text','name'=>'username']  //attr元素用于保存表单元素属性],1=>['tag'  => 'input',                            'text' => '邮 箱:',                           'attr' => ['type'=>'text','name'=>'email'] ],2=>['tag'  => 'input',   'text' => '手机号码:', 'attr' => ['type'=>'text','name'=>'phone_number'], ],3=>['tag' => 'input',                               'text' => '性 别:','attr' => ['type'=>'radio','name'=>'gender'],'option'=>['m'=>'男','w'=>'女'],   //option元素用于保存单选框或复选框中的每一个选项'default'=>'w'                     //default元素用于保存默认值],4=>['tag' => 'input',                               'text' => '爱 好:','attr' => ['type'=>'checkbox','name'=>'hobby[]'],'option'=>['swimming'=>'游泳','reading'=>'读书','runing'=>'跑步'],   //option元素用于保存单选框或复选框中的每一个选项'default'=>['swimming','runing']                                    //default元素用于保存默认值],5=>['tag' => 'select',                               'text' => '住 址:','attr' => ['name'=>'address'],'option'=>[''=>'--请选择--','chongqing'=>'重庆','beijin'=>'北京','shanghai'=>'上海','guangzhou'=>'广州'],  ],6=>['tag'  => 'textarea',                            'text' => '自我介绍:',                           'attr' => ['name'=>'self_introduction','cols'=>'40','rows'=>'5'] ],7=>['tag'  => 'input',                                                    'attr' => ['type'=>'submit','value'=>'提交'] ]
];
?>
<!doctype html>
<html lang="en"><head><meta charset="utf-8"><title>Web表单生成器</title><link rel="stylesheet" href="style.css"></head><body><div>个人信息</div><form method="post"><?=generate($elements)?></form></body>
</html>

generate.php文件完整代码

<?php
//用于保存表单
function generate($elements){$item = '';                                                  //$item用于保存拼接结果$default = ['tag'=>'','text'=>'','attr'=>[],'option'=>[],'default'=>''];foreach($elements as $v){$v = array_merge($default,$v);                            //array_merge 用于合并一个或多个数组$generate = 'generate_'.array_shift($v);                  //array_shift 将数组开头的单元移出数组 $v['attr'] = generate_attr($v['attr']);                   //将属性数组转化为HTML格式  这句很关键!!!$item.='<tr>'.call_user_func_array($generate,$v).'</tr>'; //call_user_func_array 调用回调函数,并把一个数组参数作为回调函数的参数}return "<table>$item</table>";
}//实现表单元素的拼接
function generate_attr($attr,$items=''){   //$attr是一个一维关联数组 保存的表单元素属性foreach($attr as $k => $v){            //$items用于保存属性拼接的字符串$items .= " $k=\"$v\" ";}return $items;
}//input控件的生成
function generate_input($text,$attr,$option,$default){if(empty($option)){                                                //判断$option是否为空//拼接type属性值为text、password、hidden、reset、submit$items = "<input $attr value=\"$default\">";}else {//拼接type属性值为radio、checkbox的元素$items = '';foreach($option as $k=>$v){$checked = in_array($k,(array)$default,true)?'checked':'';  //in_array 检查数组中是否存在某个值$items .= "<lable><input $checked $attr value=\"$k\">$v</lable>";}}return "<th>$text</th><td>$items</td>";
}//拼接select下拉列表
function generate_select($text,$attr,$option,$default){$items = '';foreach($option as $k=>$v){                                     //foreach用于拼接下拉列表选项$selected = ($default ===$k)?'selected':'';$items .= "<option $selected value=\"$k\">$v</option>";}$select = "<select $attr>$items</select>";                      //完成selec标签的完整拼接return "<th>$text</th><td>$select</td>";                        //返回含有描述信息的拼接结果
}//拼接textarea文本区 元素
function generate_textarea($text,$attr,$option,$default){$textarea = "<textarea $attr>$default</textarea>";return "<th>$text</th><td>$textarea</td>";
}?>

PHP阶段案例之Web表单生成器相关推荐

  1. 用php实现一个简易的web表单生成器,网络编程PHP Web表单生成器案例分析

    本文实例讲述了PHP Web表单生成器.分享给大家供大家参考,具体如下: 1.实例: 2. 需求分析 在项目的实际开发中,经常需要设计各种各样表单.直接编写HTML表单虽然简单,但修改.维护相对麻烦. ...

  2. 用php实现一个简易的web表单生成器,PHP—Web表单生成器

    1.实例: 2. 需求分析 在项目的实际开发中,经常需要设计各种各样表单.直接编写HTML表单虽然简单,但修改.维护相对麻烦. 因此,可以利用PHP实现一个Web表单生成器,使其可以根据具体的需求定制 ...

  3. PHP web表单生成器(函数部分)的理解

    <?phpinclude "data1.php"; //调用函数名为data1.php中的数组function Gross(){global $data;$html=&quo ...

  4. Flask Web表单

    title: flask学习笔记 subtitle: 3. flask Web表单 date: 2018-12-14 10:17:28 --- Web表单 HTML表单是用户和web站点或应用程序之间 ...

  5. Flask之Web表单使用

    Web表单使用 @(Flask) request对象包含客户端发出的所有请求信息. request.form能获取POST请求中提交的表单数据. 使用的包 Flask-WTF可以把处理Web表单的过程 ...

  6. Uniapp微信小程序实现简易生成表单生成器

    在开发一些填报小程序,一些小型办公小程序的时候,难免会遇到较多的需要填写的表单信息,纯手撸表单耗时耗力. TIP:类似于这种十种类型的表单,每种类型的表单并不一样 下面将分为三个部分 一.创建对应类型 ...

  7. 选择一个表单生成器:比较7种最佳WordPress表单生成器

    如果您拥有WordPress网站,则有时甚至需要一个Web表单,即使它只是一个简单的联系表单. 届时, WordPress表单生成器插件将是您最好的朋友,但是您如何决定在可用的大量表单生成器中最有效地 ...

  8. html在线表单生成器,表单生成器.html

    表单生成器 body{margin-top:20px;} .box{font-family:Tahoma,simsun;font-size:12px;border:1px solid #1678BE; ...

  9. 使用 PEAR的Text_CAPTCHA保护Web表单[翻译]

    使用 PEAR的Text_CAPTCHA保护Web表单 作者 Marcus Whitney 翻译 mikespook 来源 http://phpsec.org 当你在网络上有公开的表单的时候,你总是需 ...

  10. 【Web安全】PHP与Web表单交互-POST方法与GET方法(看不懂你来打我)

    PHP与Web页面交互是实现PHP网站与用户交互的重要手段.在PHP中提供了两种与Web页面交互的方法,一种是通过Web表单提交数据,另一种是通过URL参数传递. 这里我们将详细讲解表单的相关知识,为 ...

最新文章

  1. javascript callback函数的理解与使用
  2. 测试工具–super-mack
  3. Java 获取 URL 响应头信息
  4. jQuery学习笔记02:核心部分
  5. 前端程序员 学习书籍推荐
  6. Vector CANape - How to Send Receive CAN Message in CANape
  7. 大数据第一季--java基础(day5)-徐培成-专题视频课程
  8. android设置wifi蓝牙共享网络,Android无线网络共享设置指南
  9. DTCC2019 中国数据库技术大会见证实录(PPT 下载,来了!)
  10. 突破与改变:酒店品牌的中高端之战
  11. java-微信语言amr文件转码为Mp3文件
  12. 亚马逊服务器运行软件,如何在亚马逊的EC2上运行Java服务器?
  13. Java题-古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
  14. 盘点2018年化工行业大事故!回顾那些令人心痛的瞬间......
  15. 没有计算机网络地址怎么办,教大家电脑没有ip地址mac地址怎么办
  16. java中char数据类型的使用
  17. w10解决qq,微信语音自己说话别人听不到
  18. CVer最想知道的,简单分析下《2020年度中国计算机视觉人才调研报告》
  19. Android 架构之长连接技术
  20. 关于递归算法设计的思考

热门文章

  1. php楼梯有n级台阶,楼梯问题的一些解决方法
  2. 芯片的组成材料是什么?详述芯片分类
  3. 3des加密及解密处理
  4. 如何用C语言实现批量修改文件类型
  5. VBA 数据透视表的创建
  6. C#中使用listview的checkBoxs全选和取消全选
  7. niosii 把程序固化到epcs中的步骤
  8. dede flag标签用法
  9. 注册表改win 7更新服务器,uefi安装win7卡在更新注册表设置解决新方法(完美解决)...
  10. 输入阻抗、输出阻抗、阻抗匹配和特性阻抗