网站首页  词典首页

请输入您要查询的论文:

 

标题 Web系统开发中表单数据批量处理方法设计与实现
范文

    聂庆鹏

    

    

    摘要:在Web系统开发过程中,表单数据处理操作十分频繁。在一般处理模式下,各种表单数据需要逐个接收和处理(主要指数据库处理),带来大量代码冗余。并且在表单项数量很大的情况下,人工编写代码极易出错,极大降低代码编写和调试效率。该文以PHP语言为例,提出了一种对能够表单数据进行高效的批量接收和处理方法,并给出了具体实现代码,在实践中产生了良好效果。

    关键词:Web系统;表单数据;自动处理;PHP

    中图分类号:TP311

    文献标识码:A

    文章编号:1009-3044(2017)10-0204-01

    1.问题分析

    在Web系统开发中,不论使用何种Web编程语言,往往都涉及大量的数据添加、修改操作,都需要使用表单(Form)机制来实现。在复杂的Web系统中,表单操作十分频繁,以笔者曾参与的某个地市级小型业务系统为例,整个项目中有超过100个不同的表单需要处理,每个表单包含20-30个不等的表单项。按照PHP语言中正常的表单数据处理方式,需要对表单数据进行逐个手工接收和处理(PHP中可以通过配置参数使得提交的表单自动注册为服务器变量,不需要进行手工接收,但这种方式因存在巨大安全隐患已经在PHP4之后被默认禁用,因此本文不考虑这种情况)。例如,有表单A,拥有数据项A1-A10共10项,那么需要有以下HTML表单代码:

    以上例子中,为表示方便,表单项和变量名称具有顺序性和规律性,完全可以用循环的方式简化处理代码,但在实际应用中,为了使变量名望文知义,往往不使用类似A1-A10这样毫无意义的命名方式,而是用类似username、password、content之类的具有明确含义的名称。显而易见,在这种处理方式下,存在以下3个方面的问题:

    1)代码冗余。由于大量的表单项需要接收、处理,以及构造SQL语句,需要编写大量重复性代码,在某些业务逻辑较为简单的程序中,表单处理代码量甚至超过了业务逻辑代码量,带来大量代码冗余,增加了编程工作量。

    2)书写错误。当表单项数量很大时,在接收、处理数据时需要多次书写变量名、数据库字段名等,稍有不慎就会拼写出错,而且这类错误属于语义错误而非语法错误,代码编辑器和人工检查均不易发现,给系统开发、调试带来了很大困扰。

    3)可扩展性差。代码耦合度高,程序开发完毕后,如果再增加或者减少表单项,需要对代码进行多处修改,不利于程序的可扩展性。

    2.解决思路与方法

    首先,对HTML表单项名称进行处理,使其既保留“望文知义”的特点,又能便于批量接收和处理。同时,一个表单中不是所有表单项的数据都需要处理,在表单项名称设计中应当予以区分,使得PHP处理程序只处理需要的数据。其次,在PHP接收表单数据时,采用遍历$-POST数组的方式,根据命名规则取出需要处理的数据,并建立对应的变量名,存人数据。最后,在进行SQL语句构建时,使用与变量名称相一致的字段名称,根据需要动态构建Insert或Update语句,使用自定义函数的方式进行调用。具体实现过程如下:

    1)HTML表单项的处理

    为实现数据自动化处理,首先在表单中将每个需要写入数据库的表单项名称统一为一种格式。例如,用“v-”作为需要处理的表单名称的前缀,不需要处理的表单不加前缀。如:

    

    

    2)PHP數据接收处理

    在数据库操作中,无论是是Insert还是Update,都需要首先确定要操作的字段名称列表。根据表单命名规律,可以编写自定义函数getFeildFromPost,将所有v一开头的表单从整个$_POST数组表单项集合中分离出来,函数核心代码如下。

    3.结语

    本文提出的对表单数据进行批量处理的方法,对于Web系统开发中的海量表单处理具有很强的现实意义,可以产生三个方面的效益:一是极大降低代码书写量,提高编码效率,可将表单处理代码从几十到几百行简化为2行;二是大大提高了代码的可维护性,后期扩展表单项时PHP代码不需要做任何修改;三是具有很好普适性,不论使用何种Web编程语言,不论是$_POST表单数据还是$_GET数据,均可以采用相同方法进行处理。

    

    

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2024/12/23 12:16:11