国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Web系統(tǒng)開(kāi)發(fā)中表單數(shù)據(jù)批量處理方法設(shè)計(jì)與實(shí)現(xiàn)

2017-06-05 16:48聶慶鵬
電腦知識(shí)與技術(shù) 2017年10期

聶慶鵬

摘要:在Web系統(tǒng)開(kāi)發(fā)過(guò)程中,表單數(shù)據(jù)處理操作十分頻繁。在一般處理模式下,各種表單數(shù)據(jù)需要逐個(gè)接收和處理(主要指數(shù)據(jù)庫(kù)處理),帶來(lái)大量代碼冗余。并且在表單項(xiàng)數(shù)量很大的情況下,人工編寫(xiě)代碼極易出錯(cuò),極大降低代碼編寫(xiě)和調(diào)試效率。該文以PHP語(yǔ)言為例,提出了一種對(duì)能夠表單數(shù)據(jù)進(jìn)行高效的批量接收和處理方法,并給出了具體實(shí)現(xiàn)代碼,在實(shí)踐中產(chǎn)生了良好效果。

關(guān)鍵詞:Web系統(tǒng);表單數(shù)據(jù);自動(dòng)處理;PHP

中圖分類(lèi)號(hào):TP311

文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2017)10-0204-01

1.問(wèn)題分析

在Web系統(tǒng)開(kāi)發(fā)中,不論使用何種Web編程語(yǔ)言,往往都涉及大量的數(shù)據(jù)添加、修改操作,都需要使用表單(Form)機(jī)制來(lái)實(shí)現(xiàn)。在復(fù)雜的Web系統(tǒng)中,表單操作十分頻繁,以筆者曾參與的某個(gè)地市級(jí)小型業(yè)務(wù)系統(tǒng)為例,整個(gè)項(xiàng)目中有超過(guò)100個(gè)不同的表單需要處理,每個(gè)表單包含20-30個(gè)不等的表單項(xiàng)。按照PHP語(yǔ)言中正常的表單數(shù)據(jù)處理方式,需要對(duì)表單數(shù)據(jù)進(jìn)行逐個(gè)手工接收和處理(PHP中可以通過(guò)配置參數(shù)使得提交的表單自動(dòng)注冊(cè)為服務(wù)器變量,不需要進(jìn)行手工接收,但這種方式因存在巨大安全隱患已經(jīng)在PHP4之后被默認(rèn)禁用,因此本文不考慮這種情況)。例如,有表單A,擁有數(shù)據(jù)項(xiàng)A1-A10共10項(xiàng),那么需要有以下HTML表單代碼:

以上例子中,為表示方便,表單項(xiàng)和變量名稱(chēng)具有順序性和規(guī)律性,完全可以用循環(huán)的方式簡(jiǎn)化處理代碼,但在實(shí)際應(yīng)用中,為了使變量名望文知義,往往不使用類(lèi)似A1-A10這樣毫無(wú)意義的命名方式,而是用類(lèi)似username、password、content之類(lèi)的具有明確含義的名稱(chēng)。顯而易見(jiàn),在這種處理方式下,存在以下3個(gè)方面的問(wèn)題:

1)代碼冗余。由于大量的表單項(xiàng)需要接收、處理,以及構(gòu)造SQL語(yǔ)句,需要編寫(xiě)大量重復(fù)性代碼,在某些業(yè)務(wù)邏輯較為簡(jiǎn)單的程序中,表單處理代碼量甚至超過(guò)了業(yè)務(wù)邏輯代碼量,帶來(lái)大量代碼冗余,增加了編程工作量。

2)書(shū)寫(xiě)錯(cuò)誤。當(dāng)表單項(xiàng)數(shù)量很大時(shí),在接收、處理數(shù)據(jù)時(shí)需要多次書(shū)寫(xiě)變量名、數(shù)據(jù)庫(kù)字段名等,稍有不慎就會(huì)拼寫(xiě)出錯(cuò),而且這類(lèi)錯(cuò)誤屬于語(yǔ)義錯(cuò)誤而非語(yǔ)法錯(cuò)誤,代碼編輯器和人工檢查均不易發(fā)現(xiàn),給系統(tǒng)開(kāi)發(fā)、調(diào)試帶來(lái)了很大困擾。

3)可擴(kuò)展性差。代碼耦合度高,程序開(kāi)發(fā)完畢后,如果再增加或者減少表單項(xiàng),需要對(duì)代碼進(jìn)行多處修改,不利于程序的可擴(kuò)展性。

2.解決思路與方法

首先,對(duì)HTML表單項(xiàng)名稱(chēng)進(jìn)行處理,使其既保留“望文知義”的特點(diǎn),又能便于批量接收和處理。同時(shí),一個(gè)表單中不是所有表單項(xiàng)的數(shù)據(jù)都需要處理,在表單項(xiàng)名稱(chēng)設(shè)計(jì)中應(yīng)當(dāng)予以區(qū)分,使得PHP處理程序只處理需要的數(shù)據(jù)。其次,在PHP接收表單數(shù)據(jù)時(shí),采用遍歷$-POST數(shù)組的方式,根據(jù)命名規(guī)則取出需要處理的數(shù)據(jù),并建立對(duì)應(yīng)的變量名,存人數(shù)據(jù)。最后,在進(jìn)行SQL語(yǔ)句構(gòu)建時(shí),使用與變量名稱(chēng)相一致的字段名稱(chēng),根據(jù)需要?jiǎng)討B(tài)構(gòu)建Insert或Update語(yǔ)句,使用自定義函數(shù)的方式進(jìn)行調(diào)用。具體實(shí)現(xiàn)過(guò)程如下:

1)HTML表單項(xiàng)的處理

為實(shí)現(xiàn)數(shù)據(jù)自動(dòng)化處理,首先在表單中將每個(gè)需要寫(xiě)入數(shù)據(jù)庫(kù)的表單項(xiàng)名稱(chēng)統(tǒng)一為一種格式。例如,用“v-”作為需要處理的表單名稱(chēng)的前綴,不需要處理的表單不加前綴。如:

2)PHP數(shù)據(jù)接收處理

在數(shù)據(jù)庫(kù)操作中,無(wú)論是是Insert還是Update,都需要首先確定要操作的字段名稱(chēng)列表。根據(jù)表單命名規(guī)律,可以編寫(xiě)自定義函數(shù)getFeildFromPost,將所有v一開(kāi)頭的表單從整個(gè)$_POST數(shù)組表單項(xiàng)集合中分離出來(lái),函數(shù)核心代碼如下。

3.結(jié)語(yǔ)

本文提出的對(duì)表單數(shù)據(jù)進(jìn)行批量處理的方法,對(duì)于Web系統(tǒng)開(kāi)發(fā)中的海量表單處理具有很強(qiáng)的現(xiàn)實(shí)意義,可以產(chǎn)生三個(gè)方面的效益:一是極大降低代碼書(shū)寫(xiě)量,提高編碼效率,可將表單處理代碼從幾十到幾百行簡(jiǎn)化為2行;二是大大提高了代碼的可維護(hù)性,后期擴(kuò)展表單項(xiàng)時(shí)PHP代碼不需要做任何修改;三是具有很好普適性,不論使用何種Web編程語(yǔ)言,不論是$_POST表單數(shù)據(jù)還是$_GET數(shù)據(jù),均可以采用相同方法進(jìn)行處理。

弥渡县| 本溪市| 庐江县| 淮安市| 沁源县| 金堂县| 灯塔市| 定安县| 阳曲县| 南雄市| 洛扎县| 建平县| 武城县| 青龙| 海淀区| 武川县| 额济纳旗| 武汉市| 邛崃市| 紫阳县| 苗栗县| 松潘县| 宜章县| 民县| 论坛| 华蓥市| 淮北市| 海原县| 长宁县| 固镇县| 雅江县| 郯城县| 游戏| 石狮市| 兴海县| 濮阳县| 香港 | 肥西县| 绿春县| 玉屏| 资中县|