百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> 案例剖析PHP Web表单生成器
分享文章到:

案例剖析PHP Web表单生成器

发布时间:09/01 来源:未知 浏览: 关键词:

2. 需求剖析

在项目的实际开发中,经常需要设计许许多多表单。直接编写HTML表单虽然简便,但修改、保护相对费事。
因此,可以利用PHP实现一个Web表单生成器,使其可以按照详细的需求定制不一样功效的表单。详细实现需求如下:

  • 使用多维数组留存表单的相关信息
  • 支撑的表单项包罗文本框、文本域、单选框、复选框和下拉列表5品种型
  • 留存每个表单项的标志、提醒文本、属性、选项值、默许值等
  • 将功效封装成函数,按照传递的参数生成指定的表单

数据的留存情势决议了程序实现的方式。
因此,按照上述开发要求,可以将每个表单项作为一个数组元素,每个元素利用一个关联数组描写,离别为:标志tag、提醒文本text、属性数组attr、选项数组option和默许值default。

在这里插入图片描述

3.案例实现

1.预备表单

表单的主要功效:就是在网页上用于输入信息的区域,收集会员输入的信息,并将其提交给后端的效劳器停止处置,实现会员与效劳器的交互。
例如:购物结算、信息搜索等都是通过表单实现的。

2.预备表单——创立表单

一个完全的表单是由表单域和表单控件组成的。其中,表单域由form标志定义,用于实现会员信息的收集和传递。

<form action="form.php" method="post" enctype="multipart/form-data">
  <!-- 各种表单控件 -->
</form>

“<!-- –>”是HTML的注释标志,用于说明和说明。

在这里插入图片描述

  • action属性的值可以是绝对途径、相对途径,若省略该属性则表示提交给当前文件停止处置。
    GET方式传递的表单在URL地址栏中可见。
    比拟GET方式,POST方式提交的数据是不成见的,在交互时相对平安。因此,平常状况下使用POST方式提交表单数据。
  • enctype属性的默许值为application/x-www-form-urlencoded,表示在发送表单数据前编码所有字符。除此之外还可以设定为multipart/form-data(POST方式)表示不停止字符编码,特别是含有文件上传的表单必需使用该值;设定为text/plain(POST方式)表示传输一般文本。

3.预备表单—表单控件

//input控件
<input type="text" name="user" value="test">	<!-- 文本框 -->
<input type="password" name="pwd" value="">		<!-- 密码框 -->
<input type="file" name="upload">     		<!-- 文件上传域 -->
<input type="hidden" name="id" value="2"> 		<!-- 潜藏域 -->
<input type="reset" value="重置">     		<!-- 重置按钮 -->
<input type="submit" value="提交">    		<!-- 提交按钮 -->
  • type属性设定不一样的值,即可得到不一样的表单控件
  • name属性用于指定控件的名称,用以区分表单中多个雷同的控件
  • value属性用于设定表单控件的默许值
//input控件
<!-- 单选框 -->
<input type="radio" name="gender" value="m" checked> 男
<input type="radio" name="gender" value="w"> 女
<!-- 复选框 -->
<input type="checkbox" name="hobby[]" value="swimming"> 游泳
<input type="checkbox" name="hobby[]" value="reading"> 读书
<input type="checkbox" name="hobby[]" value="running"> 跑步
  • checked属性用于设定默许选中项
//textarea控件
<textarea name="introduce" cols="5" rows="10">
<!-- 文本内容 -->
</textarea>
  • textarea控件适用于自我评论、评论等大概需要输入大量信息的功效
  • 属性cols和rows用于定义文本域的高度和宽度
//select控件
<select name="area">
  <option selected>--请选中--</option>
  <option value="Beijing">北京</option>
  <option value="Shenzhen">深圳</option>
  <option value="Shanghai">上海</option>
</select>
  • select是定义下拉列表的标志
  • option是定义下拉列表中详细选项的标志
  • selected属性用于设定默许选中项

4.预备表单—label标志

在编写表单控件时,为了供给更好的会员体验,经常将input控件与label标志结合使用,以扩大控件的选中范畴。
例如,选中性别时,单击提醒文字“男”或“女”,也可选中响应的单选按钮。

使用label标志包裹单选按钮和提醒文本,即可实现单击label标志里的内容时,响应的表单控件就会被选中。

<label><input type="radio" name="gender" value="m">男</label>
<label><input type="radio" name="gender" value="w">女</label>

5.多维数组

按照案例的需求剖析可知,表单项的相关数据统一留存到一个多维数组中。其中,利用数字键名区分不一样的表单项,每个表单项又是一个二维的关联数组。

// 利用多维数组留存表单元素
[
  0 => [],	// 表单项---单选按钮
  1 => [],	// 表单项
  2 => [],	// 表单项---文本框
  3 => [],	// 表单项
  ……
];
// 每个表单项的数组构造
0 => [
  'tag' => '', 	// 标志----input、textarea、select
  'text' => '', 	// 提醒文本----label标签内显示的内容
  'attr' => [],	// 属性数组----表单元素的属性,如type
  'option' => [], 	// 选项数组----单选框或复选框中的每个选项
  'default' => ''	// 默许值----默许值
],
//预备表单数组
// $elements数组留存整个表单
$elements = [
  0 => [],		// 第1个表单项数组
  1 => [],		// 第2个表单项数组
];
//文本框
0 => [
  'tag' => 'input',
  'text' => '姓  名:',
  'attr' => ['type' => 'text', 'name' => 'user']
],
//单选框
3 => [
  'tag' => 'input',
  'text' => '性  别:',
  'attr' => ['type' => 'radio', 'name' => 'gender'],
  'option' => ['m' => '男', 'w' => '女'],
  'default' => 'm'
 ],

option利用关联数组留存详细的单选项,键名m、w为单选框的value属性值,对应的值“男”、“女”为该单选项的提醒信息
default的值为option关联数组中的一个键名,表示默许选中哪一项

//复选框
4 => [
  'tag' => 'input',
  'text' => '爱  好:',
  'attr' => ['type' => 'checkbox', 'name' => 'hobby[]'],
  'option' => ['swimming' => '游泳', 'reading' => '读书', 'running' => '跑步'],
  'default' => ['swimming', 'reading']
],
//下拉列表
5 => [
  'tag' => 'select',
  'text' => '住  址:',
  'attr' => ['name' => 'area'],
  'option' => ['' => '--请选中--', 'BJ'=>'北京', 'SH'=>'上海', 'SZ'=>'深圳']
],
//文本域
6 => [
  'tag' => 'textarea',
  'text' => '自我吹嘘:',
  'attr' => ['name' => 'introduce', 'cols' => 50, 'rows' => 5]
],
//提交按钮
7 => [
  'tag' => 'input',
  'attr' => ['type' => 'submit', 'value' => '提交']
]

表单的主动生成

1.表单的主动生成——读取$elements数组

实现思绪

  • 为了利便处置会员提交的数据,将$elements中的每个表单项与指定的数组停止合并,使得每个表单项都含有键为tag、text、attr、option和default五个元素,且次序雷同。
  • 按照tag值,离别调取前缀为“generate_”的函数停止表单项的拼接
  • 每个表单项占据一行,并返回拼接好的表单

2.表单的主动生成——拼接表单元素的属性

实现思绪

  • 定义函数generate_attr($attr, $items = ‘')用于完成表单元素属性的拼接
  • $attr数组中元素的键为属性名称,元素的值为属性的值
  • 通过遍历完成属性与$items的拼接并返回,如type=“radio” name=“gender”

3.表单的主动生成——拼接input元素

实现思绪

  • 按照可否含有option元素,推断可否是单选或多选
  • 若不是,则直接调取属性函数完成表单项的拼接
  • 若是,则通过遍历顺次完成多个选项的拼接并返回
    在这里插入图片描述

4.表单的主动生成——拼接select元素

实现思绪

  • 拼接下拉列表的选项option
  • 完成select标志的完全拼接并返回在这里插入图片描述

5.表单的主动生成——拼接textarea元素

实现思绪

  • 拼接textarea元素的属性
  • 完全拼接textarea并返回
    在这里插入图片描述

以上就是案例剖析PHP Web表单生成器的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有154人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板