Subversion Repositories php-qbpwcf

Rev

Rev 226 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 liveuser 1
<?php
2
 
3
/*
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
6
    Copyright (C) 2015~2025 Min-Jhin,Chen
7
 
8
    This file is part of QBPWCF.
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
11
    it under the terms of the GNU General Public License as published by
12
    the Free Software Foundation, either version 3 of the License, or
13
    (at your option) any later version.
14
 
15
    QBPWCF is distributed in the hope that it will be useful,
16
    but WITHOUT ANY WARRANTY; without even the implied warranty of
17
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
    GNU General Public License for more details.
19
 
20
    You should have received a copy of the GNU General Public License
21
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.
22
 
23
*/
24
namespace qbpwcf;
25
 
26
/*
27
類別說明:
28
用於處理表格呈現的類別.
29
備註:
30
無.
31
*/
32
class dataTable{
33
 
34
	/*
35
	#函式說明:
36
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
37
	#回傳結果:
38
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
39
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
40
	#$result["function"],當前執行的函式名稱.
41
	#必填參數:
42
	#$method,物件,為物件實體或類別名稱,會自動置入該參數.
43
	#$arguments,陣列,為呼叫方法時所用的參數.
44
	#參考資料:
45
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
46
	*/
47
	public function __call($method,$arguments){
48
 
49
		#取得當前執行的函式
50
		$result["function"]=__FUNCTION__;
51
 
52
		#設置執行不正常
53
		$result["status"]="false";
54
 
55
		#設置執行錯誤
56
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
57
 
58
		#設置所丟入的參數
59
		$result["error"][]=$arguments;
60
 
61
		#回傳結果
62
		return $result;
63
 
64
		}#function __call end
65
 
66
	/*
67
	#函式說明:
68
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
69
	#回傳結果:
70
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
71
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
72
	#$result["function"],當前執行的函式名稱.
73
	#必填參數:
74
	#$method,物件,為物件實體或類別名稱,會自動置入該參數.
75
	#$arguments,陣列,為呼叫方法時所用的參數.
76
	#參考資料:
77
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
78
	*/
79
	public static function __callStatic($method,$arguments){
80
 
81
		#取得當前執行的函式
82
		$result["function"]=__FUNCTION__;
83
 
84
		#設置執行不正常
85
		$result["status"]="false";
86
 
87
		#設置執行錯誤
88
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
89
 
90
		#設置所丟入的參數
91
		$result["error"][]=$arguments;
92
 
93
		#回傳結果
94
		return $result;
95
 
96
		}#function __callStatic end
97
 
98
	/*
99
	#函式說明:
100
	#回傳呈現資料表內容的表單,包含可以設定各筆資料的操作,像是修改,移除,這些動作都可以設置要傳送的隱藏表單變數.
101
	#回傳結果:
102
	#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.
103
	#$result["error"],錯誤訊息陣列.
104
	#$result["content"],我們所要的內容.
105
	#$result["function"],當前執行的方法名稱.
106
	#必填參數:
107
	#$conf["dbAddress"],字串型態,爲mysql-Server的位置.
108
	$conf["dbAddress"]=$dbAddress;
109
	#$conf["dbAccount"],字串型態,爲用於連入mysql-Server時要使用的帳號.
110
	$conf["dbAccount"]=$dbAccount;
111
	#$conf["dbName"],爲目標資料表所屬的資料庫.
112
	$conf["dbName"]=$dbName;
113
	#$conf["dtName],字串型態,爲目標資料表所屬的資料表.
114
	$conf["dtName"]="";
115
	#可省略參數:
116
	#$conf["dbPassword"],字串型態,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
117
	#$conf["dbPassword"]=$dbPassword;
118
	#$conf["columnYouWant"],字串陣列,為要顯抓的欄位有哪些,預設為id與name
119
	#$conf["columnYouWant"]=array("id","name");
120
	#$conf["columnShowed"],字串陣列,為要顯示的欄位有哪些,預設為name
121
	#$conf["columnShowed"]=array("name");
122
	#$conf["columnName"],字串陣列,資料欄位的名稱,預設為$conf["columnShowed"],$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.
123
	#$conf["columnName"]=$conf["columnShowed"];
124
	#$conf["hiddenIdColumnName"],字串變數,傳送要求時,用於識別資料的變數名稱的資料欄位名稱為何,預設為"id".
125
	#$conf["hiddenIdColumnName"]="id";
126
	#$conf["hiddenIdVarName"],字串變數,傳送要求時,用於識別資料的變數名稱為何,預設為"id".
127
	#$conf["hiddenIdVarName"]="id";
128
	#$conf["operationVarName"],字串變數,傳送要求時,用於識別動作的變數名稱為何,預設為"action".
129
	#$conf["operationVarName"]="action";
130
	#$conf["operationShowed"],字串陣列,為每筆資料可以執行的操作,預設為修改與移除,$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.
131
	#$conf["operationShowed"]=array("請選擇","修改","移除");
132
	#$conf["operationDefaultShowed"],字串,為每筆資料可執行操作的預設選項,預設為"請選擇",$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.
133
	#$conf["operationDefaultShowed"]="請選擇";
134
	#$conf["operationVarValue"],字串陣列,為每筆資料可執行操作傳送邀要求時,用於識別動作的變數數值內容,預設跟$conf["operationShowed"]一樣,$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.
135
	#$conf["operationVarValue"]=$conf["operationShowed"];
136
	#$conf["operationActionPage"],字串,為每筆資料可執行操作的要求接收頁面,預設為"action.php".
137
	#$conf["operationActionPage"]="action.php";
138
	#$conf["operationTarget"],字串,為每筆資料可執行操作呈現的方式,預設為"_top",$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.
139
	#$conf["operationTarget"]="_top";
140
	#參考資料:
141
	#無.
142
	#備註:
143
	#樣式的套用要用qbpwcf建立的css類別.
144
	*/
145
	public static function normal(&$conf){
146
 
147
		#初始化要回傳的陣列
148
		$result=array();
149
 
150
		#取得當前執行的函數名稱
151
		$result["function"]=__FUNCTION__;
152
 
153
		#如果 $conf 不為陣列
154
		if(gettype($conf)!="array"){
155
 
156
			#設置執行失敗
157
			$result["status"]="false";
158
 
159
			#設置執行錯誤訊息
160
			$result["error"][]="\$conf變數須為陣列形態";
161
 
162
			#如果傳入的參數為 null
163
			if($conf==null){
164
 
165
				#設置執行錯誤訊息
166
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
167
 
168
				}#if end
169
 
170
			#回傳結果
171
			return $result;
172
 
173
			}#if end
174
 
175
		#初始化要回傳的語法
176
		$result["content"]="";
177
 
178
		#檢查參數
179
		#函式說明:
180
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
181
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
182
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
183
		#$result["function"],當前執行的函式名稱.
184
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
185
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
186
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
187
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
188
		#必填寫的參數:
189
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
190
		$conf["variableCheck.scheckArguments"]["varInput"]=&$conf;
191
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
192
		$conf["variableCheck.scheckArguments"]["mustBeFilledVariableName"][]="dbAddress";
193
		$conf["variableCheck.scheckArguments"]["mustBeFilledVariableName"][]="dbAccount";
194
		$conf["variableCheck.scheckArguments"]["mustBeFilledVariableName"][]="dbName";
195
		$conf["variableCheck.scheckArguments"]["mustBeFilledVariableName"][]="dtName";
196
		#$conf["variableCheck.scheckArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
197
		$conf["variableCheck.scheckArguments"]["mustBeFilledVariableType"][]="string";
198
		$conf["variableCheck.scheckArguments"]["mustBeFilledVariableType"][]="string";
199
		$conf["variableCheck.scheckArguments"]["mustBeFilledVariableType"][]="string";
200
		$conf["variableCheck.scheckArguments"]["mustBeFilledVariableType"][]="string";
201
		#可以省略的參數:
202
		#$conf["variableCheck.scheckArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
203
		#$conf["variableCheck.scheckArguments"]["canBeEmptyString"]="false";
204
		#$conf["variableCheck.scheckArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
205
		$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="dbPassword";
206
		$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="columnYouWant";
207
		$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="columnShowed";
208
		$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="operationDefaultShowed";
209
		$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="columnName";
210
		$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="hiddenIdColumnName";
211
		$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="hiddenIdVarName";
212
		$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="operationVarName";
213
		$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="operationShowed";
214
		$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="operationVarValue";
215
		$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="operationActionPage";
216
		$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="operationTarget";
217
		#$conf["variableCheck.scheckArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
218
		$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";
219
		$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="array";
220
		$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="array";
221
		$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";
222
		$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="array";
223
		$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";
224
		$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";
225
		$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";
226
		$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="array";
227
		$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="array";
228
		$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";
229
		$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";
230
		#$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
231
		$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]=null;
232
		$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]=array("id","name");
233
		$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]=array("name");
234
		$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="請選擇";
235
		$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="\$conf[\"columnShowed\"]";
236
		$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="id";
237
		$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="id";
238
		$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="action";
239
		$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]=array("請選擇","修改","移除");
240
		$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="\$conf[\"operationShowed\"]";
241
		$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="action.php";
242
		$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="_top";
243
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
244
		$conf["variableCheck.scheckArguments"]["referenceVarKey"]="variableCheck.scheckArguments";
245
		$checkResult=variableCheck::checkArguments($conf["variableCheck.scheckArguments"]);
246
		unset($conf["variableCheck.scheckArguments"]);
247
 
248
		#如果檢查失敗
249
		if($checkResult["status"]=="false"){
250
 
251
			#設置執行結果為 "false"
252
			$result["status"]="false";
253
 
254
			#設置錯誤訊息
255
			$result["error"]=$checkResult;
256
 
257
			#回傳結果
258
			return $result;
259
 
260
			}#if end
261
 
262
		#如果檢查沒通過
263
		if($checkResult["passed"]=="false"){
264
 
265
			#設置執行結果為 "false"
266
			$result["status"]="false";
267
 
268
			#設置錯誤訊息
269
			$result["error"]=$checkResult;
270
 
271
			#回傳結果
272
			return $result;
273
 
274
			}#if end
275
 
276
		#抓取資料表的內容
277
		#涵式說明:
278
		#一次取得資料庫、表的資料
279
		#回傳的結果
280
		#$result["status"],執行結果"true"為成功;"false"為執行失敗。
281
		#$result["error"],錯誤訊息陣列。
282
		#$result["dataContent"],爲資料的內容。
283
		#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]
284
			#$dataSetNum 爲第$dataSetNum+1筆資料
285
			#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱
286
		#$result["dataCount"],爲取得的資料筆數。
287
		#必填的參數:
288
		$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"];#爲dbServer的位置。
289
		$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"];#爲登入dbServer的帳號。
290
		$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"];#爲要存取的資料庫名稱
291
		$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"];#爲要存取的資料表名稱
292
		$conf["db.fastGetDbData"]["columnYouWant"]=$conf["columnYouWant"];#你想要的欄位!
293
		#可省略的參數:
294
 
295
		#如果 $conf["dbPassword"] 有設置
296
		if(isset($conf["dbPassword"])){
297
 
298
			#則設置其密碼
299
			$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"];#爲要存取dbServer的密碼
300
 
301
			}#if end
302
 
303
		#$conf["db"]["fastGetDbData"]["WhereColumnName"]=array("");#用於判斷語句的欄位項目陣列。
304
		#$conf["db"]["fastGetDbData"]["WhereColumnValue"]=array("");#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。
305
		#$conf["db"]["fastGetDbData"]["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。
306
		#$conf["db"]["fastGetDbData"]["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。
307
		#$conf["db"]["fastGetDbData"]["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。
308
		#$conf["db"]["fastGetDbData"]["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。
309
		#$conf["db"]["fastGetDbData"]["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。
310
		#$conf["db"]["fastGetDbData"]["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。
311
		#$conf["db"]["fastGetDbData"]["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。
312
		#$conf["db"]["fastGetDbData"]["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。
313
		$tableContent=db::fastGetDbData($conf["db.fastGetDbData"]);
314
		unset($conf["db.fastGetDbData"]);
315
 
316
		#如果抓取資料表資料失敗
317
		if($tableContent["status"]=="false"){
318
 
319
			#取得錯誤訊息
320
			$result["error"]=$tableContent["error"];
321
 
322
			#設置錯誤識別
323
			$result["status"]="false";
324
 
325
			#回傳結果
326
			return $result;
327
 
328
			}#if end
329
 
330
		#如果 $tableContent["dataCount"] 等於 0
331
		if($tableContent["dataCount"]==0){
332
 
333
			#debug
334
			#echo "<p>沒有資料</p>";
335
 
336
			#建立標題攔
337
			#涵式說明:
338
			#建立列的元素,以及指定裏面要放什麼內容
339
			#回傳的變數:
340
			#$result,建立列元素的語法
341
			#必填的參數:
342
			$conf["table.printRow"]["trClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
343
			$conf["table.printRow"]["tdClass"]="__withBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
344
 
345
			#增加操作欄
346
			$conf["columnName"][]="操作攔";
347
			$conf["table.printRow"]["tdContent"]=$conf["columnName"];#列裏面要放的元素是?如果要空一欄則可以輸array("&nbsp;")
348
 
349
			#可以省略的參數:
350
			$conf["table.printRow"]["tableStartClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
351
			$conf["table.printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
352
			$conf["table.printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
353
			#$conf["table"]["printRow"]["formStart"]="true";#是否要有表單的開始
354
			#$conf["table"]["printRow"]["formName"]="";#該表單的名稱
355
			#$conf["table"]["printRow"]["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
356
			#$conf["table"]["printRow"]["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
357
			#$conf["table"]["printRow"]["formEnd"]="true";#是否要有表單的結束
358
			$titleRow=table::printRow($conf["table.printRow"]);
359
			unset($conf["table.printRow"]);
360
			$result["content"]=$result["content"].$titleRow;
361
 
362
			}#if end
363
 
364
		#反之代表有資料
365
		else{
366
 
367
			#debug
368
			#echo "<p>有資料</p>";
369
 
370
			#建立標題攔
371
			#涵式說明:
372
			#建立列的元素,以及指定裏面要放什麼內容
373
			#回傳的變數:
374
			#$result,建立列元素的語法
375
			#必填的參數:
376
			$conf["table.printRow"]["trClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
377
			$conf["table.printRow"]["tdClass"]="__withBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
378
 
379
			#增加操作欄
380
			$conf["columnName"][]="操作攔";
381
			$conf["table.printRow"]["tdContent"]=$conf["columnName"];#列裏面要放的元素是?如果要空一欄則可以輸array("&nbsp;")
382
 
383
			#可以省略的參數:
384
			$conf["table.printRow"]["tableStartClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
385
			$conf["table.printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
386
			#$conf["table"]["printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
387
			#$conf["table"]["printRow"]["formStart"]="true";#是否要有表單的開始
388
			#$conf["table"]["printRow"]["formName"]="";#該表單的名稱
389
			#$conf["table"]["printRow"]["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
390
			#$conf["table"]["printRow"]["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
391
			#$conf["table"]["printRow"]["formEnd"]="true";#是否要有表單的結束
392
			$titleRow=table::printRow($conf["table.printRow"]);
393
			unset($conf["table.printRow"]);
394
 
395
			#如果建立列失敗
396
			if($titleRow["status"]==="false"){
397
 
398
				#取得錯誤訊息
399
				$result["error"]=$titleRow;
400
 
401
				#設置錯誤識別
402
				$result["status"]="false";
403
 
404
				#回傳結果
405
				return $result;
406
 
407
				}#if end
408
 
409
			#串接標題列
410
			$result["content"]=$result["content"].$titleRow["content"];
411
 
412
			#針對每筆紀錄
413
			for($i=0;$i<$tableContent["dataCount"];$i++){
414
 
415
				#debug
416
				#echo "<p>有資料</p>";
417
 
418
				#針對每個欄位
419
				foreach($tableContent["dataContent"] as $columnName=>$columnArray){
420
 
421
					#檢查 $columnValue 是否存在於 $conf["columnShowed"] 裡面
422
					#涵式說明:
423
					#檢查多個數值,是否與陣列裏面的某些元素相同。
424
					#回傳的結果:
425
					#$result["status"][$i],若爲0代表沒有相同的元素;反之0代表有相同的元素。
426
						#$i爲第i+1個參數判斷後的結果。
427
					#必填的參數:
428
					$conf["search.checkEquality"]["inputElement"]=array($columnName);#爲要進行比對的變數/數值。
429
					$conf["search.checkEquality"]["blackBoxElement"]=$conf["columnShowed"];#爲用來比對的變數/數值陣列
430
					$checkResult=search::checkEquality($conf["search.checkEquality"]);
431
					unset($conf["search.checkEquality"]);
432
 
433
					#如果檢查 $columnValue 是否存在於 $conf["columnShowed"] 裡面失敗
434
					if($checkResult["status"]==="false"){
435
 
436
						#設置執行失敗
437
						$result["status"]="false";
438
 
439
						#設置錯誤訊息
440
						$result["error"]=$checkResult;
441
 
442
						#回傳結果
443
						return $result;
444
 
445
						}#if end
446
 
447
					#如果$columnValue在$conf["columnShowed"]裡面
448
					if($checkResult["founded"][0]=="true"){
449
 
450
						#紀錄該欄位數值
451
						$conf["table.printRow"]["tdContent"][]=$tableContent["dataContent"][$columnName][$i];
452
 
453
						}#if end
454
 
455
					}#foreach end
456
 
457
				#建立操作選項的下拉式表單
458
				#涵式說明:
459
				#建立下拉式表單
460
				#回傳的結果:
461
				#$result,語法
462
				#必填的參數:
463
				$conf["form.inputSelect"]["name"]=$conf["operationVarName"];#爲該下拉式選單的名稱
464
				$conf["form.inputSelect"]["sendValue"]=$conf["operationVarValue"];#爲陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
465
				#可省略的參數:
466
				$conf["form.inputSelect"]["formName"]=$conf["operationVarName"].$i;#該表單的名稱
467
				#$conf["form.inputSelect"]["outputValue"]=$conf["operationVarValue"];#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。
468
				#$conf["form.inputSelect"]["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。
469
				$conf["form.inputSelect"]["defaultValue"]=$conf["operationDefaultShowed"];#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。
470
				#$conf["form"]["inputSelect"]["class"]="";#爲要套用的class樣式,若省略的話預設採用 __simpleButtonLinkDefaultButtonCssStyle  的css樣式名稱
471
					#其屬性爲   "width","height","font-size","text-align"
472
					#其屬性值爲 "100%"  ,  "50"  ,    "30"   ,   "center"
473
				$conf["form.inputSelect"]["formAction"]=$conf["operationActionPage"];#爲該下拉式表單要傳送到的位置
474
				$conf["form.inputSelect"]["actionTarget"]="_top";#要如何接收網頁的迴應,預設爲_self
475
				$conf["form.inputSelect"]["jsActivitor"]="onChange";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
476
				$conf["form.inputSelect"]["jsAction"]="document.forms.".$conf["operationVarName"].$i.".submit();";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
477
				#$conf["form.inputSelect"]["independentForm"]="false";#是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true"
478
				#$conf["form.inputSelect"]["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
479
				$conf["form.inputSelect"]["hiddenVar"]=array($conf["hiddenIdVarName"]);
480
				#$conf["form.inputSelect"]["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
481
				$conf["form.inputSelect"]["hiddenVarValue"]=array($tableContent["dataContent"][$conf["hiddenIdColumnName"]][$i]);
482
				#$conf["form.inputSelect"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
483
				#$conf["form.inputSelect"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
484
				#$conf["form.inputSelect"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
485
				#$conf["form.inputSelect"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
486
				#備註:
487
				#$_SERVER["PHP_SELF"]為php檔案自己
488
				#參考資料來源:
489
				#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。
490
				$inputSelect=form::inputSelect($conf["form.inputSelect"]);
491
				unset($conf["form.inputSelect"]);
492
 
493
				#如果 下拉式選單建立錯誤
494
				if($inputSelect["status"]=="false"){
495
 
496
					#取得錯誤訊息
497
					$result["error"]=$inputSelect;
498
 
499
					#設置錯誤識別
500
					$result["status"]="false";
501
 
502
					#回傳結果
503
					return $result;
504
 
505
					}#if end
506
 
507
				#放入下拉式選單
508
				$conf["table.printRow"]["tdContent"][]=$inputSelect["content"];
509
 
510
				#建立內容攔
511
				#涵式說明:
512
				#建立列的元素,以及指定裏面要放什麼內容
513
				#回傳的變數:
514
				#$result,建立列元素的語法
515
				#必填的參數:
516
				$conf["table.printRow"]["trClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
517
				$conf["table.printRow"]["tdClass"]="__withBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
518
				#可以省略的參數:
519
 
520
				#如果是第一筆資料
521
				if($i==0){
522
 
523
					$conf["table"]["printRow"]["tableStartClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
524
					$conf["table"]["printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
525
 
526
					}#if end
527
 
528
				#如果是最後一筆資料
529
				if($i==$tableContent["dataCount"]-1){
530
 
531
					$conf["table"]["printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
532
 
533
					}#if end
534
 
535
				#$conf["table"]["printRow"]["formStart"]="true";#是否要有表單的開始
536
				#$conf["table"]["printRow"]["formName"]=$conf["operationVarName"].$i;#該表單的名稱
537
				#$conf["table"]["printRow"]["formAction"]=$conf["operationActionPage"];#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
538
				#$conf["table"]["printRow"]["formTarget"]=$conf["operationTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
539
				#$conf["table"]["printRow"]["formEnd"]="true";#是否要有表單的結束
540
				$oneRow=table::printRow($conf["table.printRow"]);
541
				unset($conf["table.printRow"]);
542
 
543
				#如果建立 row 失敗
544
				if($oneRow["status"]==="false"){
545
 
546
					#取得錯誤訊息
547
					$result["error"]=$oneRow;
548
 
549
					#設置錯誤識別
550
					$result["status"]="false";
551
 
552
					#回傳結果
553
					return $result;
554
 
555
					}#if end
556
 
557
				#傳接列
558
				$result["content"]=$result["content"].$oneRow["content"];
559
 
560
				}#for end
561
 
562
			}#else end
563
 
564
		#設置執行成功的識別
565
		$result["status"]="true";
566
 
567
		#回傳結果
568
		return $result;
569
 
570
		}#function normal end
571
 
572
	/*
573
	#函式說明:
574
	#呈現多張有關連的資料表內容表單,包含可以設定各筆資料的操作,像是修改,移除,這些動作都可以設置要傳送的隱藏表單變數.
575
	#回傳結果:
576
	#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.
577
	#$result["error"],錯誤訊息陣列.
578
	#$result["content"],我們所要的內容.
579
	#$result["funtion"],當前執行的函數.
580
	#必填參數:
581
	#$conf["place"],字串陣列,爲每個連線的mysql-Server位置.
582
	$conf["place"]=array($dbAddress);
583
	#$conf["account"],字串陣列,爲用於每個連線連入mysql-Server時要使用的帳號.
584
	$conf["account"]=array($dbAccount);
585
	#$conf["selectedDataBaseName"],字串陣列,爲多張目標資料表所屬的資料庫.
586
	$conf["selectedDataBaseName"]=array($dbName);
587
	#$conf["selectedDataTableName"],字串陣列,爲多張目標資料表的名稱.
588
	$conf["selectedDataTableName"]=array($dtName);
589
	#$conf["linkColumnName"],#二維字串陣列,為可以從父表關連到其他資料表的欄位名稱.
590
		#$conf["linkColumnName"][$i]=array("parentColumnName","childColumnName"),為父資料表的"parentColumnName"欄位跟第($i-1)個關聯資料表的"childColumnName"關聯.
591
	$conf["linkColumnName"]=array(array(""));
592
	#可省略參數:
593
	#$conf["password"],字串陣列,爲每個連線連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
594
	#$conf["password"]=array($dbPassword);
595
	#$conf["parentTableIdColumnName"],字串,用於識別父表的欄位名稱.
596
	#$conf["parentTableIdColumnName"]="id";#預設為"id".
597
	#$conf["columnYouWant"],二維字串陣列,為每張資料表要抓的欄位有哪些,預設為id與name
598
	#$conf["columnYouWant"]=array(array("id","name"));
599
	#$conf["columnShowed"],二維字串陣列,為要顯示的欄位有哪些,預設為name
600
	#$conf["columnShowed"]=array(array("name"));
601
	#$conf["columnTitleName"],二維字串陣列,要顯示的欄位標題名稱陣列,預設為跟$conf["columnShowed"]一樣.
602
	#$conf["columnTitleName"]=array(array("name"));
603
	#$conf["operationVarName"],字串變數,傳送要求時,用於識別動作的變數名稱為何,預設為"action".
604
	#$conf["operationVarName"]="action";
605
	#$conf["operationShowed"],字串陣列,為每筆資料可以執行的操作,預設為修改與移除,$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.
606
	#$conf["operationShowed"]=array("請選擇","修改","移除");
607
	#$conf["operationDefaultShowed"],字串,為每筆資料可執行操作的預設選項,預設為"請選擇",$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.
608
	#$conf["operationDefaultShowed"]="請選擇";
609
	#$conf["operationVarValue"],字串陣列,為每筆資料可執行操作傳送邀要求時,用於識別動作的變數數值內容,預設跟$conf["operationShowed"]一樣,$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.
610
	#$conf["operationVarValue"]=$conf["operationShowed"];
611
	#$conf["operationActionPage"],字串,為每筆資料可執行操作的要求接收頁面,預設為"action.php".
612
	#$conf["operationActionPage"]="action.php";
613
	#$conf["operationTarget"],字串,為每筆資料可執行操作呈現的方式,預設為"_top",$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.
614
	#$conf["operationTarget"]="_top";
615
	#參考資料:
616
	#無.
617
	#備註:
618
	#無.
619
	*/
620
	public static function combineMultiLinkedTable(&$conf){
621
 
622
		#初始化要回傳的陣列
623
		$result=array();
624
 
625
		#當前執行的函數
626
		$result["funtion"]=__FUNCTION__;
627
 
628
		#如果 $conf 不為陣列
629
		if(gettype($conf)!="array"){
630
 
631
			#設置執行失敗
632
			$result["status"]="false";
633
 
634
			#設置執行錯誤訊息
635
			$result["error"][]="\$conf變數須為陣列形態";
636
 
637
			#如果傳入的參數為 null
638
			if($conf==null){
639
 
640
				#設置執行錯誤訊息
641
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
642
 
643
				}#if end
644
 
645
			#回傳結果
646
			return $result;
647
 
648
			}#if end
649
 
650
		#檢查參數
651
		#函式說明:
652
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
653
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
654
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
655
		#$result["function"],當前執行的函式名稱.
656
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
657
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
658
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
659
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
660
		#必填寫的參數:
661
		#$conf["varInput"],陣列變數,要檢查的陣列變數.
662
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
663
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
664
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("place","account","selectedDataBaseName","selectedDataTableName");
665
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
666
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array","array","array","array");
667
		#可以省略的參數:
668
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
669
		$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
670
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
671
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("columnYouWant","columnShowed","columnTitleName","operationDefaultShowed","hiddenLinkVarName","operationVarName","operationShowed","operationVarValue","operationActionPage","operationTarget","parentTableIdColumnName");
672
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
673
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("array","array","array","string","array","string","array","array","string","string","string");
674
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
675
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(array(array("id","name")),array(array("name")),$conf["columnShowed"],"請選擇",$conf["linkColumnName"],"action",array("請選擇","修改","移除"),$conf["operationShowed"],"action.php","_top","id");
676
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
677
		unset($conf["variableCheck.checkArguments"]);
678
 
679
		#如果檢查失敗
680
		if($checkResult["status"]=="false"){
681
 
682
			#設置執行結果為 "false"
683
			$result["status"]="false";
684
 
685
			#設置錯誤訊息
686
			$result["error"]=$checkResult;
687
 
688
			#回傳結果
689
			return $result;
690
 
691
			}#if end
692
 
693
		#如果檢查沒通過
694
		if($checkResult["passed"]=="false"){
695
 
696
			#設置執行結果為 "false"
697
			$result["status"]="false";
698
 
699
			#設置錯誤訊息
700
			$result["error"]=$checkResult;
701
 
702
			#回傳結果
703
			return $result;
704
 
705
			}#if end
706
 
707
		#debug
708
		#var_dump($conf);
709
 
710
		#debug
711
		#var_dump($checkResult);
712
 
713
		#涵式說明:
714
		#透過一個父資料表取得多個關聯子資料表的資料,並合併成一張表
715
		#回傳的結果
716
		#$result["status"],執行結果"true"為成功;"false"為執行失敗。
717
		#$result["error"],錯誤訊息陣列。
718
		#$result["parentTable"]["dataContent"],爲合併了子資料表欄位的父資料表的內容。
719
		#$result["parentTable"]["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]
720
			#$dataSetNum 爲第$dataSetNum+1筆資料
721
			#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱
722
		#$result["parentTable"]["dataCount"],爲取得的資料筆數。
723
		#必填的參數:
724
		$conf["db"]["fastGetMutiLinkedDbData"]["dbAddress"]=$conf["place"];#字串陣列,爲每個dbServer的位置。
725
		$conf["db"]["fastGetMutiLinkedDbData"]["dbAccount"]=$conf["account"];#字串陣列,爲登入每個dbServer的帳號。
726
		$conf["db"]["fastGetMutiLinkedDbData"]["dbName"]=$conf["selectedDataBaseName"];#字串陣列,爲每個要存取的資料庫名稱
727
		$conf["db"]["fastGetMutiLinkedDbData"]["tableName"]=$conf["selectedDataTableName"];#字串陣列,爲每個要存取的資料表名稱,$conf["tableName"][0]為父資料表.
728
		$conf["db"]["fastGetMutiLinkedDbData"]["linkColumnName"]=$conf["linkColumnName"];#二維字串陣列,為可以從父表關連到其他資料表的欄位名稱.
729
			#$conf["linkColumnName"][$i]=array("parentColumnName","childColumnName"),為父資料表的"parentColumnName"欄位跟第($i-1)個關聯資料表的"childColumnName"關聯.
730
		$conf["db"]["fastGetMutiLinkedDbData"]["columnYouWant"]=$conf["columnYouWant"];#二維字串陣列,為每個資料表依序想要的欄位.
731
		#可省略的參數:
732
 
733
		#如果 $conf["password"] 有設定
734
		if(isset($conf["password"])){
735
 
736
			#則設置連線密碼
737
			$conf["db"]["fastGetMutiLinkedDbData"]["dbPassword"]=$conf["password"];#字串陣列,爲要存取每個dbServer的密碼
738
 
739
			}#if end
740
 
741
		#$conf["db"]["fastGetMutiLinkedDbData"]["WhereColumnName"]=array("");#字串陣列,用於判斷語句的欄位項目陣列。
742
		#$conf["db"]["fastGetMutiLinkedDbData"]["WhereColumnValue"]=array("");#字串陣列,用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。
743
		#$conf["db"]["fastGetMutiLinkedDbData"]["WhereColumnCombine"]=array("");#字串陣列,用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。
744
		#$conf["db"]["fastGetMutiLinkedDbData"]["WhereColumnOperator"]=array("");#字串陣列,用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。
745
		#$conf["db"]["fastGetMutiLinkedDbData"]["WhereColumnAndOr"]=array("");#字串陣列,用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。
746
		#$conf["db"]["fastGetMutiLinkedDbData"]["orderItem"]="";#字串,排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。
747
		#$conf["db"]["fastGetMutiLinkedDbData"]["ascORdesc"]="";#字串,要低增還是遞減排序,asc爲遞增;desc爲遞減。
748
		#$conf["db"]["fastGetMutiLinkedDbData"]["numberStart"]="0";#字串,從第幾筆開始讀取,預設為"0",代筆第一筆。
749
		#$conf["db"]["fastGetMutiLinkedDbData"]["numLimit"]="30";#字串,要取幾筆資料,可以省略,省略則表示不限制數目。
750
		#$conf["db"]["fastGetMutiLinkedDbData"]["groupBy"]=array();#字串陣列,爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。
751
		$combinedTable=db::fastGetMultiLinkedDbData($conf["db"]["fastGetMutiLinkedDbData"]);
752
		unset($conf["db"]);
753
 
754
		#如果取得關聯資料表資料失敗
755
		if($combinedTable["status"]=="false"){
756
 
757
			#設置執行結果為 "false"
758
			$result["status"]="false";
759
 
760
			#設置錯誤訊息
761
			$result["error"]=$combinedTable;
762
 
763
			#回傳結果
764
			return $result;
765
 
766
			}#if end
767
 
768
		#如果關聯資料表沒有資料
769
		if($combinedTable["parentTable"]["dataCount"]==0){
770
 
771
			#設置執行結果為 "false"
772
			$result["status"]="false";
773
 
774
			#設置錯誤訊息
775
			$result["error"][]="資料表沒有資料";
776
 
777
			#回傳結果
778
			return $result;
779
 
780
			}#if end
781
 
782
		#debug
783
		#echo "<p>entered!<p>";
784
 
785
		#debug
786
		#var_dump($combinedTable);
787
 
788
		#建立標題攔
789
 
790
		#增加操作欄
791
		$conf["table"]["printRow"]["tdContent"][]="操作攔";#列裏面要放的元素是?如果要空一欄則可以輸array("&nbsp;")
792
 
793
		#涵式說明:
794
		#建立列的元素,以及指定裏面要放什麼內容
795
		#回傳的變數:
796
		#$result,建立列元素的語法
797
		#必填的參數:
798
		$conf["table"]["printRow"]["trClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
799
		$conf["table"]["printRow"]["tdClass"]="__withBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
800
 
801
		#依據每張表的欄位名稱陣列
802
		foreach($conf["columnTitleName"] as $tableColumnArray){
803
 
804
			#依據標題陣列裡的元素
805
			foreach($tableColumnArray as $columnName){
806
 
807
				#設定標題攔位的名稱
808
				$conf["table"]["printRow"]["tdContent"][]=$columnName;
809
 
810
				}#foreach end
811
 
812
			}#foreach end
813
 
814
		#可以省略的參數:
815
		$conf["table"]["printRow"]["tableStartClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
816
		$conf["table"]["printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
817
		#$conf["table"]["printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
818
		#$conf["table"]["printRow"]["formStart"]="true";#是否要有表單的開始
819
		#$conf["table"]["printRow"]["formName"]="";#該表單的名稱
820
		#$conf["table"]["printRow"]["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
821
		#$conf["table"]["printRow"]["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
822
		#$conf["table"]["printRow"]["formEnd"]="true";#是否要有表單的結束
823
		$result["content"]=$titleRow=table::printRow($conf["table"]["printRow"]);
824
		unset($conf["table"]);
825
 
826
		#印出資料筆數
827
		#echo $combinedTable["parentTable"]["dataCount"];
828
 
829
		#根據資料筆數($combinedTable["parentTable"]["dataCount"])
830
		for($i=0;$i<$combinedTable["parentTable"]["dataCount"];$i++){
831
 
832
			#初始化儲存每個欄位要放的內容
833
			$columnContentArray=array();
834
 
835
			#初始化儲存要傳送的隱藏變數名稱
836
			$hiddenVarName=array();
837
 
838
			#初始化儲存要傳送的隱藏變數數值
839
			$hiddenVarValue=array();
840
 
841
			#取得父表識別欄位名稱與數值內容
842
			$hiddenVarName[]=$conf["parentTableIdColumnName"];
843
			$hiddenVarValue[]=$combinedTable["parentTable"]["dataContent"][$conf["parentTableIdColumnName"]][$i];
844
 
845
			#根據每張父表與子表連接的欄位
846
			foreach($conf["linkColumnName"] as $parentAndChildLinkColumnOfEachTable){
847
 
848
				#取得子表的關聯欄位名稱
849
				$hiddenVarName[]=$parentAndChildLinkColumnOfEachTable[1];
850
				$hiddenVarValue[]=$combinedTable["parentTable"]["dataContent"][$parentAndChildLinkColumnOfEachTable[1]][$i];
851
 
852
				}#foreach end
853
 
854
			#傳送多個隱藏表單的資訊
855
			#回傳的數值:
856
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
857
			#$result["error"],錯誤訊息陣列
858
			#$result["function"],當前執行的函數
859
			#$result["content"],語法
860
			#$result["sendedArrayName"],傳送的隱藏變數陣列
861
			#$result["sendedArrayValue"],傳送的隱藏變數陣列數值
862
			#$result["sendedArrayCount"],傳送的隱藏變數計數
863
			#必填的參數:
864
			$conf["form"]["inputMutiHidden"]["nameArray"]=$hiddenVarName;#欲傳送的隱藏陣列變數名稱
865
			$conf["form"]["inputMutiHidden"]["valueArray"]=$hiddenVarValue;#欲傳送的隱藏陣列變數數值
866
			$hiddenVar=form::inputMultiHidden($conf["form"]["inputMutiHidden"]);
867
			unset($conf["form"]);
868
 
869
			#如果建立隱藏的表單失敗
870
			if($hiddenVar["status"]=="false"){
871
 
872
				#設置執行結果為 "false"
873
				$result["status"]="false";
874
 
875
				#設置錯誤訊息
876
				$result["error"]=$hiddenVar;
877
 
878
				#回傳結果
879
				return $result;
880
 
881
				}#if end
882
 
883
			#反之建立正常
884
			else{
885
 
886
				$hiddenVar=$hiddenVar["content"];
887
 
888
				}#else end
889
 
890
			#debug
891
			#var_dump($conf);
892
 
893
			#建立操作選項的下拉式表單
894
			#涵式說明:
895
			#建立下拉式表單
896
			#回傳的結果:
897
			#$result,語法
898
			#必填的參數:
899
			$conf["form"]["inputSelect"]["name"]=$conf["operationVarName"];#爲該下拉式選單的名稱
900
			$conf["form"]["inputSelect"]["sendValue"]=$conf["operationVarValue"];#爲陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
901
			#可省略的參數:
902
			#$conf["form"]["inputSelect"]["formName"]=$conf["operationVarName"].$i;#該表單的名稱
903
			#$conf["form"]["inputSelect"]["outputValue"]=$conf["operationVarValue"];#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。
904
			#$conf["form"]["inputSelect"]["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。
905
			$conf["form"]["inputSelect"]["defaultValue"]=$conf["operationDefaultShowed"];#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。
906
			#$conf["form"]["inputSelect"]["class"]="";#爲要套用的class樣式,若省略的話預設採用 __simpleButtonLinkDefaultButtonCssStyle  的css樣式名稱
907
				#其屬性爲   "width","height","font-size","text-align"
908
				#其屬性值爲 "100%"  ,  "50"  ,    "30"   ,   "center"
909
			#$conf["form"]["inputSelect"]["formAction"]="";#爲該下拉式表單要傳送到的位置
910
			#$conf["form"]["inputSelect"]["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self
911
			$conf["form"]["inputSelect"]["jsActivitor"]="onChange";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
912
			$conf["form"]["inputSelect"]["jsAction"]="document.forms.".$conf["operationVarName"].$i.".submit();";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
913
			#$conf["form"]["inputSelect"]["jsAction"]="document.".$conf["operationVarName"].$i.".submit";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
914
			#$conf["form"]["inputSelect"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
915
			#$conf["form"]["inputSelect"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
916
			#$conf["form"]["inputSelect"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
917
			#$conf["form"]["inputSelect"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
918
			#備註:
919
			#$_SERVER["PHP_SELF"]為php檔案自己
920
			#參考資料來源:
921
			#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。
922
			$columnContentArray[]=$hiddenVar.form::inputSelect($conf["form"]["inputSelect"])["content"];
923
			unset($conf["form"]);
924
 
925
			#根據每張表格
926
			foreach($conf["columnShowed"] as $tableColumnShowedArray){
927
 
928
				#根據每個要顯示的欄位
929
				foreach($tableColumnShowedArray as $columnShowedName){
930
 
931
					#var_dump($columnShowedName);
932
 
933
					#取得要顯示的欄位內容
934
					$columnContentArray[]=$combinedTable["parentTable"]["dataContent"][$columnShowedName][$i];
935
 
936
					}#foreach end
937
 
938
				}#foreach end
939
 
940
			#建立內容攔
941
			#涵式說明:
942
			#建立列的元素,以及指定裏面要放什麼內容
943
			#回傳的變數:
944
			#$result,建立列元素的語法
945
			#必填的參數:
946
			$conf["table"]["printRow"]["trClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
947
			$conf["table"]["printRow"]["tdClass"]="__withBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
948
			#$conf["table"]["printRow"]["tdContent"]=$conf["columnName"];#列裏面要放的元素是?如果要空一欄則可以輸array("&nbsp;")
949
			$conf["table"]["printRow"]["tdContent"]=$columnContentArray;
950
			#可以省略的參數:
951
			#$conf["table"]["printRow"]["tableStartClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
952
			#$conf["table"]["printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
953
			#$conf["table"]["printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
954
			$conf["table"]["printRow"]["formStart"]="true";#是否要有表單的開始
955
			$conf["table"]["printRow"]["formName"]=$conf["operationVarName"].$i;#該表單的名稱
956
			$conf["table"]["printRow"]["formAction"]=$conf["operationActionPage"];#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
957
			$conf["table"]["printRow"]["formTarget"]=$conf["operationTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
958
			$conf["table"]["printRow"]["formEnd"]="true";#是否要有表單的結束
959
			$result["content"]=$result["content"].table::printRow($conf["table"]["printRow"]);
960
			unset($conf["table"]);
961
 
962
			}#for end
963
 
964
		#涵式說明:
965
		#表格結束
966
		#回傳的結果:
967
		#表格結束的語法
968
		$result["content"]=$result["content"].table::end();
969
 
970
		#設置執行成功的識別
971
		$result["status"]="true";
972
 
973
		#回傳結果
974
		return $result;
975
 
976
		}#function combineMutiLinkedTable end
977
 
978
	/*
979
	#函式說明:
980
	#新增/修改資料表資料的表單
981
	#回傳結果:
982
	#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.
983
	#$result["error"],錯誤訊息陣列.
984
	#$result["content"],我們所要的內容.
985
	#$result["function"],當前執行的函式名稱.
986
	#必填參數:
987
	#$conf["theColumnYouWant"],二維字串陣列,代表新增或修改資料時,的目標欄位.
988
		#$conf["theColumnYouWant"][0][0],代表父表(第一張表)的第1個使用到的欄位.
989
		#$conf["theColumnYouWant"][0][1],代表父表(第一張表)的第2個使用到的欄位.
990
		#$conf["theColumnYouWant"][1][2],代表子表(第二張表)的第3個使用到的欄位.
991
		#$conf["theColumnYouWant"][2][3],代表子表(第三張表)的第4個使用到的欄位.
992
	$conf["theColumnYouWant"][$i][$j]=;
993
	#$conf["inputType"],二維字串陣列,每個欄位內容的輸入類型.
994
		#可用的類型有"singleLine","multiLine","select","radio","checkBox","file"
995
		#$conf["inputType"][0][0],代表父表(第一張表)使用到的第1個欄位的輸入型態.
996
		#$conf["inputType"][0][1],代表父表(第一張表)使用到的第2個欄位的輸入型態.
997
		#$conf["inputType"][1][2],代表子表(第二張表)使用到的第3個欄位的輸入型態.
998
		#$conf["inputType"][2][3],代表子表(第三張表)使用到的第4個欄位的輸入型態.
999
		#radio 與 checkBox 使用率低,所以尚未製作。
1000
	$conf["inputType"][$i][$j]=;
1001
	#$conf["submitAction"],字串,表單送出的目的地.
1002
	$conf["submitAction"]="add.php";
1003
	#$conf["addOrEdit"],字串變數,代表是新增(add)或編輯(edit)現有資料.
1004
	$conf["addOrEdit"]="";
1005
	#可省略參數:
1006
	#$conf["inputSelectOption"],二維字串陣列,代表欄位填寫型式為"select"時,其選項有哪些,若不是下拉式選單欄位,則請設置為null.
1007
		#$conf["inputSelectOption"][0][0],代表父表(第一張表)使用到的第1個欄位下拉式選單的選項陣列.
1008
		#$conf["inputSelectOption"][0][1],代表父表(第一張表)使用到的第2個欄位下拉式選單的選項陣列.
1009
		#$conf["inputSelectOption"][1][2],代表子表(第二張表)使用到的第3個欄位下拉式選單的選項陣列.
1010
		#$conf["inputSelectOption"][2][3],代表子表(第三張表)使用到的第4個欄位下拉式選單的選項陣列.
1011
	#$conf["inputSelectOption"]=array(array(array("請選擇","green","blue","yellow")));
1012
	#$conf["dbAddress"],字串陣列,爲每個mysql-Server的位置.
1013
	#$conf["dbAddress"]=array($dbAddress);
1014
	#$conf["dbAccount"],字串陣列,爲每個用於連入mysql-Server時要使用的帳號.
1015
	#$conf["dbAccount"]=array($dbAccount);
1016
	#$conf["dbName"],字串陣列,爲每個目標資料表所屬的資料庫.
1017
	#$conf["dbName"]=array($dbName);
1018
	#$conf["dtName"],字串陣列,爲每個目標資料表所屬的資料表.
1019
	#$conf["dtName"]=array("");
1020
	#$conf["dbPassword"],字串陣列,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
1021
	#$conf["dbPassword"]=array($dbPassword);
1022
	#$conf["limitPrePage"],字串變數,限制前一個頁面必須要為哪些名稱之一才行。
1023
	#$conf["limitPrePage"]=array();
1024
	#$conf["transferLocation"],字串,為當前一頁不符合要求時,要轉址到哪邊,資安素養網"https://isafe.moe.edu.tw/"
1025
	#$conf["transferLocation"]="https://isafe.moe.edu.tw/";
1026
	#$conf["identifyVarName"],字串陣列變數,第$i+1張表用來識別是哪一筆資料的變數名稱,預設為"id".
1027
	#$conf["identifyVarName"][$i]="id";
1028
	#$conf["identifyColumnName"],字串陣列變數,第$i+1張表用來識別是哪一筆資料的欄位名稱,預設為"id".
1029
	#$conf["identifyColumnName"][$i]="id";
1030
	#$conf["prePageAction"]="index.php";#回上頁按鈕的目的地,預設為"index.php".
1031
	#$conf["columnName"],二維字串陣列,顯示在新增欄位上的名稱與說明,預設為$conf["theColumnYouWant"].
1032
		#$conf["columnName"][0][0],代表父表(第一張表)使用到的第1個欄位名稱與說明.
1033
		#$conf["columnName"][0][1],代表父表(第一張表)使用到的第2個欄位名稱與說明.
1034
		#$conf["columnName"][1][2],代表子表(第二張表)使用到的第3個欄位名稱與說明.
1035
		#$conf["columnName"][2][3],代表子表(第三張表)使用到的第4個欄位名稱與說明.
1036
	#$conf["columnName"][$i][$j]="";
1037
	#$conf["readOnly"],二維字串陣列,每個欄位是否設為唯讀,"true"為唯讀,"false"為不唯讀,預設均為"false".
1038
		#$conf["readOnly"][0][0],代表父表(第一張表)使用到的第1個欄位的輸入型態.
1039
		#$conf["readOnly"][0][1],代表父表(第一張表)使用到的第2個欄位的輸入型態.
1040
		#$conf["readOnly"][1][2],代表子表(第二張表)使用到的第3個欄位的輸入型態.
1041
		#$conf["readOnly"][2][3],代表子表(第三張表)使用到的第4個欄位的輸入型態.
1042
		#目前尚未實作該參數的設定...
1043
	#$conf["readOnly"]=array(array("false"));
1044
	#參考資料:
1045
	#無.
1046
	#備註:
1047
	#建構中.
1048
	*/
1049
	public static function addAndEditRequest(&$conf){
1050
 
1051
		#初始化要回傳的陣列
1052
		$result=array();
1053
 
1054
		#初始化要回傳的語法
1055
		$result["content"]="";
1056
 
1057
		#當前執行的函式名稱
1058
		$result["function"]=__FUNCTION__;
1059
 
1060
		#如果 $conf 不為陣列
1061
		if(gettype($conf)!="array"){
1062
 
1063
			#設置執行失敗
1064
			$result["status"]="false";
1065
 
1066
			#設置執行錯誤訊息
1067
			$result["error"][]="\$conf變數須為陣列形態";
1068
 
1069
			#如果傳入的參數為 null
1070
			if($conf==null){
1071
 
1072
				#設置執行錯誤訊息
1073
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1074
 
1075
				}#if end
1076
 
1077
			#回傳結果
1078
			return $result;
1079
 
1080
			}#if end
1081
 
1082
		#檢查參數
1083
		#函式說明:
1084
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1085
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1086
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1087
		#$result["function"],當前執行的函式名稱.
1088
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1089
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1090
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1091
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
1092
		#必填寫的參數:
1093
		#$conf["variableCheck.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1094
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
1095
		#$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1096
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="theColumnYouWant";
1097
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="inputType";
1098
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="submitAction";
1099
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="addOrEdit";
1100
		#$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
1101
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";
1102
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";
1103
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="string";
1104
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="string";
1105
		#可以省略的參數:
1106
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
1107
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
1108
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1109
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="prePageAction";
1110
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="columnName";
1111
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="dbAddress";
1112
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="dbAccount";
1113
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="dbName";
1114
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="dbPassword";
1115
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="identifyVarName";
1116
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="identifyColumnName";
1117
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="limitPrePage";
1118
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="transferLocation";
1119
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1120
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";
1121
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1122
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1123
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1124
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1125
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1126
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1127
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1128
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1129
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";
1130
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1131
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="index.php";
1132
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"theColumnYouWant\"]";
1133
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1134
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1135
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1136
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1137
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1138
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1139
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1140
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="https://isafe.moe.edu.tw/";
1141
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
1142
		unset($conf["variableCheck.checkArguments"]);
1143
 
1144
		#如果檢查失敗
1145
		if($checkResult["status"]=="false"){
1146
 
1147
			#設置執行不正常
1148
			$result["status"]="false";
1149
 
1150
			#設置執行錯誤
1151
			$result["error"]=$checkResult;
1152
 
1153
			#回傳結果
1154
			return $result;
1155
 
1156
			}#if end
1157
 
1158
		#如果檢查不通過
1159
		if($checkResult["passed"]=="false"){
1160
 
1161
			#設置執行不正常
1162
			$result["status"]="false";
1163
 
1164
			#設置執行錯誤
1165
			$result["error"]=$checkResult;
1166
 
1167
			#回傳結果
1168
			return $result;
1169
 
1170
			}#if end
1171
 
1172
		#初始化要放入到表格裡面的元素
1173
		$everyInputCode=array();
1174
 
1175
		#設置回上頁的按鈕
1176
		#放置按鈕
1177
		#必要的參數:
1178
		$conf["form"]["button"]["buttonDisplayValue"]="回上頁";#爲按鈕上顯示的文字。
1179
		#可省略的參數:
1180
		#$conf["form"]["button"]["buttonStyleName"]="";#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
1181
			#其屬性爲   "width","height","font-size","text-align"
1182
			#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
1183
		#$conf["form"]["button"]["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
1184
		#$conf["form"]["button"]["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
1185
		#$conf["form"]["button"]["tablStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"true"。
1186
		#$conf["form"]["button"]["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
1187
		#$conf["form"]["button"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
1188
		#$conf["form"]["button"]["trClass"]="__withoutBorder";#<tr>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
1189
		#$conf["form"]["button"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
1190
		#$conf["form"]["button"]["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
1191
		#$conf["form"]["button"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
1192
		#$conf["form"]["button"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
1193
		#$conf["form"]["button"]["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是。預設爲"true"。
1194
		$conf["form"]["button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始。
1195
		$conf["form"]["button"]["action"]=$conf["prePageAction"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
1196
		#$conf["form"]["button"]["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
1197
		$conf["form"]["button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束。
1198
		$everyInputCode[]=form::button($conf["form"]["button"]);
1199
		unset($conf["form"]["button"]);
1200
 
1201
		#空一格
1202
		$everyInputCode[]="&nbsp;";
1203
 
1204
		#放置表單要遞交的位置
1205
		#涵式說明:
1206
		#表單開始
1207
		#回傳的結果:
1208
		#$result,表單開始的語法
1209
		#必填的參數:
1210
		$conf["form"]["start"]["action"]=$conf["submitAction"];#爲要交給那個檔案處理該表單傳送的內容
1211
		#可省略的參數:
1212
		#$conf["form"]["start"]["name"]="";#爲該表單的名稱
1213
		#$conf["form"]["start"]["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
1214
		#$conf["form"]["start"]["target"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
1215
		#$conf["form"]["start"]["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;
1216
		#$conf["form"]["start"]["tableClass"]="";#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
1217
		$everyInputCode[]=form::start($conf["form"]["start"]);
1218
		unset($conf["form"]["start"]);
1219
 
1220
		#如果是新增作業
1221
		if($conf["addOrEdit"]=="add"){
1222
 
1223
			#$conf["inputType"] 有幾個元素就執行幾次
1224
			for($i=0;$i<count($conf["inputType"]);$i++){
1225
 
1226
				#根據 $conf["inputType"][$i] 有幾個元素就執行幾次
1227
				for($j=0;$j<count($conf["inputType"][$i]);$j++){
1228
 
1229
					#根據 $conf["inputType"][$i][$j] 來呈現填寫的形式
1230
					#"singleLine"=>單行文字
1231
					#"multiLine"=>多行文字
1232
					#"select"=>下拉式選單
1233
					#"radio"=>單選
1234
					#"checkBox"=>複選
1235
					#"file"=>檔案
1236
					switch($conf["inputType"][$i][$j]){
1237
 
1238
						#如果是 "singleLine"
1239
						case "singleLine":
1240
 
1241
							#取得輸入的標題
1242
							$everyInputCode[]=$conf["columnName"][$i][$j];
1243
 
1244
							#涵式說明:
1245
							#可以輸入文字的表單
1246
							#回傳的結果:
1247
							#$result,語法
1248
							#必填的參數
1249
							$conf["form"]["inputText"]["name"]=$conf["theColumnYouWant"][$i][$j];#爲該文字輸入框的名稱,用於讓接收頁面讀取的名稱。
1250
							$conf["form"]["inputText"]["readOnly"]="false";#爲該文字框是否可以填寫資料,若要只能觀看不能填寫,那麼就必須將其值設爲"true",反之要設爲"false"
1251
							#可省略的參數:
1252
							#$conf["form"]["inputText"]["width"]="";#爲文字框的外觀長度,預設是不作設定讓瀏覽器自行決定。
1253
							#$conf["form"]["inputText"]["maxInputLength"]="";#爲可輸入的最大位元長度,預設不限制。
1254
							#$conf["form"]["inputText"]["autoFocus"]="true";#是否為將填寫的指標移到該表單,"true"代表要
1255
							#$conf["form"]["inputText"]["value"]="";#爲該文字框預設要顯示的文字,預設爲""。
1256
							#$conf["form"]["inputText"]["class"]="";#爲要套用的css樣式,若省略,則會套用預設的 __inputTextCssStyle 樣式,其屬性爲 "width:100%","font-size:30px"
1257
							#$conf["form"]["inputText"]["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)、"onClick"(按下按鈕時)、"onkeyup"(當鍵盤按下放開後)、"onmouseover"(當滑鼠移過去的時候)...,須搭配$conf["jsSubmitActionTarget"]參數。
1258
							#$conf["form"]["inputText"]["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
1259
							#$conf["form"]["inputText"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
1260
							#$conf["form"]["inputText"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
1261
							#$conf["form"]["inputText"]["formStart"]="true";#爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始.
1262
							#$conf["form"]["inputText"]["formAction"]="";#表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.
1263
							#$conf["form"]["inputText"]["formName"]="";#爲該表單的名稱
1264
							#$conf["form"]["inputText"]["formMethod"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
1265
							#$conf["form"]["inputText"]["formTarget"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
1266
							#$conf["form"]["inputText"]["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;
1267
							#$conf["form"]["inputText"]["tableClass"]="";#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
1268
							#$conf["form"]["inputText"]["formEnd"]="true";#爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束.
1269
							#$conf["form"]["inputText"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
1270
							#$conf["form"]["inputText"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
1271
							#$conf["form"]["inputText"]["tableEnd"]="true";#爲該表單是否要以</table>結尾,"true"爲是.
1272
							$everyInputCode[]=form::inputText($conf["form"]["inputText"]);
1273
							unset($conf["form"]["inputText"]);
1274
 
1275
							#放置空一行
1276
							$everyInputCode[]="&nbsp;";
1277
 
1278
							#跳出 switch
1279
							break;
1280
 
1281
						#如果是 "multiLine"
1282
						case "multiLine":
1283
 
1284
							#取得輸入的標題
1285
							$everyInputCode[]=$conf["columnName"][$i][$j];
1286
 
1287
							#涵式說明:
1288
							#可以輸入文字的區塊
1289
							#回傳結果:
1290
							#$result,語法
1291
							#必填的參數:
1292
							$conf["form"]["inputTextArea"]["name"]=$conf["theColumnYouWant"][$i][$j];#爲文字輸入框的名稱,供接收端辨識用。
1293
							$conf["form"]["inputTextArea"]["readOnly"]="false";#爲是否要爲唯讀,如果爲"true",則爲唯讀。反之則爲"false"。
1294
							#可省略的參數:
1295
							#$conf["form"]["inputTextArea"]["cols"]="";#爲文字輸入框的欄位數(寬),預設爲按照瀏覽器設定值。
1296
							#$conf["form"]["inputTextArea"]["rows"]="";#爲文字輸入框的列數(高),預設爲按照瀏覽器設定值。
1297
							#$conf["form"]["inputTextArea"]["maxInputLength"]="";#爲文字輸入的長度限制,預設無限制。
1298
							#$conf["form"]["inputTextArea"]["defaultText"]="";#爲文字輸入框裏面的預設文字內容,預設是空的。
1299
							#$conf["form"]["inputTextArea"]["class"]=;#爲要套用的css樣式。如果沒有指定 ,則採用預設的css樣式,其屬性爲 "width:100%","height:120px","font-size:30px"
1300
							#$conf["form"]["inputTextArea"]["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
1301
							#$conf["form"]["inputTextArea"]["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
1302
							#$conf["form"]["inputTextArea"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
1303
							#$conf["form"]["inputTextArea"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
1304
							#$conf["form"]["inputTextArea"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
1305
							#$conf["form"]["inputTextArea"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
1306
							$everyInputCode[]=form::inputTextArea($conf["form"]["inputTextArea"]);
1307
							unset($conf["form"]["inputTextArea"]);
1308
 
1309
							#放置空一行
1310
							$everyInputCode[]="&nbsp;";
1311
 
1312
							#跳出 switch
1313
							break;
1314
 
1315
						#如果是 "select"
1316
						case "select":
1317
 
1318
							#取得輸入的標題
1319
							$everyInputCode[]=$conf["columnName"][$i][$j];
1320
 
1321
							#涵式說明:
1322
							#建立下拉式表單
1323
							#回傳的結果:
1324
							#$result,語法
1325
							#必填的參數:
1326
							$conf["form"]["inputSelect"]["name"]=$conf["theColumnYouWant"][$i][$j];#爲該下拉式選單的名稱
1327
							$conf["form"]["inputSelect"]["sendValue"]=$conf["inputSelectOption"][$i][$j];#爲陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
1328
							#可省略的參數:
1329
							#$conf["form"]["inputSelect"]["formName"]="";#該表單的名稱
1330
							#$conf["form"]["inputSelect"]["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。
1331
							#$conf["form"]["inputSelect"]["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。
1332
							#$conf["form"]["inputSelect"]["defaultValue"]="";#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。
1333
							#$conf["form"]["inputSelect"]["class"]="";#爲要套用的class樣式,若省略的話預設採用 __simpleButtonLinkDefaultButtonCssStyle  的css樣式名稱
1334
								#其屬性爲   "width","height","font-size","text-align"
1335
								#其屬性值爲 "100%"  ,  "50"  ,    "30"   ,   "center"
1336
							#$conf["readOnly"],"字串",內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.
1337
							$conf["readOnly"]="false";
1338
							#$conf["form"]["inputSelect"]["formAction"]="";#爲該下拉式表單要傳送到的位置
1339
							#$conf["form"]["inputSelect"]["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self
1340
							#$conf["form"]["inputSelect"]["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
1341
							#$conf["form"]["inputSelect"]["jsAction"]="";#爲該js是要做什麼,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
1342
							#$conf["form"]["inputSelect"]["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
1343
							#$conf["form"]["inputSelect"]["hiddenVar"]=array("");
1344
							#$conf["form"]["inputSelect"]["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
1345
							#$conf["form"]["inputSelect"]["hiddenVarValue"]=array("");
1346
							#$conf["form"]["inputSelect"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
1347
							#$conf["form"]["inputSelect"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
1348
							#$conf["form"]["inputSelect"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
1349
							#$conf["form"]["inputSelect"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
1350
							#備註:
1351
							#$_SERVER["PHP_SELF"]為php檔案自己
1352
							#參考資料來源:
1353
							#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。
1354
							#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。
1355
							$everyInputCode[]=form::inputSelect($conf["form"]["inputSelect"]);
1356
							unset($conf["form"]["inputSelect"]);
1357
 
1358
							#放置空一行
1359
							$everyInputCode[]="&nbsp;";
1360
 
1361
							#跳出 switch
1362
							break;
1363
 
1364
						# radio 與 checkBox 使用率低,所以先不製作。
1365
						/*
1366
 
1367
						#如果是 "radio"
1368
						case "radio":
1369
 
1370
							#取得輸入的標題
1371
							$everyInputCode[]=$conf["columnName"][$i][$j];
1372
 
1373
 
1374
 
1375
							#放置空一行
1376
							$everyInputCode[]="&nbsp;";
1377
 
1378
							#跳出 switch
1379
							break;
1380
 
1381
						#如果是 "checkBox"
1382
						case "checkBox":
1383
 
1384
							#取得輸入的標題
1385
							$everyInputCode[]=$conf["columnName"][$i][$j];
1386
 
1387
							#放置空一行
1388
							$everyInputCode[]="&nbsp;";
1389
 
1390
							#跳出 switch
1391
							break;
1392
 
1393
						*/
1394
 
1395
						#如果是 "file"
1396
						case "file":
1397
 
1398
							#取得輸入的標題
1399
							$everyInputCode[]=$conf["columnName"][$i][$j];
1400
 
1401
							#涵式說明:
1402
							#可以瀏覽要上傳的檔案
1403
							#回傳的結果:
1404
							#$result,語法
1405
							#必填的參數:
1406
							$conf["form.uploadOneFile"]["formFileName"]=$conf["theColumnYouWant"][$i][$j];#該上傳檔案的表單名稱
1407
							#可省略的參數:
1408
							#$conf["maxFileSize"]="";#檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)
1409
							#$conf["browseButtonClass"]="__withoutBorder";#瀏覽檔案的按鈕樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式
1410
							#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
1411
							#$conf["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式
1412
							#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
1413
							#$conf["form.uploadOneFile"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式
1414
							#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
1415
							#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
1416
							#$conf["formStart"]="true";#是否為表單的開始,預設不使用
1417
							#$conf["formAction"]="";#表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己
1418
							#$conf["formTarget"]="_self";#表單要呈現回應的位置,預設為"_self".
1419
							#$conf["formEnd"]="true";#是否為表單的結束,預設不使用
1420
							#$conf["comment"]="";#該上傳檔案的註解。預設不顯示
1421
							$everyInputCode[]=form::uploadOneFile($conf["form.uploadOneFile"]);
1422
							unset($conf["form.uploadOneFile"]);
1423
 
1424
							#放置空一行
1425
							$everyInputCode[]="&nbsp;";
1426
 
1427
							#跳出 switch
1428
							break;
1429
 
1430
						#如果不是以上輸入類型
1431
						default :
1432
 
1433
							#設置錯誤識別
1434
							$result["status"]="false";
1435
 
1436
							#設置錯誤訊息
1437
							$result["error"][]=$conf["inputType"][$i][$j]."輸入類型不存在";
1438
 
1439
							#回傳結果
1440
							return $result;
1441
 
1442
						}#switch end
1443
 
1444
					}#for end
1445
 
1446
				}#for end
1447
 
1448
			}#if end
1449
 
1450
		#反之為修改作業
1451
		else{
1452
 
1453
			#如果 $conf["identifyVarName"] 沒有設定
1454
			if(!isset($conf["identifyVarName"])){
1455
 
1456
				#執行 $conf["dtName"] 元素次數的迴圈
1457
				for($i=0;$i<count($conf["dtName"]);$i++){
1458
 
1459
					#皆設為 "id"
1460
					$conf["identifyVarName"][]="id";
1461
 
1462
					}#for end
1463
 
1464
				}#if end
1465
 
1466
			#如果 $conf["identifyColumnName"] 沒有設定
1467
			if(!isset($conf["identifyColumnName"])){
1468
 
1469
				#執行 $conf["dtName"] 元素次數的迴圈
1470
				for($i=0;$i<count($conf["dtName"]);$i++){
1471
 
1472
					#皆設為 "id"
1473
					$conf["identifyColumnName"][]="id";
1474
 
1475
					}#for end
1476
 
1477
				}#if end
1478
 
1479
			#debug
1480
			#var_dump($conf);
1481
 
1482
			#初始儲存識別各資料表資料的識別欄位變數內容
1483
			$identifyVarValue=array();
1484
 
1485
			#涵式說明:
1486
			#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數
1487
			#回傳的結果:
1488
			#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
1489
			#$result["error"],錯誤訊息.
1490
			#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。
1491
			#$result["lostVarName"],沒有皆收到的變數名稱陣列
1492
			#$result["inputDataContent"],所接收的參數陣列.
1493
			#$result["inputDataContent"]["變數名稱"],所接收變數的內容.
1494
			#$result["inputDataCount"],總共接收到幾個元素.
1495
			#必填參數:
1496
			#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?
1497
			$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";
1498
			#可省略的參數:
1499
			#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.
1500
			#$conf["allowGet"]="true";
1501
 
1502
			#如果有設定 $conf["limitPrePage"]
1503
			if(isset($conf["limitPrePage"])){
1504
 
1505
				#$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.
1506
				$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPrePage"];
1507
 
1508
				}#if end
1509
 
1510
			#$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"
1511
			$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["transferLocation"];
1512
			#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.
1513
			#$conf["ignore"]=array();
1514
			#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.
1515
			#$conf["correctCharacter"]="false";
1516
			#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.
1517
			$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=$conf["identifyVarName"];
1518
			#參考資料來源:
1519
			#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php
1520
			#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
1521
			#備註:
1522
			#表單變數的名稱若含有「.」,則會變成「-」。
1523
			$receivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);
1524
			unset($conf["form.responseMultiInputDataSecurityEnhance"]);
1525
 
1526
			#debug
1527
			#var_dump($receivedVar);
1528
 
1529
			#如果接收表單變數失敗
1530
			if($receivedVar["status"]=="false"){
1531
 
1532
				#設置執行不正常
1533
				$result["status"]="false";
1534
 
1535
				#設置錯誤訊息
1536
				$result["error"]=$receivedVar;
1537
 
1538
				#回傳結果
1539
				return $result;
1540
 
1541
				}#if end
1542
 
1543
			#如果接收表單變數不存在
1544
			if($receivedVar["passed"]=="false"){
1545
 
1546
				#改用取得session變數試試
1547
				#函式說明:
1548
				#取得多個指定的session變數,並卸除之。
1549
				#回傳結果:
1550
				#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗。
1551
				#$result["error"],錯誤訊息陣列
1552
				#$result["function"],當前執行的函式名稱.
1553
				#$result["foundedAll"],是否找到所有的session變數,"true"代表找到,"false"代表沒找到.
1554
				#$result["founded"],每個session變數是否取得,"true"代表找到,"false"代表沒找到.
1555
				#$result["content"],取得的session變數內容陣列
1556
				#必填的參數:
1557
				$conf["session.getMultiSessionValues"]["sessionVarNameArray"]=$conf["identifyVarName"];#要取得內容的多個session變數名稱
1558
				#可省略的參數:
1559
				$conf["session.getMultiSessionValues"]["keyArrayOfGotSessionValue"]=$conf["identifyVarName"];#取得的session變數是否要將其key從「0,1,2...」改成自定的「名稱1,名稱2,名稱3...」。
1560
				$conf["session.getMultiSessionValues"]["unsetSessionVars"]="true";#"true"代表要卸除取值完的session變數,反之"false"爲保留session變數,預設爲"true"。
1561
				$getSessionValueResult=session::getMultiSessionValues($conf["session.getMultiSessionValues"]);
1562
				unset($conf["session.getMultiSessionValues"]);
1563
 
1564
				#取得session變數失敗
1565
				if($getSessionValueResult["status"]=="false"){
1566
 
1567
					#設置執行不正常
1568
					$result["status"]="false";
1569
 
1570
					#設置錯誤訊息
1571
					$result["error"]=$getSessionValueResult;
1572
 
1573
					#回傳結果
1574
					return $result;
1575
 
1576
					}#if end
1577
 
1578
				#如果沒有取得指定的全部session變數
1579
				if($getSessionValueResult["foundedAll"]=="false"){
1580
 
1581
					#設置執行不正常
1582
					$result["status"]="false";
1583
 
1584
					#設置錯誤訊息
1585
					$result["error"]=$getSessionValueResult;
1586
 
1587
					#回傳結果
1588
					return $result;
1589
 
1590
					}#if end
1591
 
1592
				#debug
1593
				#echo "<p>取得session變數</p>";
1594
 
1595
				#取得識別各資料表資料的識別欄位變數內容
1596
				$identifyVarValue=$getSessionValueResult["content"];
1597
 
1598
				}#if end
1599
 
1600
			#反之有接收到指定的表單變數
1601
			else{
1602
 
1603
				#取得識別各資料表資料的識別欄位變數內容
1604
				$identifyVarValue=$receivedVar["inputDataContent"];
1605
 
1606
				}#else end
1607
 
1608
			#放置要傳送隱藏識別不同資料表哪筆資料的變數
1609
			#傳送多個隱藏表單的資訊
1610
			#回傳的數值:
1611
			#$result["content"],語法
1612
			#$result["function"],當前執行的函數
1613
			#$result["sendedArrayName"],傳送的隱藏變數陣列
1614
			#$result["sendedArrayValue"],傳送的隱藏變數陣列數值
1615
			#$result["sendedArrayCount"],傳送的隱藏變數計數
1616
			#$result["error"],錯誤訊息陣列
1617
			#必填的參數:
1618
			$conf["form.inputMultiHidden"]["nameArray"]=$conf["identifyVarName"];#欲傳送的隱藏陣列變數名稱
1619
			$conf["form.inputMultiHidden"]["valueArray"]=$identifyVarValue;#欲傳送的隱藏陣列變數數值
1620
			$hiddenVar=form::inputMultiHidden($conf["form.inputMultiHidden"]);
1621
			unset($conf["form.inputMultiHidden"]);
1622
 
1623
			#如果建立要傳送的隱藏表單變數失敗
1624
			if($hiddenVar["status"]=="false"){
1625
 
1626
				#設置執行不正常
1627
				$result["status"]="false";
1628
 
1629
				#設置錯誤訊息
1630
				$result["error"]=$hiddenVar;
1631
 
1632
				#回傳結果
1633
				return $result;
1634
 
1635
				}#if end
1636
 
1637
			#放置隱藏的表單到表格裡面
1638
			$everyInputCode[]=$hiddenVar["content"];
1639
 
1640
			#$conf["inputType"] 有幾個元素就執行幾次
1641
			for($i=0;$i<count($conf["inputType"]);$i++){
1642
 
1643
				#根據 $conf["inputType"][$i] 有幾個元素就執行幾次
1644
				for($j=0;$j<count($conf["inputType"][$i]);$j++){
1645
 
1646
					#檢查連線到資料庫的變數是否有存在
1647
					#函式說明:
1648
					#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1649
					#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1650
					#$reuslt["error"],執行不正常結束的錯訊息陣列.
1651
					#$result["function"],當前執行的函式名稱.
1652
					#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1653
					#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1654
					#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1655
					#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
1656
					#必填寫的參數:
1657
					#$conf["check.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1658
					$conf["check.checkArguments"]["varInput"]=&$conf;
1659
					#$conf["check.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1660
					$conf["check.checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","dbName","dtName");
1661
					#$conf["check.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
1662
					$conf["check.checkArguments"]["mustBeFilledVariableType"]=array("array","array","array","array");
1663
					#可以省略的參數:
1664
					#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
1665
					#$conf["canBeEmptyString"]="false";
1666
					#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1667
					#$conf["skipableVariableName"]=array();
1668
					#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1669
					#$conf["skipableVariableType"]=array();
1670
					#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1671
					#$conf["skipableVarDefaultValue"]=array("");
1672
					$checkResult=variableCheck::checkArguments($conf["check.checkArguments"]);
1673
					unset($conf["check.checkArguments"]);
1674
 
1675
					#如果檢查失敗
1676
					if($checkResult["status"]=="false"){
1677
 
1678
						#設置執行不正常
1679
						$result["status"]="false";
1680
 
1681
						#設置執行錯誤
1682
						$result["error"]=$checkResult;
1683
 
1684
						#回傳結果
1685
						return $result;
1686
 
1687
						}#if end
1688
 
1689
					#如果檢查不通過
1690
					if($checkResult["passed"]=="false"){
1691
 
1692
						#設置執行不正常
1693
						$result["status"]="false";
1694
 
1695
						#設置執行錯誤
1696
						$result["error"]=$checkResult;
1697
 
1698
						#回傳結果
1699
						return $result;
1700
 
1701
						}#if end
1702
 
1703
					#如果 $conf["inputType"][$i][$j] 沒有設定
1704
					if(!isset($conf["inputType"][$i][$j])){
1705
 
1706
						#代表可能設定錯誤
1707
 
1708
						#設置執行不正常
1709
						$result["status"]="false";
1710
 
1711
						#設置錯誤訊息
1712
						$result["error"][]="\$conf[\"inputType\"]可能有錯";
1713
 
1714
						#回傳結果
1715
						return $result;
1716
 
1717
						}#if end
1718
 
1719
					#根據 $conf["inputType"][$i][$j] 來呈現填寫的形式
1720
					#"singleLine"=>單行文字
1721
					#"multiLine"=>多行文字
1722
					#"select"=>下拉式選單
1723
					#"radio"=>單選
1724
					#"checkBox"=>複選
1725
					#"file"=>檔案
1726
					switch($conf["inputType"][$i][$j]){
1727
 
1728
						#如果是 "singleLine"
1729
						case "singleLine":
1730
 
1731
							#取得資料表的資料
1732
							#涵式說明:
1733
							#一次取得資料庫、表的資料
1734
							#回傳的結果
1735
							#$result["status"],執行結果"true"為成功;"false"為執行失敗。
1736
							#$result["error"],錯誤訊息陣列。
1737
							#$result["dataColumnName"],抓取的資料欄位名稱陣列.
1738
								#$result["dataColumnName"][$i]代表第$i+1個欄位名稱
1739
							#$result["dataContent"],爲資料的內容。
1740
							#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]
1741
								#$dataSetNum 爲第$dataSetNum+1筆資料
1742
								#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱
1743
							#$result["dataCount"],爲取得的資料筆數。
1744
							#$result["sql"],執行的sql字串.
1745
							#必填的參數:
1746
							$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"][$i];#爲dbServer的位置。
1747
							$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"][$i];#爲登入dbServer的帳號。
1748
							$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"][$i];#爲要存取的資料庫名稱
1749
							$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"][$i];#爲要存取的資料表名稱
1750
							$conf["db.fastGetDbData"]["columnYouWant"]=$conf["theColumnYouWant"][$i];#你想要的欄位!,若設為「array("*")」則代表全部欄位.
1751
							#可省略的參數:
1752
 
1753
							#如果有設置連線密碼
1754
							if(isset($conf["dbPassword"])){
1755
 
1756
								$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"][$i];#爲要存取dbServer的密碼
1757
 
1758
								}#if end
1759
 
1760
							#debug
1761
							#var_dump($identifyVarValue);
1762
 
1763
							$conf["db.fastGetDbData"]["WhereColumnName"]=array($conf["identifyColumnName"][$i]);#用於判斷語句的欄位項目陣列。
1764
							$conf["db.fastGetDbData"]["WhereColumnValue"]=array($identifyVarValue[$conf["identifyVarName"][$i]]);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。
1765
							#$conf["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。
1766
							#$conf["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。
1767
							#$conf["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。
1768
							#$conf["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。
1769
							#$conf["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。
1770
							#$conf["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。
1771
							#$conf["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。
1772
							#$conf["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。
1773
							$getExistDataResult=db::fastGetDbData($conf["db.fastGetDbData"]);
1774
							unset($conf["db.fastGetDbData"]);
1775
 
1776
							#debug
1777
							#var_dump($getExistDataResult);
1778
 
1779
							#debug
1780
							#var_dump($getExistDataResult["dataContent"][$conf["theColumnYouWant"][$i][$j]]);
1781
 
1782
							#如果 取得 既有資料失敗
1783
							if($getExistDataResult["status"]=="false"){
1784
 
1785
								#設置執行不正常
1786
								$result["status"]="false";
1787
 
1788
								#設置執行錯誤
1789
								$result["error"]=$getExistDataResult;
1790
 
1791
								#回傳結果
1792
								return $result;
1793
 
1794
								}#if end
1795
 
1796
							#如果 資料筆數等於 0
1797
							if($getExistDataResult["dataCount"]==0){
1798
 
1799
								#設置執行不正常
1800
								$result["status"]="false";
1801
 
1802
								#設置執行錯誤
1803
								$result["error"][]="找不到既有資料";
1804
 
1805
								#回傳結果
1806
								return $result;
1807
 
1808
								}#if end
1809
 
1810
							#取得輸入的標題
1811
							$everyInputCode[]=$conf["columnName"][$i][$j];
1812
 
1813
							#涵式說明:
1814
							#可以輸入文字的表單
1815
							#回傳的結果:
1816
							#$result,語法
1817
							#必填的參數
1818
							$conf["form.inputText"]["name"]=$conf["theColumnYouWant"][$i][$j];#爲該文字輸入框的名稱,用於讓接收頁面讀取的名稱。
1819
							$conf["form.inputText"]["readOnly"]="false";#爲該文字框是否可以填寫資料,若要只能觀看不能填寫,那麼就必須將其值設爲"true",反之要設爲"false"
1820
							#可省略的參數:
1821
							#$conf["form.inputText"]["width"]="";#爲文字框的外觀長度,預設是不作設定讓瀏覽器自行決定。
1822
							#$conf["form.inputText"]["maxInputLength"]="";#爲可輸入的最大位元長度,預設不限制。
1823
							#$conf["form.inputText"]["autoFocus"]="true";#是否為將填寫的指標移到該表單,"true"代表要
1824
							$conf["form.inputText"]["value"]=$getExistDataResult["dataContent"][$conf["theColumnYouWant"][$i][$j]][0];#爲該文字框預設要顯示的文字,預設爲""。
1825
							#$conf["form.inputText"]["class"]="";#爲要套用的css樣式,若省略,則會套用預設的 __inputTextCssStyle 樣式,其屬性爲 "width:100%","font-size:30px"
1826
							#$conf["form.inputText"]["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)、"onClick"(按下按鈕時)、"onkeyup"(當鍵盤按下放開後)、"onmouseover"(當滑鼠移過去的時候)...,須搭配$conf["jsSubmitActionTarget"]參數。
1827
							#$conf["form.inputText"]["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
1828
							#$conf["form.inputText"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
1829
							#$conf["form.inputText"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
1830
							#$conf["form.inputText"]["formStart"]="true";#爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始.
1831
							#$conf["form.inputText"]["formAction"]="";#表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.
1832
							#$conf["form.inputText"]["formName"]="";#爲該表單的名稱
1833
							#$conf["form.inputText"]["formMethod"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
1834
							#$conf["form.inputText"]["formTarget"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
1835
							#$conf["form.inputText"]["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;
1836
							#$conf["form.inputText"]["tableClass"]="";#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
1837
							#$conf["form.inputText"]["formEnd"]="true";#爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束.
1838
							#$conf["form.inputText"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
1839
							#$conf["form.inputText"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
1840
							#$conf["form.inputText"]["tableEnd"]="true";#爲該表單是否要以</table>結尾,"true"爲是.
1841
							$everyInputCode[]=form::inputText($conf["form.inputText"]);
1842
							unset($conf["form.inputText"]);
1843
 
1844
							#放置空一行
1845
							$everyInputCode[]="&nbsp;";
1846
 
1847
							#跳出 switch
1848
							break;
1849
 
1850
						#如果是 "multiLine"
1851
						case "multiLine":
1852
 
1853
							#取得資料表的資料
1854
							#涵式說明:
1855
							#一次取得資料庫、表的資料
1856
							#回傳的結果
1857
							#$result["status"],執行結果"true"為成功;"false"為執行失敗。
1858
							#$result["error"],錯誤訊息陣列。
1859
							#$result["dataColumnName"],抓取的資料欄位名稱陣列.
1860
								#$result["dataColumnName"][$i]代表第$i+1個欄位名稱
1861
							#$result["dataContent"],爲資料的內容。
1862
							#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]
1863
								#$dataSetNum 爲第$dataSetNum+1筆資料
1864
								#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱
1865
							#$result["dataCount"],爲取得的資料筆數。
1866
							#$result["sql"],執行的sql字串.
1867
							#必填的參數:
1868
							$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"][$i][$j];#爲dbServer的位置。
1869
							$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"][$i][$j];#爲登入dbServer的帳號。
1870
							$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"][$i][$j];#爲要存取的資料庫名稱
1871
							$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"][$i][$j];#爲要存取的資料表名稱
1872
							$conf["db.fastGetDbData"]["columnYouWant"]=array($conf["theColumnYouWant"][$i][$j]);#你想要的欄位!,若設為「array("*")」則代表全部欄位.
1873
							#可省略的參數:
1874
 
1875
							#如果有設置連線密碼
1876
							if(isset($conf["dbPassword"])){
1877
 
1878
								$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"][$i][$j];#爲要存取dbServer的密碼
1879
 
1880
								}#if end
1881
 
1882
							$conf["db.fastGetDbData"]["WhereColumnName"]=array($conf["identifyVarName"][$i]);#用於判斷語句的欄位項目陣列。
1883
							$conf["db.fastGetDbData"]["WhereColumnValue"]=array($conf["identifyColumnName"][$i]);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。
1884
							#$conf["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。
1885
							#$conf["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。
1886
							#$conf["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。
1887
							#$conf["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。
1888
							#$conf["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。
1889
							#$conf["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。
1890
							#$conf["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。
1891
							#$conf["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。
1892
							$getExistDataResult=db::fastGetDbData($conf["db.fastGetDbData"]);
1893
							unset($conf["db.fastGetDbData"]);
1894
 
1895
							#如果 取得 既有資料失敗
1896
							if($getExistDataResult["status"]=="false"){
1897
 
1898
								#設置執行不正常
1899
								$result["status"]="false";
1900
 
1901
								#設置執行錯誤
1902
								$result["error"]=$getExistDataResult;
1903
 
1904
								#回傳結果
1905
								return $result;
1906
 
1907
								}#if end
1908
 
1909
							#如果 資料筆數為 0
1910
							if($getExistDataResult["dataCount"]==0){
1911
 
1912
								#設置執行不正常
1913
								$result["status"]="false";
1914
 
1915
								#設置執行錯誤
1916
								$result["error"][]="找不到對應的資料表資料";
1917
 
1918
								#回傳結果
1919
								return $result;
1920
 
1921
								}#if end
1922
 
1923
							#取得輸入的標題
1924
							$everyInputCode[]=$conf["columnName"][$i][$j];
1925
 
1926
							#涵式說明:
1927
							#可以輸入文字的區塊
1928
							#回傳結果:
1929
							#$result,語法
1930
							#必填的參數:
1931
							$conf["form"]["inputTextArea"]["name"]=$conf["theColumnYouWant"][$i][$j];#爲文字輸入框的名稱,供接收端辨識用。
1932
							$conf["form"]["inputTextArea"]["readOnly"]="false";#爲是否要爲唯讀,如果爲"true",則爲唯讀。反之則爲"false"。
1933
							#可省略的參數:
1934
							#$conf["form"]["inputTextArea"]["cols"]="";#爲文字輸入框的欄位數(寬),預設爲按照瀏覽器設定值。
1935
							#$conf["form"]["inputTextArea"]["rows"]="";#爲文字輸入框的列數(高),預設爲按照瀏覽器設定值。
1936
							#$conf["form"]["inputTextArea"]["maxInputLength"]="";#爲文字輸入的長度限制,預設無限制。
1937
							$conf["form"]["inputTextArea"]["defaultText"]=$getExistDataResult["dataContent"][$conf["theColumnYouWant"][$i][$j]][0];#爲文字輸入框裏面的預設文字內容,預設是空的。
1938
							#$conf["form"]["inputTextArea"]["class"]=;#爲要套用的css樣式。如果沒有指定 ,則採用預設的css樣式,其屬性爲 "width:100%","height:120px","font-size:30px"
1939
							#$conf["form"]["inputTextArea"]["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
1940
							#$conf["form"]["inputTextArea"]["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
1941
							#$conf["form"]["inputTextArea"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
1942
							#$conf["form"]["inputTextArea"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
1943
							#$conf["form"]["inputTextArea"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
1944
							#$conf["form"]["inputTextArea"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
1945
							$everyInputCode[]=form::inputTextArea($conf["form"]["inputTextArea"]);
1946
							unset($conf["form"]["inputTextArea"]);
1947
 
1948
							#放置空一行
1949
							$everyInputCode[]="&nbsp;";
1950
 
1951
							#跳出 switch
1952
							break;
1953
 
1954
						#如果是 "select"
1955
						case "select":
1956
 
1957
							#取得資料表的資料
1958
							#涵式說明:
1959
							#一次取得資料庫、表的資料
1960
							#回傳的結果
1961
							#$result["status"],執行結果"true"為成功;"false"為執行失敗。
1962
							#$result["error"],錯誤訊息陣列。
1963
							#$result["dataColumnName"],抓取的資料欄位名稱陣列.
1964
								#$result["dataColumnName"][$i]代表第$i+1個欄位名稱
1965
							#$result["dataContent"],爲資料的內容。
1966
							#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]
1967
								#$dataSetNum 爲第$dataSetNum+1筆資料
1968
								#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱
1969
							#$result["dataCount"],爲取得的資料筆數。
1970
							#$result["sql"],執行的sql字串.
1971
							#必填的參數:
1972
							$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"][$i][$j];#爲dbServer的位置。
1973
							$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"][$i][$j];#爲登入dbServer的帳號。
1974
							$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"][$i][$j];#爲要存取的資料庫名稱
1975
							$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"][$i][$j];#爲要存取的資料表名稱
1976
							$conf["db.fastGetDbData"]["columnYouWant"]=array($conf["theColumnYouWant"][$i][$j]);#你想要的欄位!,若設為「array("*")」則代表全部欄位.
1977
							#可省略的參數:
1978
 
1979
							#如果有設置連線密碼
1980
							if(isset($conf["dbPassword"])){
1981
 
1982
								$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"][$i][$j];#爲要存取dbServer的密碼
1983
 
1984
								}#if end
1985
 
1986
							$conf["db.fastGetDbData"]["WhereColumnName"]=array($conf["identifyVarName"][$i]);#用於判斷語句的欄位項目陣列。
1987
							$conf["db.fastGetDbData"]["WhereColumnValue"]=array($conf["identifyColumnName"][$i]);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。
1988
							#$conf["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。
1989
							#$conf["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。
1990
							#$conf["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。
1991
							#$conf["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。
1992
							#$conf["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。
1993
							#$conf["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。
1994
							#$conf["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。
1995
							#$conf["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。
1996
							$getExistDataResult=db::fastGetDbData($conf["db.fastGetDbData"]);
1997
							unset($conf["db.fastGetDbData"]);
1998
 
1999
							#如果 取得 既有資料失敗
2000
							if($getExistDataResult["status"]=="false"){
2001
 
2002
								#設置執行不正常
2003
								$result["status"]="false";
2004
 
2005
								#設置執行錯誤
2006
								$result["error"]=$getExistDataResult;
2007
 
2008
								#回傳結果
2009
								return $result;
2010
 
2011
								}#if end
2012
 
2013
							#如果 資料筆數等於 0
2014
							if($getExistDataResult["dataCount"]==0){
2015
 
2016
								#設置執行不正常
2017
								$result["status"]="false";
2018
 
2019
								#設置執行錯誤
2020
								$result["error"][]="找不到既有資料";
2021
 
2022
								#回傳結果
2023
								return $result;
2024
 
2025
								}#if end
2026
 
2027
							#取得輸入的標題
2028
							$everyInputCode[]=$conf["columnName"][$i][$j];
2029
 
2030
							#涵式說明:
2031
							#建立下拉式表單
2032
							#回傳的結果:
2033
							#$result,語法
2034
							#必填的參數:
2035
							$conf["form"]["inputSelect"]["name"]=$conf["theColumnYouWant"][$i][$j];#爲該下拉式選單的名稱
2036
							$conf["form"]["inputSelect"]["sendValue"]=$conf["inputSelectOption"][$i][$j];#爲陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
2037
							#可省略的參數:
2038
							#$conf["form"]["inputSelect"]["formName"]="";#該表單的名稱
2039
							#$conf["form"]["inputSelect"]["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。
2040
							#$conf["form"]["inputSelect"]["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。
2041
							$conf["form"]["inputSelect"]["defaultValue"]=$getExistDataResult["dataContent"][$conf["theColumnYouWant"][$i][$j]][0];#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。
2042
							#$conf["form"]["inputSelect"]["class"]="";#爲要套用的class樣式,若省略的話預設採用 __simpleButtonLinkDefaultButtonCssStyle  的css樣式名稱
2043
								#其屬性爲   "width","height","font-size","text-align"
2044
								#其屬性值爲 "100%"  ,  "50"  ,    "30"   ,   "center"
2045
							#$conf["readOnly"],"字串",內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.
2046
							$conf["readOnly"]="false";
2047
							#$conf["form"]["inputSelect"]["formAction"]="";#爲該下拉式表單要傳送到的位置
2048
							#$conf["form"]["inputSelect"]["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self
2049
							#$conf["form"]["inputSelect"]["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
2050
							#$conf["form"]["inputSelect"]["jsAction"]="";#爲該js是要做什麼,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
2051
							#$conf["form"]["inputSelect"]["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
2052
							#$conf["form"]["inputSelect"]["hiddenVar"]=array("");
2053
							#$conf["form"]["inputSelect"]["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
2054
							#$conf["form"]["inputSelect"]["hiddenVarValue"]=array("");
2055
							#$conf["form"]["inputSelect"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
2056
							#$conf["form"]["inputSelect"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
2057
							#$conf["form"]["inputSelect"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
2058
							#$conf["form"]["inputSelect"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
2059
							#備註:
2060
							#$_SERVER["PHP_SELF"]為php檔案自己
2061
							#參考資料來源:
2062
							#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。
2063
							#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。
2064
							$everyInputCode[]=form::inputSelect($conf["form"]["inputSelect"]);
2065
							unset($conf["form"]["inputSelect"]);
2066
 
2067
							#放置空一行
2068
							$everyInputCode[]="&nbsp;";
2069
 
2070
							#跳出 switch
2071
							break;
2072
 
2073
						# radio 與 checkBox 使用率低,所以先不製作。
2074
						/*
2075
 
2076
						#如果是 "radio"
2077
						case "radio":
2078
 
2079
							#取得輸入的標題
2080
							$everyInputCode[]=$conf["columnName"][$i][$j];
2081
 
2082
 
2083
 
2084
							#放置空一行
2085
							$everyInputCode[]="&nbsp;";
2086
 
2087
							#跳出 switch
2088
							break;
2089
 
2090
						#如果是 "checkBox"
2091
						case "checkBox":
2092
 
2093
							#取得輸入的標題
2094
							$everyInputCode[]=$conf["columnName"][$i][$j];
2095
 
2096
							#放置空一行
2097
							$everyInputCode[]="&nbsp;";
2098
 
2099
							#跳出 switch
2100
							break;
2101
 
2102
						*/
2103
 
2104
						#如果是 "file"
2105
						case "file":
2106
 
2107
							#取得輸入的標題
2108
							$everyInputCode[]=$conf["columnName"][$i][$j];
2109
 
2110
							#涵式說明:
2111
							#可以瀏覽要上傳的檔案
2112
							#回傳的結果:
2113
							#$result,語法
2114
							#必填的參數:
2115
							$conf["form.uploadOneFile"]["formFileName"]=$conf["theColumnYouWant"][$i][$j];#該上傳檔案的表單名稱
2116
							#可省略的參數:
2117
							#$conf["maxFileSize"]="";#檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)
2118
							#$conf["browseButtonClass"]="__withoutBorder";#瀏覽檔案的按鈕樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式
2119
							#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
2120
							#$conf["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式
2121
							#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
2122
							#$conf["form.uploadOneFile"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式
2123
							#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
2124
							#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
2125
							#$conf["formStart"]="true";#是否為表單的開始,預設不使用
2126
							#$conf["formAction"]="";#表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己
2127
							#$conf["formTarget"]="_self";#表單要呈現回應的位置,預設為"_self".
2128
							#$conf["formEnd"]="true";#是否為表單的結束,預設不使用
2129
							#$conf["comment"]="";#該上傳檔案的註解。預設不顯示
2130
							$everyInputCode[]=form::uploadOneFile($conf["form.uploadOneFile"]);
2131
							unset($conf["form.uploadOneFile"]);
2132
 
2133
							#放置空一行
2134
							$everyInputCode[]="&nbsp;";
2135
 
2136
							#跳出 switch
2137
							break;
2138
 
2139
						#如果不是以上輸入類型
2140
						default :
2141
 
2142
							#設置錯誤識別
2143
							$result["status"]="false";
2144
 
2145
							#設置錯誤訊息
2146
							$result["error"][]=$conf["inputType"][$i][$j]."輸入類型不存在";
2147
 
2148
							#回傳結果
2149
							return $result;
2150
 
2151
						}#switch end
2152
 
2153
					}#for end
2154
 
2155
				}#for end
2156
 
2157
			}#else end
2158
 
2159
		#設置送出的按鈕
2160
		#放置按鈕
2161
		#必要的參數:
2162
		$conf["form"]["button"]["buttonDisplayValue"]="送出";#爲按鈕上顯示的文字。
2163
		#可省略的參數:
2164
		#$conf["form"]["button"]["buttonStyleName"]="";#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
2165
			#其屬性爲   "width","height","font-size","text-align"
2166
			#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
2167
		#$conf["form"]["button"]["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
2168
		#$conf["form"]["button"]["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
2169
		#$conf["form"]["button"]["tablStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"true"。
2170
		#$conf["form"]["button"]["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
2171
		#$conf["form"]["button"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
2172
		#$conf["form"]["button"]["trClass"]="__withoutBorder";#<tr>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
2173
		#$conf["form"]["button"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
2174
		#$conf["form"]["button"]["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
2175
		#$conf["form"]["button"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
2176
		#$conf["form"]["button"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
2177
		#$conf["form"]["button"]["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是。預設爲"true"。
2178
		#$conf["form"]["button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始。
2179
		#$conf["form"]["button"]["action"]=$conf["prePageAction"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
2180
		#$conf["form"]["button"]["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
2181
		$conf["form"]["button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束。
2182
		$everyInputCode[]=form::button($conf["form"]["button"]);
2183
		unset($conf["form"]["button"]);
2184
 
2185
		#放置一欄表格
2186
		#涵式說明:
2187
		#建立欄的元素,以及指定裏面要放什麼內容
2188
		#回傳的變數:
2189
		#$result["content"],建立欄元素的語法
2190
		#$result["status"],"true"代表執行成功;"false"代表執行失敗。
2191
		#$result["error"],錯誤訊息陣列
2192
		#必填的參數:
2193
		$conf["table"]["printColumn"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
2194
		$conf["table"]["printColumn"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
2195
		$conf["table"]["printColumn"]["tdContent"]=$everyInputCode;#列裏面要放的元素是?如果要空一列則可以輸array("&nbsp;")
2196
		#可以省略的參數:
2197
		$conf["table"]["printColumn"]["tableStartClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
2198
		$conf["table"]["printColumn"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
2199
		$conf["table"]["printColumn"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
2200
		#$conf["table"]["printColumn"]["formStart"]="true";#是否要有表單的開始
2201
		#$conf["table"]["printColumn"]["formName"]="";#該表單的名稱
2202
		#$conf["table"]["printColumn"]["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
2203
		#$conf["table"]["printColumn"]["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
2204
		#$conf["table"]["printColumn"]["formEnd"]="true";#是否要有表單的結束
2205
		$table["printColumn"]=table::printColumn($conf["table"]["printColumn"]);
2206
		unset($conf["table"]["printColumn"]);
2207
 
2208
		#如果 $table["printColumn"]["status"] 等於 "false"
2209
		if($table["printColumn"]["status"]=="false"){
2210
 
2211
			#設置執行失敗識別
2212
			$result["status"]="false";
2213
 
2214
			#設置錯誤訊息
2215
			$result["error"]=$table["printColumn"];
2216
 
2217
			#回傳結果
2218
			return $result;
2219
 
2220
			}#if end
2221
 
2222
		#取得整個申請表的語法
2223
		$result["content"]=$table["printColumn"]["content"];
2224
 
2225
		#設置執行成功識別
2226
		$result["status"]="true";
2227
 
2228
		#回傳結果
2229
		return $result;
2230
 
2231
		}#function addAndeditRequest end
2232
 
2233
	/*
2234
	#函式說明:
2235
	#處理新增/修改資料表資料的要求
2236
	#回傳結果:
2237
	#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.
2238
	#$result["error"],錯誤訊息陣列.
2239
	#$result["warning"],警告訊息.
2240
	#$result["content"],我們所要的內容.
2241
	#$result["function"],當前執行的函式名稱.
2242
	#必填參數:
2243
	#$conf["theColumnYouWant"],二維字串陣列,代表新增或修改資料時,的目標欄位.
2244
		#$conf["theColumnYouWant"][0][0],代表父表(第一張表)的第1個使用到的欄位.
2245
		#$conf["theColumnYouWant"][0][1],代表父表(第一張表)的第2個使用到的欄位.
2246
		#$conf["theColumnYouWant"][1][2],代表子表(第二張表)的第3個使用到的欄位.
2247
		#$conf["theColumnYouWant"][2][3],代表子表(第三張表)的第4個使用到的欄位.
2248
	$conf["theColumnYouWant"][$i][$j]=;
2249
	#$conf["inputType"],二維字串陣列,每個欄位內容的輸入類型.
2250
		#可用的類型有"singleLine","multiLine","select","radio","checkBox","file"
2251
		#$conf["inputType"][0][0],代表父表(第一張表)使用到的第1個欄位的輸入型態.
2252
		#$conf["inputType"][0][1],代表父表(第一張表)使用到的第2個欄位的輸入型態.
2253
		#$conf["inputType"][1][2],代表子表(第二張表)使用到的第3個欄位的輸入型態.
2254
		#$conf["inputType"][2][3],代表子表(第三張表)使用到的第4個欄位的輸入型態.
2255
		#radio 與 checkBox 使用率低,所以尚未製作。
2256
	$conf["inputType"][$i][$j]=;
2257
	#$conf["addOrEdit"],字串變數,代表是新增(add)或編輯(edit)現有資料.
2258
	$conf["addOrEdit"]="";
2259
	#可省略參數:
2260
	#$conf["failedAction"],字串,更新失敗時,要轉址到哪邊,預設為"index.php".
2261
	#$conf["failedAction"]="index.php";
2262
	#$conf["uploadDirUserDefine"],字串陣列,第$i-1張表的第$j-1個欄位,若有記錄上傳檔案,則可以分別指定存放的位置,否則預設都為"./uploadedFile".
2263
	#$conf["uploadDirUserDefine"][$i][$j]="";
2264
	#$conf["dbAddress"],字串陣列,爲每個mysql-Server的位置.
2265
	#$conf["dbAddress"]=array($dbAddress);
2266
	#$conf["dbAccount"],字串陣列,爲每個用於連入mysql-Server時要使用的帳號.
2267
	#$conf["dbAccount"]=array($dbAccount);
2268
	#$conf["dbName"],字串陣列,爲每個目標資料表所屬的資料庫.
2269
	#$conf["dbName"]=array($dbName);
2270
	#$conf["dtName"],字串陣列,爲每個目標資料表所屬的資料表.
2271
	#$conf["dtName"]=array("");
2272
	#$conf["dbPassword"],字串陣列,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
2273
	#$conf["dbPassword"]=array($dbPassword);
2274
	#$conf["columnName"],二維字串陣列,顯示在新增欄位上的名稱與說明,預設為$conf["theColumnYouWant"].
2275
		#$conf["columnName"][0][0],代表父表(第一張表)使用到的第1個欄位名稱與說明.
2276
		#$conf["columnName"][0][1],代表父表(第一張表)使用到的第2個欄位名稱與說明.
2277
		#$conf["columnName"][1][2],代表子表(第二張表)使用到的第3個欄位名稱與說明.
2278
		#$conf["columnName"][2][3],代表子表(第三張表)使用到的第4個欄位名稱與說明.
2279
	#$conf["columnName"]=$conf["theColumnYouWant"];
2280
	#$conf["limitPage"],字串陣列,限制前一個頁面為哪些名稱之一才能接收變數.
2281
	#$conf["limitPage"]=array();
2282
	#$conf["identifyVarName"],字串陣列變數,第$i+1張表用來識別是哪一筆資料的變數名稱,預設為"id".
2283
	#$conf["identifyVarName"][$i]="id";
2284
	#$conf["identifyColumnName"],字串陣列變數,第$i+1張表用來識別是哪一筆資料的欄位名稱,預設為"id".
2285
	#$conf["identifyColumnName"][$i]="id";
2286
	#參考資料:
2287
	#無.
2288
	#備註:
2289
	#建構中.
2290
	*/
2291
	public static function addAndEditRequestResponse($conf){
2292
 
2293
		#初始化要回傳的陣列
2294
		$result=array();
2295
 
2296
		#初始化要回傳的語法
2297
		$result["content"]="";
2298
 
2299
		#當前執行的函式名稱
2300
		$result["function"]=__FUNCTION__;
2301
 
2302
		#如果 $conf 不為陣列
2303
		if(gettype($conf)!="array"){
2304
 
2305
			#設置執行失敗
2306
			$result["status"]="false";
2307
 
2308
			#設置執行錯誤訊息
2309
			$result["error"][]="\$conf變數須為陣列形態";
2310
 
2311
			#如果傳入的參數為 null
2312
			if($conf==null){
2313
 
2314
				#設置執行錯誤訊息
2315
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2316
 
2317
				}#if end
2318
 
2319
			#回傳結果
2320
			return $result;
2321
 
2322
			}#if end
2323
 
2324
		#如果沒有設定 $conf["uploadDirUserDefine"] 且 $conf["inputType"] 有設定 $conf["inputType"][0] 存在
2325
		if(!isset($conf["uploadDirUserDefine"]) && isset($conf["inputType"]) && isset($conf["inputType"][0]) ){
2326
 
2327
			#$conf["inputType"] 有幾個元素就執行幾次
2328
			for($i=0;$i<count($conf["inputType"]);$i++){
2329
 
2330
				#根據 $conf["inputType"][$i] 有幾個元素就執行幾次
2331
				for($j=0;$j<count($conf["inputType"][$i]);$j++){
2332
 
2333
					#預設為 "./uploadedFile".
2334
					$conf["uploadDirUserDefine"][$i][$j]="./uploadedFile";
2335
 
2336
					}#for end
2337
 
2338
				}#for end
2339
 
2340
			}#if end
2341
 
2342
		#檢查參數
2343
		#函式說明:
2344
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2345
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2346
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2347
		#$result["function"],當前執行的函式名稱.
2348
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2349
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2350
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2351
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2352
		#必填寫的參數:
2353
		#$conf["variableCheck.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2354
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
2355
		#$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2356
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="theColumnYouWant";
2357
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="inputType";
2358
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="addOrEdit";
2359
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="dbAddress";
2360
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="dbAccount";
2361
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="dbName";
2362
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="dtName";
2363
		#$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
2364
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";
2365
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";
2366
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="string";
2367
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";
2368
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";
2369
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";
2370
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";
2371
		#可以省略的參數:
2372
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
2373
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
2374
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2375
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="columnName";
2376
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="failedAction";
2377
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="limitPage";
2378
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="uploadDirUserDefine";
2379
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="dbPassword";
2380
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2381
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
2382
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";
2383
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
2384
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
2385
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
2386
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2387
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"theColumnYouWant\"]";
2388
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="index.php";
2389
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
2390
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=$conf["uploadDirUserDefine"];
2391
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
2392
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
2393
		unset($conf["variableCheck.checkArguments"]);
2394
 
2395
		#如果檢查失敗
2396
		if($checkResult["status"]=="false"){
2397
 
2398
			#設置執行不正常
2399
			$result["status"]="false";
2400
 
2401
			#設置執行錯誤
2402
			$result["error"]=$checkResult;
2403
 
2404
			#回傳結果
2405
			return $result;
2406
 
2407
			}#if end
2408
 
2409
		#如果檢查不通過
2410
		if($checkResult["passed"]=="false"){
2411
 
2412
			#設置執行不正常
2413
			$result["status"]="false";
2414
 
2415
			#設置執行錯誤
2416
			$result["error"]=$checkResult;
2417
 
2418
			#回傳結果
2419
			return $result;
2420
 
2421
			}#if end
2422
 
2423
		#初始化要寫入或更新到資料庫的內容陣列
2424
		$dataToWrite=array();
2425
 
2426
		#如果是新增作業
2427
		if($conf["addOrEdit"]=="add"){
2428
 
2429
			#$conf["inputType"] 有幾個元素就執行幾次
2430
			for($i=0;$i<count($conf["inputType"]);$i++){
2431
 
2432
				#根據 $conf["inputType"][$i] 有幾個元素就執行幾次
2433
				for($j=0;$j<count($conf["inputType"][$i]);$j++){
2434
 
2435
					#根據 $conf["inputType"][$i][$j] 來呈現填寫的形式
2436
					#"singleLine"=>單行文字
2437
					#"multiLine"=>多行文字
2438
					#"select"=>下拉式選單
2439
					#"radio"=>單選
2440
					#"checkBox"=>複選
2441
					#"file"=>檔案
2442
					switch($conf["inputType"][$i][$j]){
2443
 
2444
						#如果是 "singleLine"
2445
						case "singleLine":
2446
 
2447
							#取得單行文字的內容
2448
							#涵式說明:
2449
							#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數
2450
							#回傳的結果:
2451
							#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
2452
							#$result["error"],錯誤訊息.
2453
							#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。
2454
							#$result["lostVarName"],沒有皆收到的變數名稱陣列
2455
							#$result["inputDataContent"],所接收的參數陣列.
2456
							#$result["inputDataContent"]["變數名稱"],所接收變數的內容.
2457
							#$result["inputDataCount"],總共接收到幾個元素.
2458
							#必填參數:
2459
							#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?
2460
							$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";
2461
							#可省略的參數:
2462
							#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.
2463
							#$conf["allowGet"]="true";
2464
							#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.
2465
							$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];
2466
							#$conf["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"
2467
							$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];
2468
							#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.
2469
							#$conf["ignore"]=array();
2470
							#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.
2471
							#$conf["correctCharacter"]="false";
2472
							#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.
2473
							$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=array($conf["theColumnYouWant"][$i][$j]);
2474
							#參考資料來源:
2475
							#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php
2476
							#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
2477
							#備註:
2478
							#表單變數的名稱若含有「.」,則會變成「-」。
2479
							$reveivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);
2480
							unset($conf["form.responseMultiInputDataSecurityEnhance"]);
2481
 
2482
							#如果接收變數失敗
2483
							if($reveivedVar["status"]=="false"){
2484
 
2485
								#設置錯誤識別
2486
								$result["status"]="false";
2487
 
2488
								#設置錯誤訊息
2489
								$result["error"]=$reveivedVar;
2490
 
2491
								#回傳結果
2492
								return $result;
2493
 
2494
								}#if end
2495
 
2496
							#如果變數不符合規定
2497
							if($reveivedVar["passed"]=="false"){
2498
 
2499
								#設置錯誤識別
2500
								$result["status"]="false";
2501
 
2502
								#設置錯誤訊息
2503
								$result["error"]=$reveivedVar;
2504
 
2505
								#回傳結果
2506
								return $result;
2507
 
2508
								}#if end
2509
 
2510
							#記錄接收到的第$i-1個資料表的第$j-1個欄位變數
2511
							$dataToWrite[$i][$j]=$reveivedVar["inputDataContent"][$conf["theColumnYouWant"][$i][$j]];
2512
 
2513
							#跳出 switch
2514
							break;
2515
 
2516
						#如果是 "multiLine"
2517
						case "multiLine":
2518
 
2519
							#取得多行文字的區塊
2520
							#涵式說明:
2521
							#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數
2522
							#回傳的結果:
2523
							#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
2524
							#$result["error"],錯誤訊息.
2525
							#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。
2526
							#$result["lostVarName"],沒有皆收到的變數名稱陣列
2527
							#$result["inputDataContent"],所接收的參數陣列.
2528
							#$result["inputDataContent"]["變數名稱"],所接收變數的內容.
2529
							#$result["inputDataCount"],總共接收到幾個元素.
2530
							#必填參數:
2531
							#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?
2532
							$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";
2533
							#可省略的參數:
2534
							#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.
2535
							#$conf["allowGet"]="true";
2536
							#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.
2537
							$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];
2538
							#$conf["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"
2539
							$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];
2540
							#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.
2541
							#$conf["ignore"]=array();
2542
							#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.
2543
							#$conf["correctCharacter"]="false";
2544
							#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.
2545
							$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=array($conf["theColumnYouWant"][$i][$j]);
2546
							#參考資料來源:
2547
							#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php
2548
							#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
2549
							#備註:
2550
							#表單變數的名稱若含有「.」,則會變成「-」。
2551
							$reveivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);
2552
							unset($conf["form.responseMultiInputDataSecurityEnhance"]);
2553
 
2554
							#如果接收變數失敗
2555
							if($reveivedVar["status"]=="false"){
2556
 
2557
								#設置錯誤識別
2558
								$result["status"]="false";
2559
 
2560
								#設置錯誤訊息
2561
								$result["error"]=$reveivedVar;
2562
 
2563
								#回傳結果
2564
								return $result;
2565
 
2566
								}#if end
2567
 
2568
							#如果變數不符合規定
2569
							if($reveivedVar["passed"]=="false"){
2570
 
2571
								#設置錯誤識別
2572
								$result["status"]="false";
2573
 
2574
								#設置錯誤訊息
2575
								$result["error"]=$reveivedVar;
2576
 
2577
								#回傳結果
2578
								return $result;
2579
 
2580
								}#if end
2581
 
2582
							#記錄接收到的第$i-1個資料表的第$j-1個欄位變數
2583
							$dataToWrite[$i][$j]=$reveivedVar["inputDataContent"][$conf["theColumnYouWant"][$i][$j]];
2584
 
2585
							#跳出 switch
2586
							break;
2587
 
2588
						#如果是 "select"
2589
						case "select":
2590
 
2591
							#取得下拉式選單的內容
2592
							#涵式說明:
2593
							#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數
2594
							#回傳的結果:
2595
							#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
2596
							#$result["error"],錯誤訊息.
2597
							#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。
2598
							#$result["lostVarName"],沒有皆收到的變數名稱陣列
2599
							#$result["inputDataContent"],所接收的參數陣列.
2600
							#$result["inputDataContent"]["變數名稱"],所接收變數的內容.
2601
							#$result["inputDataCount"],總共接收到幾個元素.
2602
							#必填參數:
2603
							#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?
2604
							$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";
2605
							#可省略的參數:
2606
							#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.
2607
							#$conf["allowGet"]="true";
2608
							#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.
2609
							$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];
2610
							#$conf["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"
2611
							$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];
2612
							#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.
2613
							#$conf["ignore"]=array();
2614
							#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.
2615
							#$conf["correctCharacter"]="false";
2616
							#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.
2617
							$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=array($conf["theColumnYouWant"][$i][$j]);
2618
							#參考資料來源:
2619
							#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php
2620
							#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
2621
							#備註:
2622
							#表單變數的名稱若含有「.」,則會變成「-」。
2623
							$reveivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);
2624
							unset($conf["form.responseMultiInputDataSecurityEnhance"]);
2625
 
2626
							#如果接收變數失敗
2627
							if($reveivedVar["status"]=="false"){
2628
 
2629
								#設置錯誤識別
2630
								$result["status"]="false";
2631
 
2632
								#設置錯誤訊息
2633
								$result["error"]=$reveivedVar;
2634
 
2635
								#回傳結果
2636
								return $result;
2637
 
2638
								}#if end
2639
 
2640
							#如果變數不符合規定
2641
							if($reveivedVar["passed"]=="false"){
2642
 
2643
								#設置錯誤識別
2644
								$result["status"]="false";
2645
 
2646
								#設置錯誤訊息
2647
								$result["error"]=$reveivedVar;
2648
 
2649
								#回傳結果
2650
								return $result;
2651
 
2652
								}#if end
2653
 
2654
							#記錄接收到的第$i-1個資料表的第$j-1個欄位變數
2655
							$dataToWrite[$i][$j]=$reveivedVar["inputDataContent"][$conf["theColumnYouWant"][$i][$j]];
2656
 
2657
							#跳出 switch
2658
							break;
2659
 
2660
						# radio 與 checkBox 使用率低,所以先不製作。
2661
						/*
2662
 
2663
						#如果是 "radio"
2664
						case "radio":
2665
 
2666
							#取得輸入的標題
2667
							$everyInputCode[]=$conf["columnName"][$i][$j];
2668
 
2669
 
2670
 
2671
							#放置空一行
2672
							$everyInputCode[]="&nbsp;";
2673
 
2674
							#跳出 switch
2675
							break;
2676
 
2677
						#如果是 "checkBox"
2678
						case "checkBox":
2679
 
2680
							#取得輸入的標題
2681
							$everyInputCode[]=$conf["columnName"][$i][$j];
2682
 
2683
							#放置空一行
2684
							$everyInputCode[]="&nbsp;";
2685
 
2686
							#跳出 switch
2687
							break;
2688
 
2689
						*/
2690
 
2691
						#如果是 "file"
2692
						case "file":
2693
 
2694
							#處理上傳的檔案
2695
							#涵式說明:
2696
							#處理上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。
2697
							#回傳的變數:
2698
							#$result["ServerFileName"]#檔案名稱
2699
							#$result["ServerFileType"]#檔案類型
2700
							#$result["ServerFileSize"]#檔案大小
2701
							#$result["status"]#整體上傳有無成功。"true"代表完整成功 "false"代表有過程有錯誤
2702
							#$result["error"]#錯誤訊息陣列
2703
							#$result["fileRelativePosition"]#檔案的相對位置,包含檔案名稱與附檔名。
2704
							#必填的參數:
2705
							#$conf["formFileName"],字串,為上傳檔案時表單傳送時的名稱
2706
							$conf["form.processUploadedFile"]["formFileName"]=$conf["theColumnYouWant"][$i][$j];
2707
							#可省略的參數:
2708
							#$conf["form.processUploadedFile"]["uploadDirUserDefine"],字串,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。
2709
							$conf["form.processUploadedFile"]["uploadDirUserDefine"]=$conf["uploadDirUserDefine"][$i][$j];
2710
							#$conf["form.processUploadedFile"]["ServerFilenameUserDefine"],字串,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名
2711
							#$conf["form.processUploadedFile"]["ServerFilenameUserDefine"]="";
2712
							#$conf["NoFileExtension"],字串,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名。
2713
							#$conf["NoFileExtension"]="true";
2714
							#$conf["form.processUploadedFile"]["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。
2715
							$conf["form.processUploadedFile"]["limitPage"]=$conf["limitPage"];
2716
							#$conf["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。
2717
							$conf["form.processUploadedFile"]["taskName"]=$conf["columnName"][$i][$j]."上傳作業";
2718
							#$conf["eraseOldFile"],字串,如果存在的話會移除舊的檔案,其值爲檔案的相對位置。
2719
							#$conf["eraseOldFile"]="";
2720
							#$conf["form.processUploadedFile"]["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作。亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容。
2721
							#$conf["form.processUploadedFile"]["dbProcess"]="true";
2722
							#$conf["form.processUploadedFile"]["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置
2723
							#$conf["form.processUploadedFile"]["updatingMysqlServerAddress"]=$dbAddress;
2724
							#$conf["form.processUploadedFile"]["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線。
2725
							#$conf["form.processUploadedFile"]["updatingMysqlAccount"]=$dbAccount;
2726
							#$conf["form.processUploadedFile"]["updatingMysqlPassword"],字串,連線時要使用的密碼
2727
							#$conf["form.processUploadedFile"]["updatingMysqlPassword"]=$dbPassword;
2728
							#$conf["form.processUploadedFile"]["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱
2729
							#$conf["form.processUploadedFile"]["updatingDataBaseName"]=$dbName;
2730
							#$conf["form.processUploadedFile"]["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表
2731
							#$conf["form.processUploadedFile"]["updatingDataTableName"]="";
2732
							#$conf["form.processUploadedFile"]["updatingConditionDataTableColumnName"],字串陣列,要用哪個欄位來識別要更新哪一筆資料。
2733
							#$conf["form.processUploadedFile"]["updatingConditionDataTableColumnName"]=array("id");
2734
							#$conf["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。
2735
							#$conf["updatingConditionDataTableColumnValue"]=array("");
2736
							#$conf["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?
2737
							#$conf["updatingTargetDataTableColumnName"]=array("");
2738
							#$conf["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置
2739
							#$conf["updatingTargetDataTableColumnValue"]=array("");
2740
							#參考資料:
2741
							#file_exist()的用法
2742
							#http:#php.net/manual/en/function.file-exists.php
2743
							#bug:
2744
							#目前發現上傳的檔案如果有中文字將會上傳失敗,但中文字如果是包在()裏面則不會出錯。
2745
							$processUploadedFileResult=form::processUploadedFile($conf["form.processUploadedFile"]);
2746
							unset($conf["form.processUploadedFile"]);
2747
 
2748
							#如果處理上傳的檔案失敗
2749
							if($processUploadedFileResult["status"]=="false"){
2750
 
2751
								#設置錯誤識別
2752
								$result["status"]="false";
2753
 
2754
								#設置錯誤訊息
2755
								$result["error"]=$processUploadedFileResult;
2756
 
2757
								#回傳結果
2758
								return $result;
2759
 
2760
								}#if end
2761
 
2762
							#記錄接收到的第$i-1個資料表的第$j-1個欄位變數,此處為檔案的相對路徑
2763
							$dataToWrite[$i][$j]=$processUploadedFileResult["fileRelativePosition"];
2764
 
2765
							#跳出 switch
2766
							break;
2767
 
2768
						#如果不是以上輸入類型
2769
						default :
2770
 
2771
							#設置錯誤識別
2772
							$result["status"]="false";
2773
 
2774
							#設置錯誤訊息
2775
							$result["error"][]=$conf["inputType"][$i][$j]."輸入類型不存在";
2776
 
2777
							#回傳結果
2778
							return $result;
2779
 
2780
						}#switch end
2781
 
2782
					}#for end
2783
 
2784
				}#for end
2785
 
2786
			#$conf["inputType"] 有幾個元素就執行幾次
2787
			for($i=0;$i<count($conf["inputType"]);$i++){
2788
 
2789
				#要插入的欄位名稱
2790
				#$conf["theColumnYouWant"][$i]
2791
 
2792
				#要插入的欄位數值內容
2793
				#$dataToWrite[$i]
2794
 
2795
				#涵式說明:
2796
				#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。
2797
				#回傳的數值:
2798
				#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.
2799
				#$result["error"],錯誤訊息.
2800
				#$result["sql"],執行的sql語法.
2801
				#必填參數:
2802
				$conf["db.insertData"]["dbAddress"]=$conf["dbAddress"][$i];#爲mysql-Server的位置
2803
				$conf["db.insertData"]["dbAccount"]=$conf["dbAccount"][$i];#爲用於連入mysql-Server時要使用的帳號
2804
				$conf["db.insertData"]["selectedDataBaseName"]=$conf["dbName"][$i];#要選取的資料庫名稱
2805
				$conf["db.insertData"]["tableName"]=$conf["dtName"][$i];#爲要插入資料的資料表名稱
2806
				$conf["db.insertData"]["columnName"]=$conf["theColumnYouWant"][$i];#爲資料表的項目名稱,
2807
					#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);
2808
				$conf["db.insertData"]["insertValue"]=$dataToWrite[$i];#爲要插入度數值,
2809
					#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);
2810
				#可以省略的變數:
2811
 
2812
				#如果有設置連線密碼
2813
				if(isset($conf["dbPassword"][$i])){
2814
 
2815
					$conf["db.insertData"]["dbPassword"]=$conf["dbPassword"][$i];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
2816
 
2817
					}#if end
2818
 
2819
				#參考資料來源:
2820
				#http://www.javaworld.com.tw/jute/post/view?bid=21&id=173738&sty=1
2821
				$insertDataResult=db::insertData($conf["db.insertData"]);
2822
				unset($conf["db.insertData"]);
2823
 
2824
				#如果插入資料失敗
2825
				if($insertDataResult["status"]=="false"){
2826
 
2827
					#設置錯誤識別
2828
					$result["status"]="false";
2829
 
2830
					#設置錯誤訊息
2831
					$result["error"]=$insertDataResult;
2832
 
2833
					#回傳結果
2834
					return $result;
2835
 
2836
					}#if end
2837
 
2838
				}#for end
2839
 
2840
			}#if end
2841
 
2842
		#反之如果是編輯作業
2843
		else if($conf["addOrEdit"]=="edit"){
2844
 
2845
			#如果 $conf["identifyVarName"] 沒有設定
2846
			if(!isset($conf["identifyVarName"])){
2847
 
2848
				#執行 $conf["dtName"] 元素次數的迴圈
2849
				for($i=0;$i<count($conf["dtName"]);$i++){
2850
 
2851
					#皆設為 "id"
2852
					$conf["identifyVarName"][]="id";
2853
 
2854
					}#for end
2855
 
2856
				}#if end
2857
 
2858
			#如果 $conf["identifyColumnName"] 沒有設定
2859
			if(!isset($conf["identifyColumnName"])){
2860
 
2861
				#執行 $conf["dtName"] 元素次數的迴圈
2862
				for($i=0;$i<count($conf["dtName"]);$i++){
2863
 
2864
					#皆設為 "id"
2865
					$conf["identifyColumnName"][]="id";
2866
 
2867
					}#for end
2868
 
2869
				}#if end
2870
 
2871
			#接收識別各資料表哪筆資料的變數
2872
			#$conf["identifyVarName"][$i]
2873
 
2874
			#涵式說明:
2875
			#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數
2876
			#回傳的結果:
2877
			#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
2878
			#$result["error"],錯誤訊息.
2879
			#$result["function"],當前執行的函數.
2880
			#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。
2881
			#$result["lostVarName"],沒有皆收到的變數名稱陣列
2882
			#$result["inputDataContent"],所接收的參數陣列.
2883
			#$result["inputDataContent"]["變數名稱"],所接收變數的內容.
2884
			#$result["inputDataCount"],總共接收到幾個元素.
2885
			#必填參數:
2886
			#$conf["form.responseMultiInputDataSecurityEnhance"]["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?
2887
			$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";
2888
			#可省略的參數:
2889
			#$conf["form.responseMultiInputDataSecurityEnhance"]["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.
2890
			#$conf["form.responseMultiInputDataSecurityEnhance"]["allowGet"]="true";
2891
			#$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.
2892
			$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];
2893
			#$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"],字串,遇到get傳值,或前一個頁面不符合要求時要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"
2894
			$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];
2895
			#$conf["form.responseMultiInputDataSecurityEnhance"]["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.
2896
			#$conf["form.responseMultiInputDataSecurityEnhance"]["ignore"]=array();
2897
			#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.
2898
			#$conf["form.responseMultiInputDataSecurityEnhance"]["correctCharacter"]="false";
2899
			#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.
2900
			$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=$conf["identifyVarName"];
2901
			#參考資料來源:
2902
			#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php
2903
			#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
2904
			#備註:
2905
			#表單變數的名稱若含有「.」,則會變成「-」。
2906
			$receivedIdentifyVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);
2907
			unset($conf["form.responseMultiInputDataSecurityEnhance"]);
2908
 
2909
			#如果 接收識別各資料表的識別變數 失敗
2910
			if($receivedIdentifyVar["status"]=="false"){
2911
 
2912
				#設定執行不正常的識別
2913
				$result["status"]="false";
2914
 
2915
				#設定執行錯誤
2916
				$result["error"]=$receivedIdentifyVar;
2917
 
2918
				#回傳結果
2919
				return $result;
2920
 
2921
				}#if end
2922
 
2923
			#如果 識別各資料表的識別變數 有缺
2924
			if($receivedIdentifyVar["passed"]=="false"){
2925
 
2926
				#設定執行不正常的識別
2927
				$result["status"]="false";
2928
 
2929
				#設定執行錯誤
2930
				$result["error"]=$receivedIdentifyVar;
2931
 
2932
				#回傳結果
2933
				return $result;
2934
 
2935
				}#if end
2936
 
2937
			#$conf["inputType"] 有幾個元素就執行幾次
2938
			for($i=0;$i<count($conf["inputType"]);$i++){
2939
 
2940
				#根據 $conf["inputType"][$i] 有幾個元素就執行幾次
2941
				for($j=0;$j<count($conf["inputType"][$i]);$j++){
2942
 
2943
					#根據 $conf["inputType"][$i][$j] 來呈現填寫的形式
2944
					#"singleLine"=>單行文字
2945
					#"multiLine"=>多行文字
2946
					#"select"=>下拉式選單
2947
					#"radio"=>單選
2948
					#"checkBox"=>複選
2949
					#"file"=>檔案
2950
					switch($conf["inputType"][$i][$j]){
2951
 
2952
						#如果是 "singleLine"
2953
						case "singleLine":
2954
 
2955
							#取得單行文字的內容
2956
							#涵式說明:
2957
							#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數
2958
							#回傳的結果:
2959
							#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
2960
							#$result["error"],錯誤訊息.
2961
							#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。
2962
							#$result["lostVarName"],沒有皆收到的變數名稱陣列
2963
							#$result["inputDataContent"],所接收的參數陣列.
2964
							#$result["inputDataContent"]["變數名稱"],所接收變數的內容.
2965
							#$result["inputDataCount"],總共接收到幾個元素.
2966
							#必填參數:
2967
							#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?
2968
							$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";
2969
							#可省略的參數:
2970
							#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.
2971
							#$conf["allowGet"]="true";
2972
							#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.
2973
							$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];
2974
							#$conf["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"
2975
							$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];
2976
							#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.
2977
							#$conf["ignore"]=array();
2978
							#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.
2979
							#$conf["correctCharacter"]="false";
2980
							#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.
2981
							$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=array($conf["theColumnYouWant"][$i][$j]);
2982
							#參考資料來源:
2983
							#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php
2984
							#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
2985
							#備註:
2986
							#表單變數的名稱若含有「.」,則會變成「-」。
2987
							$reveivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);
2988
							unset($conf["form.responseMultiInputDataSecurityEnhance"]);
2989
 
2990
							#如果接收變數失敗
2991
							if($reveivedVar["status"]=="false"){
2992
 
2993
								#設置錯誤識別
2994
								$result["status"]="false";
2995
 
2996
								#設置錯誤訊息
2997
								$result["error"]=$reveivedVar;
2998
 
2999
								#回傳結果
3000
								return $result;
3001
 
3002
								}#if end
3003
 
3004
							#如果變數不符合規定
3005
							if($reveivedVar["passed"]=="false"){
3006
 
3007
								#設置錯誤識別
3008
								$result["status"]="false";
3009
 
3010
								#設置錯誤訊息
3011
								$result["error"]=$reveivedVar;
3012
 
3013
								#回傳結果
3014
								return $result;
3015
 
3016
								}#if end
3017
 
3018
							#記錄接收到的第$i-1個資料表的第$j-1個欄位變數
3019
							$dataToWrite[$i][$j]=$reveivedVar["inputDataContent"][$conf["theColumnYouWant"][$i][$j]];
3020
 
3021
							#跳出 switch
3022
							break;
3023
 
3024
						#如果是 "multiLine"
3025
						case "multiLine":
3026
 
3027
							#取得多行文字的區塊
3028
							#涵式說明:
3029
							#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數
3030
							#回傳的結果:
3031
							#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
3032
							#$result["error"],錯誤訊息.
3033
							#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。
3034
							#$result["lostVarName"],沒有皆收到的變數名稱陣列
3035
							#$result["inputDataContent"],所接收的參數陣列.
3036
							#$result["inputDataContent"]["變數名稱"],所接收變數的內容.
3037
							#$result["inputDataCount"],總共接收到幾個元素.
3038
							#必填參數:
3039
							#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?
3040
							$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";
3041
							#可省略的參數:
3042
							#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.
3043
							#$conf["allowGet"]="true";
3044
							#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.
3045
							$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];
3046
							#$conf["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"
3047
							$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];
3048
							#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.
3049
							#$conf["ignore"]=array();
3050
							#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.
3051
							#$conf["correctCharacter"]="false";
3052
							#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.
3053
							$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=array($conf["theColumnYouWant"][$i][$j]);
3054
							#參考資料來源:
3055
							#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php
3056
							#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
3057
							#備註:
3058
							#表單變數的名稱若含有「.」,則會變成「-」。
3059
							$reveivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);
3060
							unset($conf["form.responseMultiInputDataSecurityEnhance"]);
3061
 
3062
							#如果接收變數失敗
3063
							if($reveivedVar["status"]=="false"){
3064
 
3065
								#設置錯誤識別
3066
								$result["status"]="false";
3067
 
3068
								#設置錯誤訊息
3069
								$result["error"]=$reveivedVar;
3070
 
3071
								#回傳結果
3072
								return $result;
3073
 
3074
								}#if end
3075
 
3076
							#如果變數不符合規定
3077
							if($reveivedVar["passed"]=="false"){
3078
 
3079
								#設置錯誤識別
3080
								$result["status"]="false";
3081
 
3082
								#設置錯誤訊息
3083
								$result["error"]=$reveivedVar;
3084
 
3085
								#回傳結果
3086
								return $result;
3087
 
3088
								}#if end
3089
 
3090
							#記錄接收到的第$i-1個資料表的第$j-1個欄位變數
3091
							$dataToWrite[$i][$j]=$reveivedVar["inputDataContent"][$conf["theColumnYouWant"][$i][$j]];
3092
 
3093
							#跳出 switch
3094
							break;
3095
 
3096
						#如果是 "select"
3097
						case "select":
3098
 
3099
							#取得下拉式選單的內容
3100
							#涵式說明:
3101
							#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數
3102
							#回傳的結果:
3103
							#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
3104
							#$result["error"],錯誤訊息.
3105
							#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。
3106
							#$result["lostVarName"],沒有皆收到的變數名稱陣列
3107
							#$result["inputDataContent"],所接收的參數陣列.
3108
							#$result["inputDataContent"]["變數名稱"],所接收變數的內容.
3109
							#$result["inputDataCount"],總共接收到幾個元素.
3110
							#必填參數:
3111
							#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?
3112
							$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";
3113
							#可省略的參數:
3114
							#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.
3115
							#$conf["allowGet"]="true";
3116
							#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.
3117
							$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];
3118
							#$conf["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"
3119
							$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];
3120
							#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.
3121
							#$conf["ignore"]=array();
3122
							#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.
3123
							#$conf["correctCharacter"]="false";
3124
							#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.
3125
							$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=array($conf["theColumnYouWant"][$i][$j]);
3126
							#參考資料來源:
3127
							#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php
3128
							#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
3129
							#備註:
3130
							#表單變數的名稱若含有「.」,則會變成「-」。
3131
							$reveivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);
3132
							unset($conf["form.responseMultiInputDataSecurityEnhance"]);
3133
 
3134
							#如果接收變數失敗
3135
							if($reveivedVar["status"]=="false"){
3136
 
3137
								#設置錯誤識別
3138
								$result["status"]="false";
3139
 
3140
								#設置錯誤訊息
3141
								$result["error"]=$reveivedVar;
3142
 
3143
								#回傳結果
3144
								return $result;
3145
 
3146
								}#if end
3147
 
3148
							#如果變數不符合規定
3149
							if($reveivedVar["passed"]=="false"){
3150
 
3151
								#設置錯誤識別
3152
								$result["status"]="false";
3153
 
3154
								#設置錯誤訊息
3155
								$result["error"]=$reveivedVar;
3156
 
3157
								#回傳結果
3158
								return $result;
3159
 
3160
								}#if end
3161
 
3162
							#記錄接收到的第$i-1個資料表的第$j-1個欄位變數
3163
							$dataToWrite[$i][$j]=$reveivedVar["inputDataContent"][$conf["theColumnYouWant"][$i][$j]];
3164
 
3165
							#跳出 switch
3166
							break;
3167
 
3168
						# radio 與 checkBox 使用率低,所以先不製作。
3169
						/*
3170
 
3171
						#如果是 "radio"
3172
						case "radio":
3173
 
3174
							#取得輸入的標題
3175
							$everyInputCode[]=$conf["columnName"][$i][$j];
3176
 
3177
 
3178
 
3179
							#放置空一行
3180
							$everyInputCode[]="&nbsp;";
3181
 
3182
							#跳出 switch
3183
							break;
3184
 
3185
						#如果是 "checkBox"
3186
						case "checkBox":
3187
 
3188
							#取得輸入的標題
3189
							$everyInputCode[]=$conf["columnName"][$i][$j];
3190
 
3191
							#放置空一行
3192
							$everyInputCode[]="&nbsp;";
3193
 
3194
							#跳出 switch
3195
							break;
3196
 
3197
						*/
3198
 
3199
						#如果是 "file"
3200
						case "file":
3201
 
3202
							#處理上傳的檔案
3203
							#涵式說明:
3204
							#處理上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。
3205
							#回傳的變數:
3206
							#$result["ServerFileName"]#檔案名稱
3207
							#$result["ServerFileType"]#檔案類型
3208
							#$result["ServerFileSize"]#檔案大小
3209
							#$result["status"]#整體上傳有無成功。"true"代表完整成功 "false"代表有過程有錯誤
3210
							#$result["error"]#錯誤訊息陣列
3211
							#$result["fileRelativePosition"]#檔案的相對位置,包含檔案名稱與附檔名。
3212
							#必填的參數:
3213
							#$conf["formFileName"],字串,為上傳檔案時表單傳送時的名稱
3214
							$conf["form.processUploadedFile"]["formFileName"]=$conf["theColumnYouWant"][$i][$j];
3215
							#可省略的參數:
3216
							#$conf["form.processUploadedFile"]["uploadDirUserDefine"],字串,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。
3217
							$conf["form.processUploadedFile"]["uploadDirUserDefine"]=$conf["uploadDirUserDefine"][$i][$j];
3218
							#$conf["form.processUploadedFile"]["ServerFilenameUserDefine"],字串,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名
3219
							#$conf["form.processUploadedFile"]["ServerFilenameUserDefine"]="";
3220
							#$conf["NoFileExtension"],字串,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名。
3221
							#$conf["NoFileExtension"]="true";
3222
							#$conf["form.processUploadedFile"]["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。
3223
							$conf["form.processUploadedFile"]["limitPage"]=$conf["limitPage"];
3224
							#$conf["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。
3225
							$conf["form.processUploadedFile"]["taskName"]=$conf["columnName"][$i][$j]."上傳作業";
3226
							#$conf["eraseOldFile"],字串,如果存在的話會移除舊的檔案,其值爲檔案的相對位置。
3227
							#$conf["eraseOldFile"]="";
3228
							#$conf["form.processUploadedFile"]["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作。亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容。
3229
							#$conf["form.processUploadedFile"]["dbProcess"]="true";
3230
							#$conf["form.processUploadedFile"]["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置
3231
							#$conf["form.processUploadedFile"]["updatingMysqlServerAddress"]=$dbAddress;
3232
							#$conf["form.processUploadedFile"]["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線。
3233
							#$conf["form.processUploadedFile"]["updatingMysqlAccount"]=$dbAccount;
3234
							#$conf["form.processUploadedFile"]["updatingMysqlPassword"],字串,連線時要使用的密碼
3235
							#$conf["form.processUploadedFile"]["updatingMysqlPassword"]=$dbPassword;
3236
							#$conf["form.processUploadedFile"]["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱
3237
							#$conf["form.processUploadedFile"]["updatingDataBaseName"]=$dbName;
3238
							#$conf["form.processUploadedFile"]["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表
3239
							#$conf["form.processUploadedFile"]["updatingDataTableName"]="";
3240
							#$conf["form.processUploadedFile"]["updatingConditionDataTableColumnName"],字串陣列,要用哪個欄位來識別要更新哪一筆資料。
3241
							#$conf["form.processUploadedFile"]["updatingConditionDataTableColumnName"]=array("id");
3242
							#$conf["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。
3243
							#$conf["updatingConditionDataTableColumnValue"]=array("");
3244
							#$conf["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?
3245
							#$conf["updatingTargetDataTableColumnName"]=array("");
3246
							#$conf["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置
3247
							#$conf["updatingTargetDataTableColumnValue"]=array("");
3248
							#參考資料:
3249
							#file_exist()的用法
3250
							#http:#php.net/manual/en/function.file-exists.php
3251
							#bug:
3252
							#目前發現上傳的檔案如果有中文字將會上傳失敗,但中文字如果是包在()裏面則不會出錯。
3253
							$processUploadedFileResult=form::processUploadedFile($conf["form.processUploadedFile"]);
3254
							unset($conf["form.processUploadedFile"]);
3255
 
3256
							#如果處理上傳的檔案失敗
3257
							if($processUploadedFileResult["status"]=="false"){
3258
 
3259
								#如果錯誤訊息不為 沒有接收到上傳的檔案
3260
								if($processUploadedFileResult["error"][0]!="沒有接收到上傳的檔案"){
3261
 
3262
									#設置錯誤識別
3263
									$result["status"]="false";
3264
 
3265
									#設置錯誤訊息
3266
									$result["error"]=$processUploadedFileResult;
3267
 
3268
									#回傳結果
3269
									return $result;
3270
 
3271
									}#if end
3272
 
3273
								#else end
3274
								else{
3275
 
3276
									#設置警告訊息
3277
									$result["warning"][]=$conf["theColumnYouWant"][$i][$j]."檔案變數不存在";
3278
 
3279
									#將該變數的移除
3280
									#$conf["inputType"][$i][$j]
3281
									#$conf["theColumnYouWant"][$i][$j]
3282
									#$conf["columnName"][$i][$j]
3283
 
3284
									#將該變數 從 要接收的變數中移除
3285
									#涵式說明:
3286
									#將陣列中特定元素剔除,並重新按照順序排序
3287
									#回傳的結果:
3288
									#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3289
									#$result["error"],錯誤訊息
3290
									#$result["function"],當前執行的函數
3291
									#$result["content"]["byName"],剔除掉特定元素的陣列,使用原來陣列的key來儲存.
3292
									#$result["content"]["byNumber"],剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
3293
									#必填的參數:
3294
									$conf["arrays.eraseElement"]["rawInputArray"]=$conf["inputType"][$i];#要處理的原始數字陣列
3295
									$conf["arrays.eraseElement"]["eraseElementKey"]=$j;#要移除的元素key值
3296
									$eraseResult=arrays::eraseElement($conf["arrays.eraseElement"]);
3297
									unset($conf["arrays.eraseElement"]);
3298
 
3299
									#如果移除元素失敗
3300
									if($eraseResult["status"]=="false"){
3301
 
3302
										#設置錯誤識別
3303
										$result["status"]="false";
3304
 
3305
										#設置錯誤訊息
3306
										$result["error"]=$eraseResult;
3307
 
3308
										#回傳結果
3309
										return $result;
3310
 
3311
										}#if end
3312
 
3313
									#取得移除完元素的陣列
3314
									$conf["inputType"][$i]=$eraseResult["content"]["byName"];
3315
 
3316
									#將該變數 從 要更新的欄位名稱變數中移除
3317
									#涵式說明:
3318
									#將陣列中特定元素剔除,並重新按照順序排序
3319
									#回傳的結果:
3320
									#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3321
									#$result["error"],錯誤訊息
3322
									#$result["function"],當前執行的函數
3323
									#$result["content"]["byName"],剔除掉特定元素的陣列,使用原來陣列的key來儲存.
3324
									#$result["content"]["byNumber"],剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
3325
									#必填的參數:
3326
									$conf["arrays.eraseElement"]["rawInputArray"]=$conf["theColumnYouWant"][$i];#要處理的原始數字陣列
3327
									$conf["arrays.eraseElement"]["eraseElementKey"]=$j;#要移除的元素key值
3328
									$eraseResult=arrays::eraseElement($conf["arrays.eraseElement"]);
3329
									unset($conf["arrays.eraseElement"]);
3330
 
3331
									#如果移除元素失敗
3332
									if($eraseResult["status"]=="false"){
3333
 
3334
										#設置錯誤識別
3335
										$result["status"]="false";
3336
 
3337
										#設置錯誤訊息
3338
										$result["error"]=$eraseResult;
3339
 
3340
										#回傳結果
3341
										return $result;
3342
 
3343
										}#if end
3344
 
3345
									#將該變數 從 用於提示要更新的欄位名稱變數中移除
3346
									$conf["theColumnYouWant"][$i]=$eraseResult["content"]["byName"];
3347
 
3348
									#將該變數 從 要更新的欄位名稱變數中移除
3349
									#涵式說明:
3350
									#將陣列中特定元素剔除,並重新按照順序排序
3351
									#回傳的結果:
3352
									#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3353
									#$result["error"],錯誤訊息
3354
									#$result["function"],當前執行的函數
3355
									#$result["content"]["byName"],剔除掉特定元素的陣列,使用原來陣列的key來儲存.
3356
									#$result["content"]["byNumber"],剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
3357
									#必填的參數:
3358
									$conf["arrays.eraseElement"]["rawInputArray"]=$conf["columnName"][$i];#要處理的原始數字陣列
3359
									$conf["arrays.eraseElement"]["eraseElementKey"]=$j;#要移除的元素key值
3360
									$eraseResult=arrays::eraseElement($conf["arrays.eraseElement"]);
3361
									unset($conf["arrays.eraseElement"]);
3362
 
3363
									#如果移除元素失敗
3364
									if($eraseResult["status"]=="false"){
3365
 
3366
										#設置錯誤識別
3367
										$result["status"]="false";
3368
 
3369
										#設置錯誤訊息
3370
										$result["error"]=$eraseResult;
3371
 
3372
										#回傳結果
3373
										return $result;
3374
 
3375
										}#if end
3376
 
3377
									#將該變數 從 用於提示要更新的欄位名稱變數中移除
3378
									$conf["columnName"][$i]=$eraseResult["content"]["byName"];
3379
 
3380
									#記數的$i要減1,因為當前元素會被後面的元素取代.
3381
									$j--;
3382
 
3383
									#跳出 switch
3384
									break;
3385
 
3386
									}#if end
3387
 
3388
								}#if end
3389
 
3390
							#記錄接收到的第$i-1個資料表的第$j-1個欄位變數,此處為檔案的相對路徑
3391
							$dataToWrite[$i][$j]=$processUploadedFileResult["fileRelativePosition"];
3392
 
3393
							#取得舊檔案位置與名稱
3394
 
3395
							#array($conf["identifyColumnName"][$i]);#爲用來判斷要更新的哪筆資料的欄位名稱,須爲陣列值
3396
							#array($receivedIdentifyVar["inputDataContent"][$conf["identifyColumnName"][$i]]);#為用來判斷是要更新哪筆資料的欄位對應數值,須爲陣列值
3397
 
3398
							#涵式說明:
3399
							#一次取得資料庫、表的資料
3400
							#回傳的結果
3401
							#$result["status"],執行結果"true"為成功;"false"為執行失敗。
3402
							#$result["error"],錯誤訊息陣列。
3403
							#$result["dataColumnName"],抓取的資料欄位名稱陣列.
3404
								#$result["dataColumnName"][$i]代表第$i+1個欄位名稱
3405
							#$result["dataContent"],爲資料的內容。
3406
							#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]
3407
								#$dataSetNum 爲第$dataSetNum+1筆資料
3408
								#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱
3409
							#$result["dataCount"],爲取得的資料筆數。
3410
							#$result["sql"],執行的sql字串.
3411
							#必填的參數:
3412
							$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"][$i];#爲dbServer的位置。
3413
							$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"][$i];#爲登入dbServer的帳號。
3414
							$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"][$i];#爲要存取的資料庫名稱
3415
							$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"][$i];#爲要存取的資料表名稱
3416
							$conf["db.fastGetDbData"]["columnYouWant"]=array($conf["theColumnYouWant"][$i][$j]);#你想要的欄位!,若設為「array("*")」則代表全部欄位.
3417
							#可省略的參數:
3418
 
3419
							#如果 $conf["dbPassword"][$i] 有設置
3420
							if(isset($conf["dbPassword"][$i])){
3421
 
3422
								$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"][$i];#爲要存取dbServer的密碼
3423
 
3424
								}#if end
3425
 
3426
							$conf["db.fastGetDbData"]["WhereColumnName"]=array($conf["identifyColumnName"][$i]);#用於判斷語句的欄位項目陣列。
3427
							$conf["db.fastGetDbData"]["WhereColumnValue"]=array($receivedIdentifyVar["inputDataContent"][$conf["identifyColumnName"][$i]]);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。
3428
							#$conf["db.fastGetDbData"]["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。
3429
							#$conf["db.fastGetDbData"]["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。
3430
							#$conf["db.fastGetDbData"]["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。
3431
							#$conf["db.fastGetDbData"]["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。
3432
							#$conf["db.fastGetDbData"]["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。
3433
							#$conf["db.fastGetDbData"]["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。
3434
							#$conf["db.fastGetDbData"]["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。
3435
							#$conf["db.fastGetDbData"]["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。
3436
							$getShceduleFileResult=db::fastGetDbData($conf["db.fastGetDbData"]);
3437
							unset($conf["db.fastGetDbData"]);
3438
 
3439
							#如果取得排程檔案資料失敗
3440
							if($getShceduleFileResult["status"]=="false"){
3441
 
3442
								#設置錯誤識別
3443
								$result["status"]="false";
3444
 
3445
								#設置錯誤訊息
3446
								$result["error"]=$eraseResult;
3447
 
3448
								#回傳結果
3449
								return $result;
3450
 
3451
								}#if end
3452
 
3453
							#如果排程檔案不存在
3454
							if($getShceduleFileResult["dataCount"]==0){
3455
 
3456
								#設置錯誤識別
3457
								$result["status"]="false";
3458
 
3459
								#設置錯誤訊息
3460
								$result["error"][]="找不到排程檔案資料";
3461
 
3462
								#回傳結果
3463
								return $result;
3464
 
3465
								}#if end
3466
 
3467
							#移除舊檔案
3468
							#$getShceduleFileResult["dataContent"][$conf["theColumnYouWant"][$i][$j]][0];
3469
 
3470
							#涵式說明:
3471
							#移除檔案
3472
							#回傳的結果:
3473
							#$result["status"],"true"代表移除成功,"false"代表移除失敗.
3474
							#必填的參數:
3475
							$conf["fileAccess.delFile"]["fileAddress"]=$getShceduleFileResult["dataContent"][$conf["theColumnYouWant"][$i][$j]][0];#要移除檔案的位置
3476
							$eraseShceduleFile=fileAccess::delFile($conf["fileAccess.delFile"]);
3477
							unset($conf["fileAccess.delFile"]);
3478
 
3479
							#如果移除排程檔案失敗
3480
							if($eraseShceduleFile["status"]=="false"){
3481
 
3482
								#設置錯誤識別
3483
								$result["status"]="false";
3484
 
3485
								#設置錯誤訊息
3486
								$result["error"]=$eraseShceduleFile;
3487
 
3488
								#回傳結果
3489
								return $result;
3490
 
3491
								}#if end
3492
 
3493
							#跳出 switch
3494
							break;
3495
 
3496
						#如果不是以上輸入類型
3497
						default :
3498
 
3499
							#設置錯誤識別
3500
							$result["status"]="false";
3501
 
3502
							#設置錯誤訊息
3503
							$result["error"][]=$conf["inputType"][$i][$j]."輸入類型不存在";
3504
 
3505
							#回傳結果
3506
							return $result;
3507
 
3508
						}#switch end
3509
 
3510
					}#for end
3511
 
3512
				}#for end
3513
 
3514
			#$conf["inputType"] 有幾個元素就執行幾次
3515
			for($i=0;$i<count($conf["inputType"]);$i++){
3516
 
3517
				#要更新的欄位名稱
3518
				#$conf["theColumnYouWant"][$i]
3519
 
3520
				#要更新的欄位數值內容
3521
				#$dataToWrite[$i]
3522
 
3523
				#函式說明:
3524
				#更新資料表裏面的資料
3525
				#回傳結果:
3526
				#$result["status"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了
3527
				#$result["error"],錯誤訊息
3528
				#$result["sql"],執行的sql語法.
3529
				#必填的參數:
3530
				$conf["db.updateDataTableContent"]["dbAddress"]=$conf["dbAddress"][$i];#爲mysql-Server的位置
3531
				$conf["db.updateDataTableContent"]["dbAccount"]=$conf["dbAccount"][$i];#爲用於連入mysql-Server時要使用的帳號
3532
				$conf["db.updateDataTableContent"]["selectedDataBaseName"]=$conf["dbName"][$i];#要選取的資料庫名稱
3533
				$conf["db.updateDataTableContent"]["tableName"]=$conf["dtName"][$i];#要修改的資料表名稱
3534
				$conf["db.updateDataTableContent"]["whereColumn"]=array($conf["identifyColumnName"][$i]);#爲用來判斷要更新的哪筆資料的欄位名稱,須爲陣列值
3535
				$conf["db.updateDataTableContent"]["whereValue"]=array($receivedIdentifyVar["inputDataContent"][$conf["identifyColumnName"][$i]]);#為用來判斷是要更新哪筆資料的欄位對應數值,須爲陣列值
3536
				$conf["db.updateDataTableContent"]["tableColumnName"]=$conf["theColumnYouWant"][$i];#資料表項目的名稱陣列
3537
				$conf["db.updateDataTableContent"]["updateDataValue"]=$dataToWrite[$i];#要更改成對應資料表項目的內容,須為陣列值
3538
				#可省略的參數:
3539
 
3540
				#如果 有設定連線的密碼
3541
				if(isset($conf["dbPassword"][$i])){
3542
 
3543
					$conf["db.updateDataTableContent"]["dbPassword"]=$conf["dbPassword"][$i];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
3544
 
3545
					}#if end
3546
 
3547
				$updateDataResult=db::updateDataTableContent($conf["db.updateDataTableContent"]);
3548
				unset($conf["db.updateDataTableContent"]);
3549
 
3550
				#如果更新資料失敗
3551
				if($updateDataResult["status"]=="false"){
3552
 
3553
					#設置錯誤識別
3554
					$result["status"]="false";
3555
 
3556
					#設置錯誤訊息
3557
					$result["error"]=$updateDataResult;
3558
 
3559
					#回傳結果
3560
					return $result;
3561
 
3562
					}#if end
3563
 
3564
				}#for end
3565
 
3566
			}#if end
3567
 
3568
		#反之代表 $conf["addOrEdit"] 參數有誤
3569
		else{
3570
 
3571
			#設置錯誤識別
3572
			$result["status"]="false";
3573
 
3574
			#設置錯誤訊息
3575
			$result["error"][]="\$conf[\"addOrEdit\"]參數只能為add或edit";
3576
 
3577
			#回傳結果
3578
			return $result;
3579
 
3580
			}#else end
3581
 
3582
		#設置執行成功識別
3583
		$result["status"]="true";
3584
 
3585
		#回傳結果
3586
		return $result;
3587
 
3588
		}#function add&editResponse end
3589
 
3590
	}#class dataTable end
3591
 
3592
?>