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

本文实例讲述了PHP Web表单生成器。分享给大家供大家参考,具体如下:

1.实例:

48920113c0df08e0fef8cb203e855858.png

2. 需求分析

在项目的实际开发中,经常需要设计各种各样表单。直接编写HTML表单虽然简单,但修改、维护相对麻烦。

因此,可以利用PHP实现一个Web表单生成器,使其可以根据具体的需求定制不同功能的表单。具体实现需求如下:

使用多维数组保存表单的相关信息

支持的表单项包括文本框、文本域、单选框、复选框和下拉列表5种类型

保存每个表单项的标记、提示文本、属性、选项值、默认值等

将功能封装成函数,根据传递的参数生成指定的表单

数据的保存形式决定了程序实现的方式。

因此,根据上述开发要求,可以将每个表单项作为一个数组元素,每个元素利用一个关联数组描述,分别为:标记tag、提示文本text、属性数组attr、选项数组option和默认值default。

810385cfea579d5a3de029d77b752934.png

3.案例实现

1.准备表单

表单的主要功能:就是在网页上用于输入信息的区域,收集用户输入的信息,并将其提交给后端的服务器进行处理,实现用户与服务器的交互。

例如:购物结算、信息搜索等都是通过表单实现的。

2.准备表单——创建表单

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

type属性设置不同的值,即可得到不同的表单控件

name属性用于指定控件的名称,用以区分表单中多个相同的控件

value属性用于设置表单控件的默认值

//input控件

游泳

读书

跑步

checked属性用于设置默认选中项

//textarea控件

textarea控件适用于自我评价、评论等可能需要输入大量信息的功能

属性cols和rows用于定义文本域的高度和宽度

//select控件

--请选择--

北京

深圳

上海

select是定义下拉列表的标记

option是定义下拉列表中具体选项的标记

selected属性用于设置默认选中项

4.准备表单—label标记

在编写表单控件时,为了提供更好的用户体验,经常将input控件与label标记联合使用,以扩大控件的选择范围。

例如,选择性别时,单击提示文字“男”或“女”,也可选中相应的单选按钮。

使用label标记包裹单选按钮和提示文本,即可实现单击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元素,判断是否是单选或多选

若不是,则直接调用属性函数完成表单项的拼接

若是,则通过遍历依次完成多个选项的拼接并返回

7179648107c729e1ca79c788852eb813.png

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

实现思路

拼接下拉列表的选项option

完成select标记的完整拼接并返回

b3bc5c1db6177623743cd42fa63a1dbd.png

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

实现思路

拼接textarea元素的属性

完整拼接textarea并返回

a2eb64c5f5a1053f3221b65205508abf.png

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php程序设计安全教程》、《php安全过滤技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php瀑布墙,phpwind Next增加“瀑布流”图墙展示模式

近日,化龙巷网站CEO钱钰在微博上爆出phpwind最新版本的部分截图,引发行业关注。据悉,该版本或命名“Next”,目前,phpwind官方暂未对外披露新版本相关信息,也未公布项目的进展。从流传的产品首页效果图来看,…

管理员信息模块php,管理员模块功能代码

摘要&#xff1a;<?php /*** Created by PhpStorm.* User: Administrator* Date: 2019/5/10* Time: 10:12*/namespace app\admin\contro<?php /*** Created by PhpStorm.* User: Administrator* Date: 2019/5/10* Time: 10:12*/namespace app\admin\controller;use app…

php项目的建立,PHP开发-ZendStudio初学教程-建立PHP项目

英文描述Project Name: Enter the name of your project.Location: Enter the location folder for your project.PHP Server :- Click the drop-down menu and select an existing server for deploying the new server project, or click Add Server to create a new server.…

matlab中随机森林实现,随机森林实现 MATLAB

matlab 中随机森林工具箱的下载地址&#xff1a;http://code.google.com/p/randomforest-matlab/downloads/detail?nameWindows-Precompiled-RF_MexStandalone-v0.02-.zip&can2&q%% 基于随机森林思想的组合分类器设计%% 清空环境变量clear allclcwarning off%% 导入数…

MATLAB电压不平衡,电力系统不对称故障计算的Matlab算法程序

NF1;for i11:NFclear;n19;n29;n09;nl115;nl215;nl015;Lfinput(请输入短路类型(单相接地短路输入‘1’&#xff0c;两相短路输入‘2’&#xff0c;两相短路接地输入‘3’):Lf);f7;If0;zf0;zg0;B1 [0 1 0.0553i 0 1 0 ;0 2 0.1228i 0 1 0;0 3 0.1785i 0 1 0 ;1 4 0.0476i 0 1.050…

matlab示波器有功功率,巧用示波器计算功率-测试测量-与非网

示波器主要用于测量电流和电压&#xff0c;然后通过一系列魔术般的数学公式就可以计算出功率。遗憾的是&#xff0c;功率有许多种类&#xff1a;瞬时功率、有功功率、视在功率和无功功率。这么多的功率术语经常让人感到困惑。本文介绍了如何在Teledyne LeCroy HDO 6000示波器上…

matlab ctrb(),4.8Matlab问题能控能观解释.ppt

Ch.4 线性系统的能控性和能观性 Matlab问题(1/1) 4.8 Matlab问题 本章涉及的计算问题主要有 状态能控性/能观性判定、 系统能控能观分解、 能控/能观规范形变换以及 能控/能观规范形实现。 下面分别介绍基于Matlab的上述问题的程序编制和计算方法。 状态能控性与能观性判定 (1/…

matlab如何导入多文本数据,将文本文件中的混合数据导入表

样本文件概述样本文件 outages.csv 包含表示美国电力中断的数据。文件的前几行如下&#xff1a;Region,OutageTime,Loss,Customers,RestorationTime,CauseSouthWest,2002-01-20 11:49,672,2902379,2002-01-24 21:58,winter stormSouthEast,2002-01-30 01:18,796,336436,2002-02…

php 表单提交文件大小,PHP如何通过表单直接提交大文件详解

PHP如何通过表单直接提交大文件详解前言我想通过表单直接提交大文件&#xff0c;django 那边我就是这么干的。而对于 php 来说&#xff0c;我认为尽管可以设置最大上传的大小&#xff0c;但最大也无法超过内存大小&#xff0c;因为它无法把文件内容都放到 php://input 里面。直…

wordpress url index.php,WordPress对URL的路由解析过程详解

本文说明WP 对URL rewrite并生成当前请求的过程. 实际内容并不复杂, 说的比较啰嗦啦…关于Query Vars这是Wordpress全部代码中最重要的变量,所谓的query vars是一系列变量集合. WP通过解析URL设定query vars, 并通过分析query vars值决定显示那些文章,设定标志位等.所谓标志位是…

matlab m文件的编写,Matlab实验报告(四)M文件的编写.doc

Matlab实验报告(四)M文件的编写.doc实验目的学习MATLAB屮的关系运算和逻辑运算&#xff0c;掌握它们的表达形式和川法。掌握MATLAB中的选择结构和循环结构。学会用MATLAB进行M文件的编写和调用。—、预备知识关系和逻辑运算关系运算符用来完成关系运算&#xff0c;在控制程序流…

php登陆项目,ThinkPHP6项目基操(14.实战部分 中间件处理登录流程)

一、定义中间件namespace app\middleware;class Check{public function handle($request, \Closure $next){if ($request->param(name) think) {return redirect(index/think);}return $next($request);}}中间件类可以随意命名&#xff0c;中间件的入口执行方法必须是handl…

刻意学习之道

所谓刻意学习&#xff0c;不是简单的指所谓的“一万小时定律”&#xff0c;而是要走出自己能力的舒适区&#xff0c;挑战自己的极限&#xff0c;向高人学习&#xff0c;从而得以让个人进步突飞猛进&#xff01;

PHP Calendar 函数,wordpress函数get_calendar()用法示例

get_calendar( bool $initial true, bool $echo true )Display calendar with days that have posts as links.描述The calendar is cached, which will be retrieved, if it exists. If there are no posts for the month, then it will not be displayed.参数$initial(bool…

第三届蓝桥杯决赛真题---数量周期

【结果填空】(满分9分)复杂现象背后的推动力&#xff0c;可能是极其简单的原理。科学的目标之一就是发现纷繁复杂的自然现象背后的简单法则。爱因斯坦的相对论是这方面的典范例证。很早的时候&#xff0c;生物学家观察某区域某种昆虫的数量&#xff08;称为虫口数&#xff09;之…

php asserttrue,PHP8.0的新特性:错误处理方面已经改进

1 系统函数引发TypeError和ValueError异常一.TypeError和ValueError改进作用#在PHP 8中&#xff0c;内部函数参数强制执行类型和值验证&#xff0c;如果不允许使用预期的类型或值&#xff0c;则将抛出TypeError或ValueError异常错误.#在PHP 8之前&#xff0c;这会导致PHP警告.1…

蓝桥杯第七届决赛之---阶乘位数

阶乘位数9的阶乘等于&#xff1a;362880它的二进制表示为&#xff1a;1011000100110000000这个数字共有19位。请你计算&#xff0c;9999 的阶乘的二进制表示一共有多少位&#xff1f; 思路总结&#xff1a; 根据平时做题规律得到如下规律&#xff1a;public class SwingDesign …

php 用户授权访问控制,用户权限访问控制功能

摘要&#xff1a;<?php namespace app\admins\controller;use think\Controller;use Util\SysDb;class Home extends Base{public function index(){&nbs<?php namespace app\admins\controller;use think\Controller;use Util\SysDb;class Home extends Base{publ…

蓝桥杯之--神秘三位数

有这样一个3位数&#xff0c;组成它的3个数字阶乘之和正好等于它本身。 即&#xff1a;abc a! b! c! 请找出所有满足要求的三位数.审好题很重要&#xff1a;三位数而非&#xff0c;三位数的个数 先写出一个函数求出某个数的阶乘&#xff0c;在跟别求出一个三位数的个十百位&…

生日快乐模板php,可会有人跟我说句生日快乐

一个人一年可以经历三百六十五次零点的跨越&#xff0c;可是真正有意义的却只有那么一次。从呱呱坠地到现在芳华正茂&#xff0c;今晚将是我要度过的第二十二个零点。从此以后&#xff0c;我便会进入到一个崭新的年龄&#xff0c;弱弱的问一句&#xff1a;可会有人跟我说句生日…