Rev 226 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*QBPWCF, Quick Build PHP website Component base on Fedora Linux.Copyright (C) 2015~2025 Min-Jhin,ChenThis file is part of QBPWCF.QBPWCF is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.QBPWCF is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with QBPWCF. If not, see <http://www.gnu.org/licenses/>.*/namespace qbpwcf;/*類別說明:用於處理表格呈現的類別.備註:無.*/class dataTable{/*#函式說明:#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#必填參數:#$method,物件,為物件實體或類別名稱,會自動置入該參數.#$arguments,陣列,為呼叫方法時所用的參數.#參考資料:#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic*/public function __call($method,$arguments){#取得當前執行的函式$result["function"]=__FUNCTION__;#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";#設置所丟入的參數$result["error"][]=$arguments;#回傳結果return $result;}#function __call end/*#函式說明:#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#必填參數:#$method,物件,為物件實體或類別名稱,會自動置入該參數.#$arguments,陣列,為呼叫方法時所用的參數.#參考資料:#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic*/public static function __callStatic($method,$arguments){#取得當前執行的函式$result["function"]=__FUNCTION__;#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";#設置所丟入的參數$result["error"][]=$arguments;#回傳結果return $result;}#function __callStatic end/*#函式說明:#回傳呈現資料表內容的表單,包含可以設定各筆資料的操作,像是修改,移除,這些動作都可以設置要傳送的隱藏表單變數.#回傳結果:#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.#$result["error"],錯誤訊息陣列.#$result["content"],我們所要的內容.#$result["function"],當前執行的方法名稱.#必填參數:#$conf["dbAddress"],字串型態,爲mysql-Server的位置.$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串型態,爲用於連入mysql-Server時要使用的帳號.$conf["dbAccount"]=$dbAccount;#$conf["dbName"],爲目標資料表所屬的資料庫.$conf["dbName"]=$dbName;#$conf["dtName],字串型態,爲目標資料表所屬的資料表.$conf["dtName"]="";#可省略參數:#$conf["dbPassword"],字串型態,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;#$conf["columnYouWant"],字串陣列,為要顯抓的欄位有哪些,預設為id與name#$conf["columnYouWant"]=array("id","name");#$conf["columnShowed"],字串陣列,為要顯示的欄位有哪些,預設為name#$conf["columnShowed"]=array("name");#$conf["columnName"],字串陣列,資料欄位的名稱,預設為$conf["columnShowed"],$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.#$conf["columnName"]=$conf["columnShowed"];#$conf["hiddenIdColumnName"],字串變數,傳送要求時,用於識別資料的變數名稱的資料欄位名稱為何,預設為"id".#$conf["hiddenIdColumnName"]="id";#$conf["hiddenIdVarName"],字串變數,傳送要求時,用於識別資料的變數名稱為何,預設為"id".#$conf["hiddenIdVarName"]="id";#$conf["operationVarName"],字串變數,傳送要求時,用於識別動作的變數名稱為何,預設為"action".#$conf["operationVarName"]="action";#$conf["operationShowed"],字串陣列,為每筆資料可以執行的操作,預設為修改與移除,$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.#$conf["operationShowed"]=array("請選擇","修改","移除");#$conf["operationDefaultShowed"],字串,為每筆資料可執行操作的預設選項,預設為"請選擇",$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.#$conf["operationDefaultShowed"]="請選擇";#$conf["operationVarValue"],字串陣列,為每筆資料可執行操作傳送邀要求時,用於識別動作的變數數值內容,預設跟$conf["operationShowed"]一樣,$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.#$conf["operationVarValue"]=$conf["operationShowed"];#$conf["operationActionPage"],字串,為每筆資料可執行操作的要求接收頁面,預設為"action.php".#$conf["operationActionPage"]="action.php";#$conf["operationTarget"],字串,為每筆資料可執行操作呈現的方式,預設為"_top",$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.#$conf["operationTarget"]="_top";#參考資料:#無.#備註:#樣式的套用要用qbpwcf建立的css類別.*/public static function normal(&$conf){#初始化要回傳的陣列$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#初始化要回傳的語法$result["content"]="";#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填寫的參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.scheckArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.scheckArguments"]["mustBeFilledVariableName"][]="dbAddress";$conf["variableCheck.scheckArguments"]["mustBeFilledVariableName"][]="dbAccount";$conf["variableCheck.scheckArguments"]["mustBeFilledVariableName"][]="dbName";$conf["variableCheck.scheckArguments"]["mustBeFilledVariableName"][]="dtName";#$conf["variableCheck.scheckArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.scheckArguments"]["mustBeFilledVariableType"][]="string";$conf["variableCheck.scheckArguments"]["mustBeFilledVariableType"][]="string";$conf["variableCheck.scheckArguments"]["mustBeFilledVariableType"][]="string";$conf["variableCheck.scheckArguments"]["mustBeFilledVariableType"][]="string";#可以省略的參數:#$conf["variableCheck.scheckArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.scheckArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.scheckArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="dbPassword";$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="columnYouWant";$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="columnShowed";$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="operationDefaultShowed";$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="columnName";$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="hiddenIdColumnName";$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="hiddenIdVarName";$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="operationVarName";$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="operationShowed";$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="operationVarValue";$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="operationActionPage";$conf["variableCheck.scheckArguments"]["skipableVariableName"][]="operationTarget";#$conf["variableCheck.scheckArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="array";$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="array";$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="array";$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="array";$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="array";$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";$conf["variableCheck.scheckArguments"]["skipableVariableType"][]="string";#$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]=array("id","name");$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]=array("name");$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="請選擇";$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="\$conf[\"columnShowed\"]";$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="id";$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="id";$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="action";$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]=array("請選擇","修改","移除");$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="\$conf[\"operationShowed\"]";$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="action.php";$conf["variableCheck.scheckArguments"]["skipableVarDefaultValue"][]="_top";#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.scheckArguments"]["referenceVarKey"]="variableCheck.scheckArguments";$checkResult=variableCheck::checkArguments($conf["variableCheck.scheckArguments"]);unset($conf["variableCheck.scheckArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行結果為 "false"$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查沒通過if($checkResult["passed"]=="false"){#設置執行結果為 "false"$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#抓取資料表的內容#涵式說明:#一次取得資料庫、表的資料#回傳的結果#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#必填的參數:$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"];#爲dbServer的位置。$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"];#爲登入dbServer的帳號。$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"];#爲要存取的資料庫名稱$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"];#爲要存取的資料表名稱$conf["db.fastGetDbData"]["columnYouWant"]=$conf["columnYouWant"];#你想要的欄位!#可省略的參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){#則設置其密碼$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"];#爲要存取dbServer的密碼}#if end#$conf["db"]["fastGetDbData"]["WhereColumnName"]=array("");#用於判斷語句的欄位項目陣列。#$conf["db"]["fastGetDbData"]["WhereColumnValue"]=array("");#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["db"]["fastGetDbData"]["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["db"]["fastGetDbData"]["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["db"]["fastGetDbData"]["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["db"]["fastGetDbData"]["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["db"]["fastGetDbData"]["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["db"]["fastGetDbData"]["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["db"]["fastGetDbData"]["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["db"]["fastGetDbData"]["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。$tableContent=db::fastGetDbData($conf["db.fastGetDbData"]);unset($conf["db.fastGetDbData"]);#如果抓取資料表資料失敗if($tableContent["status"]=="false"){#取得錯誤訊息$result["error"]=$tableContent["error"];#設置錯誤識別$result["status"]="false";#回傳結果return $result;}#if end#如果 $tableContent["dataCount"] 等於 0if($tableContent["dataCount"]==0){#debug#echo "<p>沒有資料</p>";#建立標題攔#涵式說明:#建立列的元素,以及指定裏面要放什麼內容#回傳的變數:#$result,建立列元素的語法#必填的參數:$conf["table.printRow"]["trClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table.printRow"]["tdClass"]="__withBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#增加操作欄$conf["columnName"][]="操作攔";$conf["table.printRow"]["tdContent"]=$conf["columnName"];#列裏面要放的元素是?如果要空一欄則可以輸array(" ")#可以省略的參數:$conf["table.printRow"]["tableStartClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table.printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。$conf["table.printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。#$conf["table"]["printRow"]["formStart"]="true";#是否要有表單的開始#$conf["table"]["printRow"]["formName"]="";#該表單的名稱#$conf["table"]["printRow"]["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置#$conf["table"]["printRow"]["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["table"]["printRow"]["formEnd"]="true";#是否要有表單的結束$titleRow=table::printRow($conf["table.printRow"]);unset($conf["table.printRow"]);$result["content"]=$result["content"].$titleRow;}#if end#反之代表有資料else{#debug#echo "<p>有資料</p>";#建立標題攔#涵式說明:#建立列的元素,以及指定裏面要放什麼內容#回傳的變數:#$result,建立列元素的語法#必填的參數:$conf["table.printRow"]["trClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table.printRow"]["tdClass"]="__withBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#增加操作欄$conf["columnName"][]="操作攔";$conf["table.printRow"]["tdContent"]=$conf["columnName"];#列裏面要放的元素是?如果要空一欄則可以輸array(" ")#可以省略的參數:$conf["table.printRow"]["tableStartClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table.printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。#$conf["table"]["printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。#$conf["table"]["printRow"]["formStart"]="true";#是否要有表單的開始#$conf["table"]["printRow"]["formName"]="";#該表單的名稱#$conf["table"]["printRow"]["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置#$conf["table"]["printRow"]["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["table"]["printRow"]["formEnd"]="true";#是否要有表單的結束$titleRow=table::printRow($conf["table.printRow"]);unset($conf["table.printRow"]);#如果建立列失敗if($titleRow["status"]==="false"){#取得錯誤訊息$result["error"]=$titleRow;#設置錯誤識別$result["status"]="false";#回傳結果return $result;}#if end#串接標題列$result["content"]=$result["content"].$titleRow["content"];#針對每筆紀錄for($i=0;$i<$tableContent["dataCount"];$i++){#debug#echo "<p>有資料</p>";#針對每個欄位foreach($tableContent["dataContent"] as $columnName=>$columnArray){#檢查 $columnValue 是否存在於 $conf["columnShowed"] 裡面#涵式說明:#檢查多個數值,是否與陣列裏面的某些元素相同。#回傳的結果:#$result["status"][$i],若爲0代表沒有相同的元素;反之0代表有相同的元素。#$i爲第i+1個參數判斷後的結果。#必填的參數:$conf["search.checkEquality"]["inputElement"]=array($columnName);#爲要進行比對的變數/數值。$conf["search.checkEquality"]["blackBoxElement"]=$conf["columnShowed"];#爲用來比對的變數/數值陣列$checkResult=search::checkEquality($conf["search.checkEquality"]);unset($conf["search.checkEquality"]);#如果檢查 $columnValue 是否存在於 $conf["columnShowed"] 裡面失敗if($checkResult["status"]==="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果$columnValue在$conf["columnShowed"]裡面if($checkResult["founded"][0]=="true"){#紀錄該欄位數值$conf["table.printRow"]["tdContent"][]=$tableContent["dataContent"][$columnName][$i];}#if end}#foreach end#建立操作選項的下拉式表單#涵式說明:#建立下拉式表單#回傳的結果:#$result,語法#必填的參數:$conf["form.inputSelect"]["name"]=$conf["operationVarName"];#爲該下拉式選單的名稱$conf["form.inputSelect"]["sendValue"]=$conf["operationVarValue"];#爲陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");#可省略的參數:$conf["form.inputSelect"]["formName"]=$conf["operationVarName"].$i;#該表單的名稱#$conf["form.inputSelect"]["outputValue"]=$conf["operationVarValue"];#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。#$conf["form.inputSelect"]["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。$conf["form.inputSelect"]["defaultValue"]=$conf["operationDefaultShowed"];#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。#$conf["form"]["inputSelect"]["class"]="";#爲要套用的class樣式,若省略的話預設採用 __simpleButtonLinkDefaultButtonCssStyle 的css樣式名稱#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "100%" , "50" , "30" , "center"$conf["form.inputSelect"]["formAction"]=$conf["operationActionPage"];#爲該下拉式表單要傳送到的位置$conf["form.inputSelect"]["actionTarget"]="_top";#要如何接收網頁的迴應,預設爲_self$conf["form.inputSelect"]["jsActivitor"]="onChange";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。$conf["form.inputSelect"]["jsAction"]="document.forms.".$conf["operationVarName"].$i.".submit();";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["form.inputSelect"]["independentForm"]="false";#是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true"#$conf["form.inputSelect"]["hiddenVar"],字串陣列,隱藏的變數名稱陣列.$conf["form.inputSelect"]["hiddenVar"]=array($conf["hiddenIdVarName"]);#$conf["form.inputSelect"]["hiddanVarValue"],字串陣列,隱藏變數的數值內容.$conf["form.inputSelect"]["hiddenVarValue"]=array($tableContent["dataContent"][$conf["hiddenIdColumnName"]][$i]);#$conf["form.inputSelect"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["form.inputSelect"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form.inputSelect"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["form.inputSelect"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#備註:#$_SERVER["PHP_SELF"]為php檔案自己#參考資料來源:#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。$inputSelect=form::inputSelect($conf["form.inputSelect"]);unset($conf["form.inputSelect"]);#如果 下拉式選單建立錯誤if($inputSelect["status"]=="false"){#取得錯誤訊息$result["error"]=$inputSelect;#設置錯誤識別$result["status"]="false";#回傳結果return $result;}#if end#放入下拉式選單$conf["table.printRow"]["tdContent"][]=$inputSelect["content"];#建立內容攔#涵式說明:#建立列的元素,以及指定裏面要放什麼內容#回傳的變數:#$result,建立列元素的語法#必填的參數:$conf["table.printRow"]["trClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table.printRow"]["tdClass"]="__withBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#可以省略的參數:#如果是第一筆資料if($i==0){$conf["table"]["printRow"]["tableStartClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table"]["printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。}#if end#如果是最後一筆資料if($i==$tableContent["dataCount"]-1){$conf["table"]["printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。}#if end#$conf["table"]["printRow"]["formStart"]="true";#是否要有表單的開始#$conf["table"]["printRow"]["formName"]=$conf["operationVarName"].$i;#該表單的名稱#$conf["table"]["printRow"]["formAction"]=$conf["operationActionPage"];#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置#$conf["table"]["printRow"]["formTarget"]=$conf["operationTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["table"]["printRow"]["formEnd"]="true";#是否要有表單的結束$oneRow=table::printRow($conf["table.printRow"]);unset($conf["table.printRow"]);#如果建立 row 失敗if($oneRow["status"]==="false"){#取得錯誤訊息$result["error"]=$oneRow;#設置錯誤識別$result["status"]="false";#回傳結果return $result;}#if end#傳接列$result["content"]=$result["content"].$oneRow["content"];}#for end}#else end#設置執行成功的識別$result["status"]="true";#回傳結果return $result;}#function normal end/*#函式說明:#呈現多張有關連的資料表內容表單,包含可以設定各筆資料的操作,像是修改,移除,這些動作都可以設置要傳送的隱藏表單變數.#回傳結果:#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.#$result["error"],錯誤訊息陣列.#$result["content"],我們所要的內容.#$result["funtion"],當前執行的函數.#必填參數:#$conf["place"],字串陣列,爲每個連線的mysql-Server位置.$conf["place"]=array($dbAddress);#$conf["account"],字串陣列,爲用於每個連線連入mysql-Server時要使用的帳號.$conf["account"]=array($dbAccount);#$conf["selectedDataBaseName"],字串陣列,爲多張目標資料表所屬的資料庫.$conf["selectedDataBaseName"]=array($dbName);#$conf["selectedDataTableName"],字串陣列,爲多張目標資料表的名稱.$conf["selectedDataTableName"]=array($dtName);#$conf["linkColumnName"],#二維字串陣列,為可以從父表關連到其他資料表的欄位名稱.#$conf["linkColumnName"][$i]=array("parentColumnName","childColumnName"),為父資料表的"parentColumnName"欄位跟第($i-1)個關聯資料表的"childColumnName"關聯.$conf["linkColumnName"]=array(array(""));#可省略參數:#$conf["password"],字串陣列,爲每個連線連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["password"]=array($dbPassword);#$conf["parentTableIdColumnName"],字串,用於識別父表的欄位名稱.#$conf["parentTableIdColumnName"]="id";#預設為"id".#$conf["columnYouWant"],二維字串陣列,為每張資料表要抓的欄位有哪些,預設為id與name#$conf["columnYouWant"]=array(array("id","name"));#$conf["columnShowed"],二維字串陣列,為要顯示的欄位有哪些,預設為name#$conf["columnShowed"]=array(array("name"));#$conf["columnTitleName"],二維字串陣列,要顯示的欄位標題名稱陣列,預設為跟$conf["columnShowed"]一樣.#$conf["columnTitleName"]=array(array("name"));#$conf["operationVarName"],字串變數,傳送要求時,用於識別動作的變數名稱為何,預設為"action".#$conf["operationVarName"]="action";#$conf["operationShowed"],字串陣列,為每筆資料可以執行的操作,預設為修改與移除,$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.#$conf["operationShowed"]=array("請選擇","修改","移除");#$conf["operationDefaultShowed"],字串,為每筆資料可執行操作的預設選項,預設為"請選擇",$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.#$conf["operationDefaultShowed"]="請選擇";#$conf["operationVarValue"],字串陣列,為每筆資料可執行操作傳送邀要求時,用於識別動作的變數數值內容,預設跟$conf["operationShowed"]一樣,$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.#$conf["operationVarValue"]=$conf["operationShowed"];#$conf["operationActionPage"],字串,為每筆資料可執行操作的要求接收頁面,預設為"action.php".#$conf["operationActionPage"]="action.php";#$conf["operationTarget"],字串,為每筆資料可執行操作呈現的方式,預設為"_top",$conf["columnName"]與$conf["operation"]與$conf["operationActionPage"]與$conf["operationTarget"]四者元數數目皆要相等.#$conf["operationTarget"]="_top";#參考資料:#無.#備註:#無.*/public static function combineMultiLinkedTable(&$conf){#初始化要回傳的陣列$result=array();#當前執行的函數$result["funtion"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填寫的參數:#$conf["varInput"],陣列變數,要檢查的陣列變數.$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("place","account","selectedDataBaseName","selectedDataTableName");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array","array","array","array");#可以省略的參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("columnYouWant","columnShowed","columnTitleName","operationDefaultShowed","hiddenLinkVarName","operationVarName","operationShowed","operationVarValue","operationActionPage","operationTarget","parentTableIdColumnName");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("array","array","array","string","array","string","array","array","string","string","string");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(array(array("id","name")),array(array("name")),$conf["columnShowed"],"請選擇",$conf["linkColumnName"],"action",array("請選擇","修改","移除"),$conf["operationShowed"],"action.php","_top","id");$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行結果為 "false"$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查沒通過if($checkResult["passed"]=="false"){#設置執行結果為 "false"$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#debug#var_dump($conf);#debug#var_dump($checkResult);#涵式說明:#透過一個父資料表取得多個關聯子資料表的資料,並合併成一張表#回傳的結果#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["parentTable"]["dataContent"],爲合併了子資料表欄位的父資料表的內容。#$result["parentTable"]["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["parentTable"]["dataCount"],爲取得的資料筆數。#必填的參數:$conf["db"]["fastGetMutiLinkedDbData"]["dbAddress"]=$conf["place"];#字串陣列,爲每個dbServer的位置。$conf["db"]["fastGetMutiLinkedDbData"]["dbAccount"]=$conf["account"];#字串陣列,爲登入每個dbServer的帳號。$conf["db"]["fastGetMutiLinkedDbData"]["dbName"]=$conf["selectedDataBaseName"];#字串陣列,爲每個要存取的資料庫名稱$conf["db"]["fastGetMutiLinkedDbData"]["tableName"]=$conf["selectedDataTableName"];#字串陣列,爲每個要存取的資料表名稱,$conf["tableName"][0]為父資料表.$conf["db"]["fastGetMutiLinkedDbData"]["linkColumnName"]=$conf["linkColumnName"];#二維字串陣列,為可以從父表關連到其他資料表的欄位名稱.#$conf["linkColumnName"][$i]=array("parentColumnName","childColumnName"),為父資料表的"parentColumnName"欄位跟第($i-1)個關聯資料表的"childColumnName"關聯.$conf["db"]["fastGetMutiLinkedDbData"]["columnYouWant"]=$conf["columnYouWant"];#二維字串陣列,為每個資料表依序想要的欄位.#可省略的參數:#如果 $conf["password"] 有設定if(isset($conf["password"])){#則設置連線密碼$conf["db"]["fastGetMutiLinkedDbData"]["dbPassword"]=$conf["password"];#字串陣列,爲要存取每個dbServer的密碼}#if end#$conf["db"]["fastGetMutiLinkedDbData"]["WhereColumnName"]=array("");#字串陣列,用於判斷語句的欄位項目陣列。#$conf["db"]["fastGetMutiLinkedDbData"]["WhereColumnValue"]=array("");#字串陣列,用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["db"]["fastGetMutiLinkedDbData"]["WhereColumnCombine"]=array("");#字串陣列,用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["db"]["fastGetMutiLinkedDbData"]["WhereColumnOperator"]=array("");#字串陣列,用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["db"]["fastGetMutiLinkedDbData"]["WhereColumnAndOr"]=array("");#字串陣列,用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["db"]["fastGetMutiLinkedDbData"]["orderItem"]="";#字串,排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["db"]["fastGetMutiLinkedDbData"]["ascORdesc"]="";#字串,要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["db"]["fastGetMutiLinkedDbData"]["numberStart"]="0";#字串,從第幾筆開始讀取,預設為"0",代筆第一筆。#$conf["db"]["fastGetMutiLinkedDbData"]["numLimit"]="30";#字串,要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["db"]["fastGetMutiLinkedDbData"]["groupBy"]=array();#字串陣列,爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。$combinedTable=db::fastGetMultiLinkedDbData($conf["db"]["fastGetMutiLinkedDbData"]);unset($conf["db"]);#如果取得關聯資料表資料失敗if($combinedTable["status"]=="false"){#設置執行結果為 "false"$result["status"]="false";#設置錯誤訊息$result["error"]=$combinedTable;#回傳結果return $result;}#if end#如果關聯資料表沒有資料if($combinedTable["parentTable"]["dataCount"]==0){#設置執行結果為 "false"$result["status"]="false";#設置錯誤訊息$result["error"][]="資料表沒有資料";#回傳結果return $result;}#if end#debug#echo "<p>entered!<p>";#debug#var_dump($combinedTable);#建立標題攔#增加操作欄$conf["table"]["printRow"]["tdContent"][]="操作攔";#列裏面要放的元素是?如果要空一欄則可以輸array(" ")#涵式說明:#建立列的元素,以及指定裏面要放什麼內容#回傳的變數:#$result,建立列元素的語法#必填的參數:$conf["table"]["printRow"]["trClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table"]["printRow"]["tdClass"]="__withBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#依據每張表的欄位名稱陣列foreach($conf["columnTitleName"] as $tableColumnArray){#依據標題陣列裡的元素foreach($tableColumnArray as $columnName){#設定標題攔位的名稱$conf["table"]["printRow"]["tdContent"][]=$columnName;}#foreach end}#foreach end#可以省略的參數:$conf["table"]["printRow"]["tableStartClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table"]["printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。#$conf["table"]["printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。#$conf["table"]["printRow"]["formStart"]="true";#是否要有表單的開始#$conf["table"]["printRow"]["formName"]="";#該表單的名稱#$conf["table"]["printRow"]["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置#$conf["table"]["printRow"]["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["table"]["printRow"]["formEnd"]="true";#是否要有表單的結束$result["content"]=$titleRow=table::printRow($conf["table"]["printRow"]);unset($conf["table"]);#印出資料筆數#echo $combinedTable["parentTable"]["dataCount"];#根據資料筆數($combinedTable["parentTable"]["dataCount"])for($i=0;$i<$combinedTable["parentTable"]["dataCount"];$i++){#初始化儲存每個欄位要放的內容$columnContentArray=array();#初始化儲存要傳送的隱藏變數名稱$hiddenVarName=array();#初始化儲存要傳送的隱藏變數數值$hiddenVarValue=array();#取得父表識別欄位名稱與數值內容$hiddenVarName[]=$conf["parentTableIdColumnName"];$hiddenVarValue[]=$combinedTable["parentTable"]["dataContent"][$conf["parentTableIdColumnName"]][$i];#根據每張父表與子表連接的欄位foreach($conf["linkColumnName"] as $parentAndChildLinkColumnOfEachTable){#取得子表的關聯欄位名稱$hiddenVarName[]=$parentAndChildLinkColumnOfEachTable[1];$hiddenVarValue[]=$combinedTable["parentTable"]["dataContent"][$parentAndChildLinkColumnOfEachTable[1]][$i];}#foreach end#傳送多個隱藏表單的資訊#回傳的數值:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數#$result["content"],語法#$result["sendedArrayName"],傳送的隱藏變數陣列#$result["sendedArrayValue"],傳送的隱藏變數陣列數值#$result["sendedArrayCount"],傳送的隱藏變數計數#必填的參數:$conf["form"]["inputMutiHidden"]["nameArray"]=$hiddenVarName;#欲傳送的隱藏陣列變數名稱$conf["form"]["inputMutiHidden"]["valueArray"]=$hiddenVarValue;#欲傳送的隱藏陣列變數數值$hiddenVar=form::inputMultiHidden($conf["form"]["inputMutiHidden"]);unset($conf["form"]);#如果建立隱藏的表單失敗if($hiddenVar["status"]=="false"){#設置執行結果為 "false"$result["status"]="false";#設置錯誤訊息$result["error"]=$hiddenVar;#回傳結果return $result;}#if end#反之建立正常else{$hiddenVar=$hiddenVar["content"];}#else end#debug#var_dump($conf);#建立操作選項的下拉式表單#涵式說明:#建立下拉式表單#回傳的結果:#$result,語法#必填的參數:$conf["form"]["inputSelect"]["name"]=$conf["operationVarName"];#爲該下拉式選單的名稱$conf["form"]["inputSelect"]["sendValue"]=$conf["operationVarValue"];#爲陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");#可省略的參數:#$conf["form"]["inputSelect"]["formName"]=$conf["operationVarName"].$i;#該表單的名稱#$conf["form"]["inputSelect"]["outputValue"]=$conf["operationVarValue"];#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。#$conf["form"]["inputSelect"]["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。$conf["form"]["inputSelect"]["defaultValue"]=$conf["operationDefaultShowed"];#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。#$conf["form"]["inputSelect"]["class"]="";#爲要套用的class樣式,若省略的話預設採用 __simpleButtonLinkDefaultButtonCssStyle 的css樣式名稱#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "100%" , "50" , "30" , "center"#$conf["form"]["inputSelect"]["formAction"]="";#爲該下拉式表單要傳送到的位置#$conf["form"]["inputSelect"]["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self$conf["form"]["inputSelect"]["jsActivitor"]="onChange";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。$conf["form"]["inputSelect"]["jsAction"]="document.forms.".$conf["operationVarName"].$i.".submit();";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["form"]["inputSelect"]["jsAction"]="document.".$conf["operationVarName"].$i.".submit";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["form"]["inputSelect"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["form"]["inputSelect"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form"]["inputSelect"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["form"]["inputSelect"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#備註:#$_SERVER["PHP_SELF"]為php檔案自己#參考資料來源:#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。$columnContentArray[]=$hiddenVar.form::inputSelect($conf["form"]["inputSelect"])["content"];unset($conf["form"]);#根據每張表格foreach($conf["columnShowed"] as $tableColumnShowedArray){#根據每個要顯示的欄位foreach($tableColumnShowedArray as $columnShowedName){#var_dump($columnShowedName);#取得要顯示的欄位內容$columnContentArray[]=$combinedTable["parentTable"]["dataContent"][$columnShowedName][$i];}#foreach end}#foreach end#建立內容攔#涵式說明:#建立列的元素,以及指定裏面要放什麼內容#回傳的變數:#$result,建立列元素的語法#必填的參數:$conf["table"]["printRow"]["trClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table"]["printRow"]["tdClass"]="__withBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["table"]["printRow"]["tdContent"]=$conf["columnName"];#列裏面要放的元素是?如果要空一欄則可以輸array(" ")$conf["table"]["printRow"]["tdContent"]=$columnContentArray;#可以省略的參數:#$conf["table"]["printRow"]["tableStartClass"]="__withBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["table"]["printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。#$conf["table"]["printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。$conf["table"]["printRow"]["formStart"]="true";#是否要有表單的開始$conf["table"]["printRow"]["formName"]=$conf["operationVarName"].$i;#該表單的名稱$conf["table"]["printRow"]["formAction"]=$conf["operationActionPage"];#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置$conf["table"]["printRow"]["formTarget"]=$conf["operationTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。$conf["table"]["printRow"]["formEnd"]="true";#是否要有表單的結束$result["content"]=$result["content"].table::printRow($conf["table"]["printRow"]);unset($conf["table"]);}#for end#涵式說明:#表格結束#回傳的結果:#表格結束的語法$result["content"]=$result["content"].table::end();#設置執行成功的識別$result["status"]="true";#回傳結果return $result;}#function combineMutiLinkedTable end/*#函式說明:#新增/修改資料表資料的表單#回傳結果:#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.#$result["error"],錯誤訊息陣列.#$result["content"],我們所要的內容.#$result["function"],當前執行的函式名稱.#必填參數:#$conf["theColumnYouWant"],二維字串陣列,代表新增或修改資料時,的目標欄位.#$conf["theColumnYouWant"][0][0],代表父表(第一張表)的第1個使用到的欄位.#$conf["theColumnYouWant"][0][1],代表父表(第一張表)的第2個使用到的欄位.#$conf["theColumnYouWant"][1][2],代表子表(第二張表)的第3個使用到的欄位.#$conf["theColumnYouWant"][2][3],代表子表(第三張表)的第4個使用到的欄位.$conf["theColumnYouWant"][$i][$j]=;#$conf["inputType"],二維字串陣列,每個欄位內容的輸入類型.#可用的類型有"singleLine","multiLine","select","radio","checkBox","file"#$conf["inputType"][0][0],代表父表(第一張表)使用到的第1個欄位的輸入型態.#$conf["inputType"][0][1],代表父表(第一張表)使用到的第2個欄位的輸入型態.#$conf["inputType"][1][2],代表子表(第二張表)使用到的第3個欄位的輸入型態.#$conf["inputType"][2][3],代表子表(第三張表)使用到的第4個欄位的輸入型態.#radio 與 checkBox 使用率低,所以尚未製作。$conf["inputType"][$i][$j]=;#$conf["submitAction"],字串,表單送出的目的地.$conf["submitAction"]="add.php";#$conf["addOrEdit"],字串變數,代表是新增(add)或編輯(edit)現有資料.$conf["addOrEdit"]="";#可省略參數:#$conf["inputSelectOption"],二維字串陣列,代表欄位填寫型式為"select"時,其選項有哪些,若不是下拉式選單欄位,則請設置為null.#$conf["inputSelectOption"][0][0],代表父表(第一張表)使用到的第1個欄位下拉式選單的選項陣列.#$conf["inputSelectOption"][0][1],代表父表(第一張表)使用到的第2個欄位下拉式選單的選項陣列.#$conf["inputSelectOption"][1][2],代表子表(第二張表)使用到的第3個欄位下拉式選單的選項陣列.#$conf["inputSelectOption"][2][3],代表子表(第三張表)使用到的第4個欄位下拉式選單的選項陣列.#$conf["inputSelectOption"]=array(array(array("請選擇","green","blue","yellow")));#$conf["dbAddress"],字串陣列,爲每個mysql-Server的位置.#$conf["dbAddress"]=array($dbAddress);#$conf["dbAccount"],字串陣列,爲每個用於連入mysql-Server時要使用的帳號.#$conf["dbAccount"]=array($dbAccount);#$conf["dbName"],字串陣列,爲每個目標資料表所屬的資料庫.#$conf["dbName"]=array($dbName);#$conf["dtName"],字串陣列,爲每個目標資料表所屬的資料表.#$conf["dtName"]=array("");#$conf["dbPassword"],字串陣列,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=array($dbPassword);#$conf["limitPrePage"],字串變數,限制前一個頁面必須要為哪些名稱之一才行。#$conf["limitPrePage"]=array();#$conf["transferLocation"],字串,為當前一頁不符合要求時,要轉址到哪邊,資安素養網"https://isafe.moe.edu.tw/"#$conf["transferLocation"]="https://isafe.moe.edu.tw/";#$conf["identifyVarName"],字串陣列變數,第$i+1張表用來識別是哪一筆資料的變數名稱,預設為"id".#$conf["identifyVarName"][$i]="id";#$conf["identifyColumnName"],字串陣列變數,第$i+1張表用來識別是哪一筆資料的欄位名稱,預設為"id".#$conf["identifyColumnName"][$i]="id";#$conf["prePageAction"]="index.php";#回上頁按鈕的目的地,預設為"index.php".#$conf["columnName"],二維字串陣列,顯示在新增欄位上的名稱與說明,預設為$conf["theColumnYouWant"].#$conf["columnName"][0][0],代表父表(第一張表)使用到的第1個欄位名稱與說明.#$conf["columnName"][0][1],代表父表(第一張表)使用到的第2個欄位名稱與說明.#$conf["columnName"][1][2],代表子表(第二張表)使用到的第3個欄位名稱與說明.#$conf["columnName"][2][3],代表子表(第三張表)使用到的第4個欄位名稱與說明.#$conf["columnName"][$i][$j]="";#$conf["readOnly"],二維字串陣列,每個欄位是否設為唯讀,"true"為唯讀,"false"為不唯讀,預設均為"false".#$conf["readOnly"][0][0],代表父表(第一張表)使用到的第1個欄位的輸入型態.#$conf["readOnly"][0][1],代表父表(第一張表)使用到的第2個欄位的輸入型態.#$conf["readOnly"][1][2],代表子表(第二張表)使用到的第3個欄位的輸入型態.#$conf["readOnly"][2][3],代表子表(第三張表)使用到的第4個欄位的輸入型態.#目前尚未實作該參數的設定...#$conf["readOnly"]=array(array("false"));#參考資料:#無.#備註:#建構中.*/public static function addAndEditRequest(&$conf){#初始化要回傳的陣列$result=array();#初始化要回傳的語法$result["content"]="";#當前執行的函式名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填寫的參數:#$conf["variableCheck.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="theColumnYouWant";$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="inputType";$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="submitAction";$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="addOrEdit";#$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="string";$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="string";#可以省略的參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"][]="prePageAction";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="columnName";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="dbAddress";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="dbAccount";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="dbName";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="dbPassword";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="identifyVarName";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="identifyColumnName";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="limitPrePage";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="transferLocation";#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="index.php";$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"theColumnYouWant\"]";$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="https://isafe.moe.edu.tw/";$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#初始化要放入到表格裡面的元素$everyInputCode=array();#設置回上頁的按鈕#放置按鈕#必要的參數:$conf["form"]["button"]["buttonDisplayValue"]="回上頁";#爲按鈕上顯示的文字。#可省略的參數:#$conf["form"]["button"]["buttonStyleName"]="";#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "100%" , "50" , "30" , "center"#$conf["form"]["button"]["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。#$conf["form"]["button"]["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。#$conf["form"]["button"]["tablStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"true"。#$conf["form"]["button"]["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。#$conf["form"]["button"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["form"]["button"]["trClass"]="__withoutBorder";#<tr>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["form"]["button"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form"]["button"]["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["form"]["button"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["form"]["button"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#$conf["form"]["button"]["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是。預設爲"true"。$conf["form"]["button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始。$conf["form"]["button"]["action"]=$conf["prePageAction"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用#$conf["form"]["button"]["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用$conf["form"]["button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束。$everyInputCode[]=form::button($conf["form"]["button"]);unset($conf["form"]["button"]);#空一格$everyInputCode[]=" ";#放置表單要遞交的位置#涵式說明:#表單開始#回傳的結果:#$result,表單開始的語法#必填的參數:$conf["form"]["start"]["action"]=$conf["submitAction"];#爲要交給那個檔案處理該表單傳送的內容#可省略的參數:#$conf["form"]["start"]["name"]="";#爲該表單的名稱#$conf["form"]["start"]["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["form"]["start"]["target"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["form"]["start"]["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;#$conf["form"]["start"]["tableClass"]="";#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$everyInputCode[]=form::start($conf["form"]["start"]);unset($conf["form"]["start"]);#如果是新增作業if($conf["addOrEdit"]=="add"){#$conf["inputType"] 有幾個元素就執行幾次for($i=0;$i<count($conf["inputType"]);$i++){#根據 $conf["inputType"][$i] 有幾個元素就執行幾次for($j=0;$j<count($conf["inputType"][$i]);$j++){#根據 $conf["inputType"][$i][$j] 來呈現填寫的形式#"singleLine"=>單行文字#"multiLine"=>多行文字#"select"=>下拉式選單#"radio"=>單選#"checkBox"=>複選#"file"=>檔案switch($conf["inputType"][$i][$j]){#如果是 "singleLine"case "singleLine":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#涵式說明:#可以輸入文字的表單#回傳的結果:#$result,語法#必填的參數$conf["form"]["inputText"]["name"]=$conf["theColumnYouWant"][$i][$j];#爲該文字輸入框的名稱,用於讓接收頁面讀取的名稱。$conf["form"]["inputText"]["readOnly"]="false";#爲該文字框是否可以填寫資料,若要只能觀看不能填寫,那麼就必須將其值設爲"true",反之要設爲"false"#可省略的參數:#$conf["form"]["inputText"]["width"]="";#爲文字框的外觀長度,預設是不作設定讓瀏覽器自行決定。#$conf["form"]["inputText"]["maxInputLength"]="";#爲可輸入的最大位元長度,預設不限制。#$conf["form"]["inputText"]["autoFocus"]="true";#是否為將填寫的指標移到該表單,"true"代表要#$conf["form"]["inputText"]["value"]="";#爲該文字框預設要顯示的文字,預設爲""。#$conf["form"]["inputText"]["class"]="";#爲要套用的css樣式,若省略,則會套用預設的 __inputTextCssStyle 樣式,其屬性爲 "width:100%","font-size:30px"#$conf["form"]["inputText"]["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)、"onClick"(按下按鈕時)、"onkeyup"(當鍵盤按下放開後)、"onmouseover"(當滑鼠移過去的時候)...,須搭配$conf["jsSubmitActionTarget"]參數。#$conf["form"]["inputText"]["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["form"]["inputText"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["form"]["inputText"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form"]["inputText"]["formStart"]="true";#爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始.#$conf["form"]["inputText"]["formAction"]="";#表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.#$conf["form"]["inputText"]["formName"]="";#爲該表單的名稱#$conf["form"]["inputText"]["formMethod"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["form"]["inputText"]["formTarget"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["form"]["inputText"]["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;#$conf["form"]["inputText"]["tableClass"]="";#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。#$conf["form"]["inputText"]["formEnd"]="true";#爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束.#$conf["form"]["inputText"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["form"]["inputText"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#$conf["form"]["inputText"]["tableEnd"]="true";#爲該表單是否要以</table>結尾,"true"爲是.$everyInputCode[]=form::inputText($conf["form"]["inputText"]);unset($conf["form"]["inputText"]);#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;#如果是 "multiLine"case "multiLine":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#涵式說明:#可以輸入文字的區塊#回傳結果:#$result,語法#必填的參數:$conf["form"]["inputTextArea"]["name"]=$conf["theColumnYouWant"][$i][$j];#爲文字輸入框的名稱,供接收端辨識用。$conf["form"]["inputTextArea"]["readOnly"]="false";#爲是否要爲唯讀,如果爲"true",則爲唯讀。反之則爲"false"。#可省略的參數:#$conf["form"]["inputTextArea"]["cols"]="";#爲文字輸入框的欄位數(寬),預設爲按照瀏覽器設定值。#$conf["form"]["inputTextArea"]["rows"]="";#爲文字輸入框的列數(高),預設爲按照瀏覽器設定值。#$conf["form"]["inputTextArea"]["maxInputLength"]="";#爲文字輸入的長度限制,預設無限制。#$conf["form"]["inputTextArea"]["defaultText"]="";#爲文字輸入框裏面的預設文字內容,預設是空的。#$conf["form"]["inputTextArea"]["class"]=;#爲要套用的css樣式。如果沒有指定 ,則採用預設的css樣式,其屬性爲 "width:100%","height:120px","font-size:30px"#$conf["form"]["inputTextArea"]["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。#$conf["form"]["inputTextArea"]["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["form"]["inputTextArea"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["form"]["inputTextArea"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form"]["inputTextArea"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["form"]["inputTextArea"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。$everyInputCode[]=form::inputTextArea($conf["form"]["inputTextArea"]);unset($conf["form"]["inputTextArea"]);#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;#如果是 "select"case "select":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#涵式說明:#建立下拉式表單#回傳的結果:#$result,語法#必填的參數:$conf["form"]["inputSelect"]["name"]=$conf["theColumnYouWant"][$i][$j];#爲該下拉式選單的名稱$conf["form"]["inputSelect"]["sendValue"]=$conf["inputSelectOption"][$i][$j];#爲陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");#可省略的參數:#$conf["form"]["inputSelect"]["formName"]="";#該表單的名稱#$conf["form"]["inputSelect"]["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。#$conf["form"]["inputSelect"]["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。#$conf["form"]["inputSelect"]["defaultValue"]="";#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。#$conf["form"]["inputSelect"]["class"]="";#爲要套用的class樣式,若省略的話預設採用 __simpleButtonLinkDefaultButtonCssStyle 的css樣式名稱#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "100%" , "50" , "30" , "center"#$conf["readOnly"],"字串",內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.$conf["readOnly"]="false";#$conf["form"]["inputSelect"]["formAction"]="";#爲該下拉式表單要傳送到的位置#$conf["form"]["inputSelect"]["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self#$conf["form"]["inputSelect"]["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。#$conf["form"]["inputSelect"]["jsAction"]="";#爲該js是要做什麼,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["form"]["inputSelect"]["hiddenVar"],字串陣列,隱藏的變數名稱陣列.#$conf["form"]["inputSelect"]["hiddenVar"]=array("");#$conf["form"]["inputSelect"]["hiddanVarValue"],字串陣列,隱藏變數的數值內容.#$conf["form"]["inputSelect"]["hiddenVarValue"]=array("");#$conf["form"]["inputSelect"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["form"]["inputSelect"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form"]["inputSelect"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["form"]["inputSelect"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#備註:#$_SERVER["PHP_SELF"]為php檔案自己#參考資料來源:#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。$everyInputCode[]=form::inputSelect($conf["form"]["inputSelect"]);unset($conf["form"]["inputSelect"]);#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;# radio 與 checkBox 使用率低,所以先不製作。/*#如果是 "radio"case "radio":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;#如果是 "checkBox"case "checkBox":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;*/#如果是 "file"case "file":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#涵式說明:#可以瀏覽要上傳的檔案#回傳的結果:#$result,語法#必填的參數:$conf["form.uploadOneFile"]["formFileName"]=$conf["theColumnYouWant"][$i][$j];#該上傳檔案的表單名稱#可省略的參數:#$conf["maxFileSize"]="";#檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)#$conf["browseButtonClass"]="__withoutBorder";#瀏覽檔案的按鈕樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form.uploadOneFile"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#$conf["formStart"]="true";#是否為表單的開始,預設不使用#$conf["formAction"]="";#表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己#$conf["formTarget"]="_self";#表單要呈現回應的位置,預設為"_self".#$conf["formEnd"]="true";#是否為表單的結束,預設不使用#$conf["comment"]="";#該上傳檔案的註解。預設不顯示$everyInputCode[]=form::uploadOneFile($conf["form.uploadOneFile"]);unset($conf["form.uploadOneFile"]);#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;#如果不是以上輸入類型default :#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]=$conf["inputType"][$i][$j]."輸入類型不存在";#回傳結果return $result;}#switch end}#for end}#for end}#if end#反之為修改作業else{#如果 $conf["identifyVarName"] 沒有設定if(!isset($conf["identifyVarName"])){#執行 $conf["dtName"] 元素次數的迴圈for($i=0;$i<count($conf["dtName"]);$i++){#皆設為 "id"$conf["identifyVarName"][]="id";}#for end}#if end#如果 $conf["identifyColumnName"] 沒有設定if(!isset($conf["identifyColumnName"])){#執行 $conf["dtName"] 元素次數的迴圈for($i=0;$i<count($conf["dtName"]);$i++){#皆設為 "id"$conf["identifyColumnName"][]="id";}#for end}#if end#debug#var_dump($conf);#初始儲存識別各資料表資料的識別欄位變數內容$identifyVarValue=array();#涵式說明:#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數#回傳的結果:#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。#$result["lostVarName"],沒有皆收到的變數名稱陣列#$result["inputDataContent"],所接收的參數陣列.#$result["inputDataContent"]["變數名稱"],所接收變數的內容.#$result["inputDataCount"],總共接收到幾個元素.#必填參數:#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";#可省略的參數:#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.#$conf["allowGet"]="true";#如果有設定 $conf["limitPrePage"]if(isset($conf["limitPrePage"])){#$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPrePage"];}#if end#$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["transferLocation"];#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.#$conf["ignore"]=array();#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.#$conf["correctCharacter"]="false";#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=$conf["identifyVarName"];#參考資料來源:#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php#備註:#表單變數的名稱若含有「.」,則會變成「-」。$receivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);unset($conf["form.responseMultiInputDataSecurityEnhance"]);#debug#var_dump($receivedVar);#如果接收表單變數失敗if($receivedVar["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$receivedVar;#回傳結果return $result;}#if end#如果接收表單變數不存在if($receivedVar["passed"]=="false"){#改用取得session變數試試#函式說明:#取得多個指定的session變數,並卸除之。#回傳結果:#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗。#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函式名稱.#$result["foundedAll"],是否找到所有的session變數,"true"代表找到,"false"代表沒找到.#$result["founded"],每個session變數是否取得,"true"代表找到,"false"代表沒找到.#$result["content"],取得的session變數內容陣列#必填的參數:$conf["session.getMultiSessionValues"]["sessionVarNameArray"]=$conf["identifyVarName"];#要取得內容的多個session變數名稱#可省略的參數:$conf["session.getMultiSessionValues"]["keyArrayOfGotSessionValue"]=$conf["identifyVarName"];#取得的session變數是否要將其key從「0,1,2...」改成自定的「名稱1,名稱2,名稱3...」。$conf["session.getMultiSessionValues"]["unsetSessionVars"]="true";#"true"代表要卸除取值完的session變數,反之"false"爲保留session變數,預設爲"true"。$getSessionValueResult=session::getMultiSessionValues($conf["session.getMultiSessionValues"]);unset($conf["session.getMultiSessionValues"]);#取得session變數失敗if($getSessionValueResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$getSessionValueResult;#回傳結果return $result;}#if end#如果沒有取得指定的全部session變數if($getSessionValueResult["foundedAll"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$getSessionValueResult;#回傳結果return $result;}#if end#debug#echo "<p>取得session變數</p>";#取得識別各資料表資料的識別欄位變數內容$identifyVarValue=$getSessionValueResult["content"];}#if end#反之有接收到指定的表單變數else{#取得識別各資料表資料的識別欄位變數內容$identifyVarValue=$receivedVar["inputDataContent"];}#else end#放置要傳送隱藏識別不同資料表哪筆資料的變數#傳送多個隱藏表單的資訊#回傳的數值:#$result["content"],語法#$result["function"],當前執行的函數#$result["sendedArrayName"],傳送的隱藏變數陣列#$result["sendedArrayValue"],傳送的隱藏變數陣列數值#$result["sendedArrayCount"],傳送的隱藏變數計數#$result["error"],錯誤訊息陣列#必填的參數:$conf["form.inputMultiHidden"]["nameArray"]=$conf["identifyVarName"];#欲傳送的隱藏陣列變數名稱$conf["form.inputMultiHidden"]["valueArray"]=$identifyVarValue;#欲傳送的隱藏陣列變數數值$hiddenVar=form::inputMultiHidden($conf["form.inputMultiHidden"]);unset($conf["form.inputMultiHidden"]);#如果建立要傳送的隱藏表單變數失敗if($hiddenVar["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$hiddenVar;#回傳結果return $result;}#if end#放置隱藏的表單到表格裡面$everyInputCode[]=$hiddenVar["content"];#$conf["inputType"] 有幾個元素就執行幾次for($i=0;$i<count($conf["inputType"]);$i++){#根據 $conf["inputType"][$i] 有幾個元素就執行幾次for($j=0;$j<count($conf["inputType"][$i]);$j++){#檢查連線到資料庫的變數是否有存在#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填寫的參數:#$conf["check.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["check.checkArguments"]["varInput"]=&$conf;#$conf["check.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["check.checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","dbName","dtName");#$conf["check.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["check.checkArguments"]["mustBeFilledVariableType"]=array("array","array","array","array");#可以省略的參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["canBeEmptyString"]="false";#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");#$conf["skipableVariableName"]=array();#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");#$conf["skipableVariableType"]=array();#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".#$conf["skipableVarDefaultValue"]=array("");$checkResult=variableCheck::checkArguments($conf["check.checkArguments"]);unset($conf["check.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 $conf["inputType"][$i][$j] 沒有設定if(!isset($conf["inputType"][$i][$j])){#代表可能設定錯誤#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"][]="\$conf[\"inputType\"]可能有錯";#回傳結果return $result;}#if end#根據 $conf["inputType"][$i][$j] 來呈現填寫的形式#"singleLine"=>單行文字#"multiLine"=>多行文字#"select"=>下拉式選單#"radio"=>單選#"checkBox"=>複選#"file"=>檔案switch($conf["inputType"][$i][$j]){#如果是 "singleLine"case "singleLine":#取得資料表的資料#涵式說明:#一次取得資料庫、表的資料#回傳的結果#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["dataColumnName"],抓取的資料欄位名稱陣列.#$result["dataColumnName"][$i]代表第$i+1個欄位名稱#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#$result["sql"],執行的sql字串.#必填的參數:$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"][$i];#爲dbServer的位置。$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"][$i];#爲登入dbServer的帳號。$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"][$i];#爲要存取的資料庫名稱$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"][$i];#爲要存取的資料表名稱$conf["db.fastGetDbData"]["columnYouWant"]=$conf["theColumnYouWant"][$i];#你想要的欄位!,若設為「array("*")」則代表全部欄位.#可省略的參數:#如果有設置連線密碼if(isset($conf["dbPassword"])){$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"][$i];#爲要存取dbServer的密碼}#if end#debug#var_dump($identifyVarValue);$conf["db.fastGetDbData"]["WhereColumnName"]=array($conf["identifyColumnName"][$i]);#用於判斷語句的欄位項目陣列。$conf["db.fastGetDbData"]["WhereColumnValue"]=array($identifyVarValue[$conf["identifyVarName"][$i]]);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。$getExistDataResult=db::fastGetDbData($conf["db.fastGetDbData"]);unset($conf["db.fastGetDbData"]);#debug#var_dump($getExistDataResult);#debug#var_dump($getExistDataResult["dataContent"][$conf["theColumnYouWant"][$i][$j]]);#如果 取得 既有資料失敗if($getExistDataResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$getExistDataResult;#回傳結果return $result;}#if end#如果 資料筆數等於 0if($getExistDataResult["dataCount"]==0){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"][]="找不到既有資料";#回傳結果return $result;}#if end#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#涵式說明:#可以輸入文字的表單#回傳的結果:#$result,語法#必填的參數$conf["form.inputText"]["name"]=$conf["theColumnYouWant"][$i][$j];#爲該文字輸入框的名稱,用於讓接收頁面讀取的名稱。$conf["form.inputText"]["readOnly"]="false";#爲該文字框是否可以填寫資料,若要只能觀看不能填寫,那麼就必須將其值設爲"true",反之要設爲"false"#可省略的參數:#$conf["form.inputText"]["width"]="";#爲文字框的外觀長度,預設是不作設定讓瀏覽器自行決定。#$conf["form.inputText"]["maxInputLength"]="";#爲可輸入的最大位元長度,預設不限制。#$conf["form.inputText"]["autoFocus"]="true";#是否為將填寫的指標移到該表單,"true"代表要$conf["form.inputText"]["value"]=$getExistDataResult["dataContent"][$conf["theColumnYouWant"][$i][$j]][0];#爲該文字框預設要顯示的文字,預設爲""。#$conf["form.inputText"]["class"]="";#爲要套用的css樣式,若省略,則會套用預設的 __inputTextCssStyle 樣式,其屬性爲 "width:100%","font-size:30px"#$conf["form.inputText"]["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)、"onClick"(按下按鈕時)、"onkeyup"(當鍵盤按下放開後)、"onmouseover"(當滑鼠移過去的時候)...,須搭配$conf["jsSubmitActionTarget"]參數。#$conf["form.inputText"]["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["form.inputText"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["form.inputText"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form.inputText"]["formStart"]="true";#爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始.#$conf["form.inputText"]["formAction"]="";#表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.#$conf["form.inputText"]["formName"]="";#爲該表單的名稱#$conf["form.inputText"]["formMethod"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["form.inputText"]["formTarget"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["form.inputText"]["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;#$conf["form.inputText"]["tableClass"]="";#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。#$conf["form.inputText"]["formEnd"]="true";#爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束.#$conf["form.inputText"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["form.inputText"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#$conf["form.inputText"]["tableEnd"]="true";#爲該表單是否要以</table>結尾,"true"爲是.$everyInputCode[]=form::inputText($conf["form.inputText"]);unset($conf["form.inputText"]);#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;#如果是 "multiLine"case "multiLine":#取得資料表的資料#涵式說明:#一次取得資料庫、表的資料#回傳的結果#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["dataColumnName"],抓取的資料欄位名稱陣列.#$result["dataColumnName"][$i]代表第$i+1個欄位名稱#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#$result["sql"],執行的sql字串.#必填的參數:$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"][$i][$j];#爲dbServer的位置。$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"][$i][$j];#爲登入dbServer的帳號。$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"][$i][$j];#爲要存取的資料庫名稱$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"][$i][$j];#爲要存取的資料表名稱$conf["db.fastGetDbData"]["columnYouWant"]=array($conf["theColumnYouWant"][$i][$j]);#你想要的欄位!,若設為「array("*")」則代表全部欄位.#可省略的參數:#如果有設置連線密碼if(isset($conf["dbPassword"])){$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"][$i][$j];#爲要存取dbServer的密碼}#if end$conf["db.fastGetDbData"]["WhereColumnName"]=array($conf["identifyVarName"][$i]);#用於判斷語句的欄位項目陣列。$conf["db.fastGetDbData"]["WhereColumnValue"]=array($conf["identifyColumnName"][$i]);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。$getExistDataResult=db::fastGetDbData($conf["db.fastGetDbData"]);unset($conf["db.fastGetDbData"]);#如果 取得 既有資料失敗if($getExistDataResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$getExistDataResult;#回傳結果return $result;}#if end#如果 資料筆數為 0if($getExistDataResult["dataCount"]==0){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"][]="找不到對應的資料表資料";#回傳結果return $result;}#if end#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#涵式說明:#可以輸入文字的區塊#回傳結果:#$result,語法#必填的參數:$conf["form"]["inputTextArea"]["name"]=$conf["theColumnYouWant"][$i][$j];#爲文字輸入框的名稱,供接收端辨識用。$conf["form"]["inputTextArea"]["readOnly"]="false";#爲是否要爲唯讀,如果爲"true",則爲唯讀。反之則爲"false"。#可省略的參數:#$conf["form"]["inputTextArea"]["cols"]="";#爲文字輸入框的欄位數(寬),預設爲按照瀏覽器設定值。#$conf["form"]["inputTextArea"]["rows"]="";#爲文字輸入框的列數(高),預設爲按照瀏覽器設定值。#$conf["form"]["inputTextArea"]["maxInputLength"]="";#爲文字輸入的長度限制,預設無限制。$conf["form"]["inputTextArea"]["defaultText"]=$getExistDataResult["dataContent"][$conf["theColumnYouWant"][$i][$j]][0];#爲文字輸入框裏面的預設文字內容,預設是空的。#$conf["form"]["inputTextArea"]["class"]=;#爲要套用的css樣式。如果沒有指定 ,則採用預設的css樣式,其屬性爲 "width:100%","height:120px","font-size:30px"#$conf["form"]["inputTextArea"]["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。#$conf["form"]["inputTextArea"]["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["form"]["inputTextArea"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["form"]["inputTextArea"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form"]["inputTextArea"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["form"]["inputTextArea"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。$everyInputCode[]=form::inputTextArea($conf["form"]["inputTextArea"]);unset($conf["form"]["inputTextArea"]);#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;#如果是 "select"case "select":#取得資料表的資料#涵式說明:#一次取得資料庫、表的資料#回傳的結果#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["dataColumnName"],抓取的資料欄位名稱陣列.#$result["dataColumnName"][$i]代表第$i+1個欄位名稱#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#$result["sql"],執行的sql字串.#必填的參數:$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"][$i][$j];#爲dbServer的位置。$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"][$i][$j];#爲登入dbServer的帳號。$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"][$i][$j];#爲要存取的資料庫名稱$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"][$i][$j];#爲要存取的資料表名稱$conf["db.fastGetDbData"]["columnYouWant"]=array($conf["theColumnYouWant"][$i][$j]);#你想要的欄位!,若設為「array("*")」則代表全部欄位.#可省略的參數:#如果有設置連線密碼if(isset($conf["dbPassword"])){$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"][$i][$j];#爲要存取dbServer的密碼}#if end$conf["db.fastGetDbData"]["WhereColumnName"]=array($conf["identifyVarName"][$i]);#用於判斷語句的欄位項目陣列。$conf["db.fastGetDbData"]["WhereColumnValue"]=array($conf["identifyColumnName"][$i]);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。$getExistDataResult=db::fastGetDbData($conf["db.fastGetDbData"]);unset($conf["db.fastGetDbData"]);#如果 取得 既有資料失敗if($getExistDataResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$getExistDataResult;#回傳結果return $result;}#if end#如果 資料筆數等於 0if($getExistDataResult["dataCount"]==0){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"][]="找不到既有資料";#回傳結果return $result;}#if end#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#涵式說明:#建立下拉式表單#回傳的結果:#$result,語法#必填的參數:$conf["form"]["inputSelect"]["name"]=$conf["theColumnYouWant"][$i][$j];#爲該下拉式選單的名稱$conf["form"]["inputSelect"]["sendValue"]=$conf["inputSelectOption"][$i][$j];#爲陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");#可省略的參數:#$conf["form"]["inputSelect"]["formName"]="";#該表單的名稱#$conf["form"]["inputSelect"]["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。#$conf["form"]["inputSelect"]["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。$conf["form"]["inputSelect"]["defaultValue"]=$getExistDataResult["dataContent"][$conf["theColumnYouWant"][$i][$j]][0];#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。#$conf["form"]["inputSelect"]["class"]="";#爲要套用的class樣式,若省略的話預設採用 __simpleButtonLinkDefaultButtonCssStyle 的css樣式名稱#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "100%" , "50" , "30" , "center"#$conf["readOnly"],"字串",內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.$conf["readOnly"]="false";#$conf["form"]["inputSelect"]["formAction"]="";#爲該下拉式表單要傳送到的位置#$conf["form"]["inputSelect"]["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self#$conf["form"]["inputSelect"]["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。#$conf["form"]["inputSelect"]["jsAction"]="";#爲該js是要做什麼,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["form"]["inputSelect"]["hiddenVar"],字串陣列,隱藏的變數名稱陣列.#$conf["form"]["inputSelect"]["hiddenVar"]=array("");#$conf["form"]["inputSelect"]["hiddanVarValue"],字串陣列,隱藏變數的數值內容.#$conf["form"]["inputSelect"]["hiddenVarValue"]=array("");#$conf["form"]["inputSelect"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["form"]["inputSelect"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form"]["inputSelect"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["form"]["inputSelect"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#備註:#$_SERVER["PHP_SELF"]為php檔案自己#參考資料來源:#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。$everyInputCode[]=form::inputSelect($conf["form"]["inputSelect"]);unset($conf["form"]["inputSelect"]);#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;# radio 與 checkBox 使用率低,所以先不製作。/*#如果是 "radio"case "radio":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;#如果是 "checkBox"case "checkBox":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;*/#如果是 "file"case "file":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#涵式說明:#可以瀏覽要上傳的檔案#回傳的結果:#$result,語法#必填的參數:$conf["form.uploadOneFile"]["formFileName"]=$conf["theColumnYouWant"][$i][$j];#該上傳檔案的表單名稱#可省略的參數:#$conf["maxFileSize"]="";#檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)#$conf["browseButtonClass"]="__withoutBorder";#瀏覽檔案的按鈕樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form.uploadOneFile"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#$conf["formStart"]="true";#是否為表單的開始,預設不使用#$conf["formAction"]="";#表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己#$conf["formTarget"]="_self";#表單要呈現回應的位置,預設為"_self".#$conf["formEnd"]="true";#是否為表單的結束,預設不使用#$conf["comment"]="";#該上傳檔案的註解。預設不顯示$everyInputCode[]=form::uploadOneFile($conf["form.uploadOneFile"]);unset($conf["form.uploadOneFile"]);#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;#如果不是以上輸入類型default :#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]=$conf["inputType"][$i][$j]."輸入類型不存在";#回傳結果return $result;}#switch end}#for end}#for end}#else end#設置送出的按鈕#放置按鈕#必要的參數:$conf["form"]["button"]["buttonDisplayValue"]="送出";#爲按鈕上顯示的文字。#可省略的參數:#$conf["form"]["button"]["buttonStyleName"]="";#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "100%" , "50" , "30" , "center"#$conf["form"]["button"]["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。#$conf["form"]["button"]["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。#$conf["form"]["button"]["tablStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"true"。#$conf["form"]["button"]["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。#$conf["form"]["button"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["form"]["button"]["trClass"]="__withoutBorder";#<tr>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["form"]["button"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form"]["button"]["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["form"]["button"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["form"]["button"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#$conf["form"]["button"]["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是。預設爲"true"。#$conf["form"]["button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始。#$conf["form"]["button"]["action"]=$conf["prePageAction"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用#$conf["form"]["button"]["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用$conf["form"]["button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束。$everyInputCode[]=form::button($conf["form"]["button"]);unset($conf["form"]["button"]);#放置一欄表格#涵式說明:#建立欄的元素,以及指定裏面要放什麼內容#回傳的變數:#$result["content"],建立欄元素的語法#$result["status"],"true"代表執行成功;"false"代表執行失敗。#$result["error"],錯誤訊息陣列#必填的參數:$conf["table"]["printColumn"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table"]["printColumn"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table"]["printColumn"]["tdContent"]=$everyInputCode;#列裏面要放的元素是?如果要空一列則可以輸array(" ")#可以省略的參數:$conf["table"]["printColumn"]["tableStartClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table"]["printColumn"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。$conf["table"]["printColumn"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。#$conf["table"]["printColumn"]["formStart"]="true";#是否要有表單的開始#$conf["table"]["printColumn"]["formName"]="";#該表單的名稱#$conf["table"]["printColumn"]["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置#$conf["table"]["printColumn"]["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["table"]["printColumn"]["formEnd"]="true";#是否要有表單的結束$table["printColumn"]=table::printColumn($conf["table"]["printColumn"]);unset($conf["table"]["printColumn"]);#如果 $table["printColumn"]["status"] 等於 "false"if($table["printColumn"]["status"]=="false"){#設置執行失敗識別$result["status"]="false";#設置錯誤訊息$result["error"]=$table["printColumn"];#回傳結果return $result;}#if end#取得整個申請表的語法$result["content"]=$table["printColumn"]["content"];#設置執行成功識別$result["status"]="true";#回傳結果return $result;}#function addAndeditRequest end/*#函式說明:#處理新增/修改資料表資料的要求#回傳結果:#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.#$result["error"],錯誤訊息陣列.#$result["warning"],警告訊息.#$result["content"],我們所要的內容.#$result["function"],當前執行的函式名稱.#必填參數:#$conf["theColumnYouWant"],二維字串陣列,代表新增或修改資料時,的目標欄位.#$conf["theColumnYouWant"][0][0],代表父表(第一張表)的第1個使用到的欄位.#$conf["theColumnYouWant"][0][1],代表父表(第一張表)的第2個使用到的欄位.#$conf["theColumnYouWant"][1][2],代表子表(第二張表)的第3個使用到的欄位.#$conf["theColumnYouWant"][2][3],代表子表(第三張表)的第4個使用到的欄位.$conf["theColumnYouWant"][$i][$j]=;#$conf["inputType"],二維字串陣列,每個欄位內容的輸入類型.#可用的類型有"singleLine","multiLine","select","radio","checkBox","file"#$conf["inputType"][0][0],代表父表(第一張表)使用到的第1個欄位的輸入型態.#$conf["inputType"][0][1],代表父表(第一張表)使用到的第2個欄位的輸入型態.#$conf["inputType"][1][2],代表子表(第二張表)使用到的第3個欄位的輸入型態.#$conf["inputType"][2][3],代表子表(第三張表)使用到的第4個欄位的輸入型態.#radio 與 checkBox 使用率低,所以尚未製作。$conf["inputType"][$i][$j]=;#$conf["addOrEdit"],字串變數,代表是新增(add)或編輯(edit)現有資料.$conf["addOrEdit"]="";#可省略參數:#$conf["failedAction"],字串,更新失敗時,要轉址到哪邊,預設為"index.php".#$conf["failedAction"]="index.php";#$conf["uploadDirUserDefine"],字串陣列,第$i-1張表的第$j-1個欄位,若有記錄上傳檔案,則可以分別指定存放的位置,否則預設都為"./uploadedFile".#$conf["uploadDirUserDefine"][$i][$j]="";#$conf["dbAddress"],字串陣列,爲每個mysql-Server的位置.#$conf["dbAddress"]=array($dbAddress);#$conf["dbAccount"],字串陣列,爲每個用於連入mysql-Server時要使用的帳號.#$conf["dbAccount"]=array($dbAccount);#$conf["dbName"],字串陣列,爲每個目標資料表所屬的資料庫.#$conf["dbName"]=array($dbName);#$conf["dtName"],字串陣列,爲每個目標資料表所屬的資料表.#$conf["dtName"]=array("");#$conf["dbPassword"],字串陣列,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=array($dbPassword);#$conf["columnName"],二維字串陣列,顯示在新增欄位上的名稱與說明,預設為$conf["theColumnYouWant"].#$conf["columnName"][0][0],代表父表(第一張表)使用到的第1個欄位名稱與說明.#$conf["columnName"][0][1],代表父表(第一張表)使用到的第2個欄位名稱與說明.#$conf["columnName"][1][2],代表子表(第二張表)使用到的第3個欄位名稱與說明.#$conf["columnName"][2][3],代表子表(第三張表)使用到的第4個欄位名稱與說明.#$conf["columnName"]=$conf["theColumnYouWant"];#$conf["limitPage"],字串陣列,限制前一個頁面為哪些名稱之一才能接收變數.#$conf["limitPage"]=array();#$conf["identifyVarName"],字串陣列變數,第$i+1張表用來識別是哪一筆資料的變數名稱,預設為"id".#$conf["identifyVarName"][$i]="id";#$conf["identifyColumnName"],字串陣列變數,第$i+1張表用來識別是哪一筆資料的欄位名稱,預設為"id".#$conf["identifyColumnName"][$i]="id";#參考資料:#無.#備註:#建構中.*/public static function addAndEditRequestResponse($conf){#初始化要回傳的陣列$result=array();#初始化要回傳的語法$result["content"]="";#當前執行的函式名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#如果沒有設定 $conf["uploadDirUserDefine"] 且 $conf["inputType"] 有設定 $conf["inputType"][0] 存在if(!isset($conf["uploadDirUserDefine"]) && isset($conf["inputType"]) && isset($conf["inputType"][0]) ){#$conf["inputType"] 有幾個元素就執行幾次for($i=0;$i<count($conf["inputType"]);$i++){#根據 $conf["inputType"][$i] 有幾個元素就執行幾次for($j=0;$j<count($conf["inputType"][$i]);$j++){#預設為 "./uploadedFile".$conf["uploadDirUserDefine"][$i][$j]="./uploadedFile";}#for end}#for end}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填寫的參數:#$conf["variableCheck.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="theColumnYouWant";$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="inputType";$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="addOrEdit";$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="dbAddress";$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="dbAccount";$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="dbName";$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="dtName";#$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="string";$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="array";#可以省略的參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"][]="columnName";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="failedAction";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="limitPage";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="uploadDirUserDefine";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="dbPassword";#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"theColumnYouWant\"]";$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="index.php";$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=$conf["uploadDirUserDefine"];$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#初始化要寫入或更新到資料庫的內容陣列$dataToWrite=array();#如果是新增作業if($conf["addOrEdit"]=="add"){#$conf["inputType"] 有幾個元素就執行幾次for($i=0;$i<count($conf["inputType"]);$i++){#根據 $conf["inputType"][$i] 有幾個元素就執行幾次for($j=0;$j<count($conf["inputType"][$i]);$j++){#根據 $conf["inputType"][$i][$j] 來呈現填寫的形式#"singleLine"=>單行文字#"multiLine"=>多行文字#"select"=>下拉式選單#"radio"=>單選#"checkBox"=>複選#"file"=>檔案switch($conf["inputType"][$i][$j]){#如果是 "singleLine"case "singleLine":#取得單行文字的內容#涵式說明:#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數#回傳的結果:#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。#$result["lostVarName"],沒有皆收到的變數名稱陣列#$result["inputDataContent"],所接收的參數陣列.#$result["inputDataContent"]["變數名稱"],所接收變數的內容.#$result["inputDataCount"],總共接收到幾個元素.#必填參數:#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";#可省略的參數:#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.#$conf["allowGet"]="true";#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];#$conf["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.#$conf["ignore"]=array();#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.#$conf["correctCharacter"]="false";#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=array($conf["theColumnYouWant"][$i][$j]);#參考資料來源:#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php#備註:#表單變數的名稱若含有「.」,則會變成「-」。$reveivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);unset($conf["form.responseMultiInputDataSecurityEnhance"]);#如果接收變數失敗if($reveivedVar["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$reveivedVar;#回傳結果return $result;}#if end#如果變數不符合規定if($reveivedVar["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$reveivedVar;#回傳結果return $result;}#if end#記錄接收到的第$i-1個資料表的第$j-1個欄位變數$dataToWrite[$i][$j]=$reveivedVar["inputDataContent"][$conf["theColumnYouWant"][$i][$j]];#跳出 switchbreak;#如果是 "multiLine"case "multiLine":#取得多行文字的區塊#涵式說明:#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數#回傳的結果:#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。#$result["lostVarName"],沒有皆收到的變數名稱陣列#$result["inputDataContent"],所接收的參數陣列.#$result["inputDataContent"]["變數名稱"],所接收變數的內容.#$result["inputDataCount"],總共接收到幾個元素.#必填參數:#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";#可省略的參數:#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.#$conf["allowGet"]="true";#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];#$conf["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.#$conf["ignore"]=array();#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.#$conf["correctCharacter"]="false";#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=array($conf["theColumnYouWant"][$i][$j]);#參考資料來源:#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php#備註:#表單變數的名稱若含有「.」,則會變成「-」。$reveivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);unset($conf["form.responseMultiInputDataSecurityEnhance"]);#如果接收變數失敗if($reveivedVar["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$reveivedVar;#回傳結果return $result;}#if end#如果變數不符合規定if($reveivedVar["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$reveivedVar;#回傳結果return $result;}#if end#記錄接收到的第$i-1個資料表的第$j-1個欄位變數$dataToWrite[$i][$j]=$reveivedVar["inputDataContent"][$conf["theColumnYouWant"][$i][$j]];#跳出 switchbreak;#如果是 "select"case "select":#取得下拉式選單的內容#涵式說明:#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數#回傳的結果:#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。#$result["lostVarName"],沒有皆收到的變數名稱陣列#$result["inputDataContent"],所接收的參數陣列.#$result["inputDataContent"]["變數名稱"],所接收變數的內容.#$result["inputDataCount"],總共接收到幾個元素.#必填參數:#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";#可省略的參數:#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.#$conf["allowGet"]="true";#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];#$conf["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.#$conf["ignore"]=array();#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.#$conf["correctCharacter"]="false";#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=array($conf["theColumnYouWant"][$i][$j]);#參考資料來源:#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php#備註:#表單變數的名稱若含有「.」,則會變成「-」。$reveivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);unset($conf["form.responseMultiInputDataSecurityEnhance"]);#如果接收變數失敗if($reveivedVar["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$reveivedVar;#回傳結果return $result;}#if end#如果變數不符合規定if($reveivedVar["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$reveivedVar;#回傳結果return $result;}#if end#記錄接收到的第$i-1個資料表的第$j-1個欄位變數$dataToWrite[$i][$j]=$reveivedVar["inputDataContent"][$conf["theColumnYouWant"][$i][$j]];#跳出 switchbreak;# radio 與 checkBox 使用率低,所以先不製作。/*#如果是 "radio"case "radio":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;#如果是 "checkBox"case "checkBox":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;*/#如果是 "file"case "file":#處理上傳的檔案#涵式說明:#處理上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。#回傳的變數:#$result["ServerFileName"]#檔案名稱#$result["ServerFileType"]#檔案類型#$result["ServerFileSize"]#檔案大小#$result["status"]#整體上傳有無成功。"true"代表完整成功 "false"代表有過程有錯誤#$result["error"]#錯誤訊息陣列#$result["fileRelativePosition"]#檔案的相對位置,包含檔案名稱與附檔名。#必填的參數:#$conf["formFileName"],字串,為上傳檔案時表單傳送時的名稱$conf["form.processUploadedFile"]["formFileName"]=$conf["theColumnYouWant"][$i][$j];#可省略的參數:#$conf["form.processUploadedFile"]["uploadDirUserDefine"],字串,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。$conf["form.processUploadedFile"]["uploadDirUserDefine"]=$conf["uploadDirUserDefine"][$i][$j];#$conf["form.processUploadedFile"]["ServerFilenameUserDefine"],字串,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名#$conf["form.processUploadedFile"]["ServerFilenameUserDefine"]="";#$conf["NoFileExtension"],字串,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名。#$conf["NoFileExtension"]="true";#$conf["form.processUploadedFile"]["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。$conf["form.processUploadedFile"]["limitPage"]=$conf["limitPage"];#$conf["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。$conf["form.processUploadedFile"]["taskName"]=$conf["columnName"][$i][$j]."上傳作業";#$conf["eraseOldFile"],字串,如果存在的話會移除舊的檔案,其值爲檔案的相對位置。#$conf["eraseOldFile"]="";#$conf["form.processUploadedFile"]["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作。亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容。#$conf["form.processUploadedFile"]["dbProcess"]="true";#$conf["form.processUploadedFile"]["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置#$conf["form.processUploadedFile"]["updatingMysqlServerAddress"]=$dbAddress;#$conf["form.processUploadedFile"]["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線。#$conf["form.processUploadedFile"]["updatingMysqlAccount"]=$dbAccount;#$conf["form.processUploadedFile"]["updatingMysqlPassword"],字串,連線時要使用的密碼#$conf["form.processUploadedFile"]["updatingMysqlPassword"]=$dbPassword;#$conf["form.processUploadedFile"]["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱#$conf["form.processUploadedFile"]["updatingDataBaseName"]=$dbName;#$conf["form.processUploadedFile"]["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表#$conf["form.processUploadedFile"]["updatingDataTableName"]="";#$conf["form.processUploadedFile"]["updatingConditionDataTableColumnName"],字串陣列,要用哪個欄位來識別要更新哪一筆資料。#$conf["form.processUploadedFile"]["updatingConditionDataTableColumnName"]=array("id");#$conf["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。#$conf["updatingConditionDataTableColumnValue"]=array("");#$conf["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?#$conf["updatingTargetDataTableColumnName"]=array("");#$conf["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置#$conf["updatingTargetDataTableColumnValue"]=array("");#參考資料:#file_exist()的用法#http:#php.net/manual/en/function.file-exists.php#bug:#目前發現上傳的檔案如果有中文字將會上傳失敗,但中文字如果是包在()裏面則不會出錯。$processUploadedFileResult=form::processUploadedFile($conf["form.processUploadedFile"]);unset($conf["form.processUploadedFile"]);#如果處理上傳的檔案失敗if($processUploadedFileResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$processUploadedFileResult;#回傳結果return $result;}#if end#記錄接收到的第$i-1個資料表的第$j-1個欄位變數,此處為檔案的相對路徑$dataToWrite[$i][$j]=$processUploadedFileResult["fileRelativePosition"];#跳出 switchbreak;#如果不是以上輸入類型default :#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]=$conf["inputType"][$i][$j]."輸入類型不存在";#回傳結果return $result;}#switch end}#for end}#for end#$conf["inputType"] 有幾個元素就執行幾次for($i=0;$i<count($conf["inputType"]);$i++){#要插入的欄位名稱#$conf["theColumnYouWant"][$i]#要插入的欄位數值內容#$dataToWrite[$i]#涵式說明:#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。#回傳的數值:#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.#$result["error"],錯誤訊息.#$result["sql"],執行的sql語法.#必填參數:$conf["db.insertData"]["dbAddress"]=$conf["dbAddress"][$i];#爲mysql-Server的位置$conf["db.insertData"]["dbAccount"]=$conf["dbAccount"][$i];#爲用於連入mysql-Server時要使用的帳號$conf["db.insertData"]["selectedDataBaseName"]=$conf["dbName"][$i];#要選取的資料庫名稱$conf["db.insertData"]["tableName"]=$conf["dtName"][$i];#爲要插入資料的資料表名稱$conf["db.insertData"]["columnName"]=$conf["theColumnYouWant"][$i];#爲資料表的項目名稱,#例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);$conf["db.insertData"]["insertValue"]=$dataToWrite[$i];#爲要插入度數值,#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);#可以省略的變數:#如果有設置連線密碼if(isset($conf["dbPassword"][$i])){$conf["db.insertData"]["dbPassword"]=$conf["dbPassword"][$i];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#參考資料來源:#http://www.javaworld.com.tw/jute/post/view?bid=21&id=173738&sty=1$insertDataResult=db::insertData($conf["db.insertData"]);unset($conf["db.insertData"]);#如果插入資料失敗if($insertDataResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$insertDataResult;#回傳結果return $result;}#if end}#for end}#if end#反之如果是編輯作業else if($conf["addOrEdit"]=="edit"){#如果 $conf["identifyVarName"] 沒有設定if(!isset($conf["identifyVarName"])){#執行 $conf["dtName"] 元素次數的迴圈for($i=0;$i<count($conf["dtName"]);$i++){#皆設為 "id"$conf["identifyVarName"][]="id";}#for end}#if end#如果 $conf["identifyColumnName"] 沒有設定if(!isset($conf["identifyColumnName"])){#執行 $conf["dtName"] 元素次數的迴圈for($i=0;$i<count($conf["dtName"]);$i++){#皆設為 "id"$conf["identifyColumnName"][]="id";}#for end}#if end#接收識別各資料表哪筆資料的變數#$conf["identifyVarName"][$i]#涵式說明:#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數#回傳的結果:#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["function"],當前執行的函數.#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。#$result["lostVarName"],沒有皆收到的變數名稱陣列#$result["inputDataContent"],所接收的參數陣列.#$result["inputDataContent"]["變數名稱"],所接收變數的內容.#$result["inputDataCount"],總共接收到幾個元素.#必填參數:#$conf["form.responseMultiInputDataSecurityEnhance"]["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";#可省略的參數:#$conf["form.responseMultiInputDataSecurityEnhance"]["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.#$conf["form.responseMultiInputDataSecurityEnhance"]["allowGet"]="true";#$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];#$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"],字串,遇到get傳值,或前一個頁面不符合要求時要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];#$conf["form.responseMultiInputDataSecurityEnhance"]["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.#$conf["form.responseMultiInputDataSecurityEnhance"]["ignore"]=array();#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.#$conf["form.responseMultiInputDataSecurityEnhance"]["correctCharacter"]="false";#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=$conf["identifyVarName"];#參考資料來源:#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php#備註:#表單變數的名稱若含有「.」,則會變成「-」。$receivedIdentifyVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);unset($conf["form.responseMultiInputDataSecurityEnhance"]);#如果 接收識別各資料表的識別變數 失敗if($receivedIdentifyVar["status"]=="false"){#設定執行不正常的識別$result["status"]="false";#設定執行錯誤$result["error"]=$receivedIdentifyVar;#回傳結果return $result;}#if end#如果 識別各資料表的識別變數 有缺if($receivedIdentifyVar["passed"]=="false"){#設定執行不正常的識別$result["status"]="false";#設定執行錯誤$result["error"]=$receivedIdentifyVar;#回傳結果return $result;}#if end#$conf["inputType"] 有幾個元素就執行幾次for($i=0;$i<count($conf["inputType"]);$i++){#根據 $conf["inputType"][$i] 有幾個元素就執行幾次for($j=0;$j<count($conf["inputType"][$i]);$j++){#根據 $conf["inputType"][$i][$j] 來呈現填寫的形式#"singleLine"=>單行文字#"multiLine"=>多行文字#"select"=>下拉式選單#"radio"=>單選#"checkBox"=>複選#"file"=>檔案switch($conf["inputType"][$i][$j]){#如果是 "singleLine"case "singleLine":#取得單行文字的內容#涵式說明:#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數#回傳的結果:#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。#$result["lostVarName"],沒有皆收到的變數名稱陣列#$result["inputDataContent"],所接收的參數陣列.#$result["inputDataContent"]["變數名稱"],所接收變數的內容.#$result["inputDataCount"],總共接收到幾個元素.#必填參數:#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";#可省略的參數:#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.#$conf["allowGet"]="true";#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];#$conf["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.#$conf["ignore"]=array();#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.#$conf["correctCharacter"]="false";#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=array($conf["theColumnYouWant"][$i][$j]);#參考資料來源:#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php#備註:#表單變數的名稱若含有「.」,則會變成「-」。$reveivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);unset($conf["form.responseMultiInputDataSecurityEnhance"]);#如果接收變數失敗if($reveivedVar["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$reveivedVar;#回傳結果return $result;}#if end#如果變數不符合規定if($reveivedVar["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$reveivedVar;#回傳結果return $result;}#if end#記錄接收到的第$i-1個資料表的第$j-1個欄位變數$dataToWrite[$i][$j]=$reveivedVar["inputDataContent"][$conf["theColumnYouWant"][$i][$j]];#跳出 switchbreak;#如果是 "multiLine"case "multiLine":#取得多行文字的區塊#涵式說明:#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數#回傳的結果:#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。#$result["lostVarName"],沒有皆收到的變數名稱陣列#$result["inputDataContent"],所接收的參數陣列.#$result["inputDataContent"]["變數名稱"],所接收變數的內容.#$result["inputDataCount"],總共接收到幾個元素.#必填參數:#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";#可省略的參數:#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.#$conf["allowGet"]="true";#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];#$conf["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.#$conf["ignore"]=array();#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.#$conf["correctCharacter"]="false";#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=array($conf["theColumnYouWant"][$i][$j]);#參考資料來源:#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php#備註:#表單變數的名稱若含有「.」,則會變成「-」。$reveivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);unset($conf["form.responseMultiInputDataSecurityEnhance"]);#如果接收變數失敗if($reveivedVar["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$reveivedVar;#回傳結果return $result;}#if end#如果變數不符合規定if($reveivedVar["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$reveivedVar;#回傳結果return $result;}#if end#記錄接收到的第$i-1個資料表的第$j-1個欄位變數$dataToWrite[$i][$j]=$reveivedVar["inputDataContent"][$conf["theColumnYouWant"][$i][$j]];#跳出 switchbreak;#如果是 "select"case "select":#取得下拉式選單的內容#涵式說明:#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數#回傳的結果:#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。#$result["lostVarName"],沒有皆收到的變數名稱陣列#$result["inputDataContent"],所接收的參數陣列.#$result["inputDataContent"]["變數名稱"],所接收變數的內容.#$result["inputDataCount"],總共接收到幾個元素.#必填參數:#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";#可省略的參數:#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.#$conf["allowGet"]="true";#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPage"];#$conf["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["failedAction"];#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.#$conf["ignore"]=array();#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.#$conf["correctCharacter"]="false";#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=array($conf["theColumnYouWant"][$i][$j]);#參考資料來源:#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php#備註:#表單變數的名稱若含有「.」,則會變成「-」。$reveivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);unset($conf["form.responseMultiInputDataSecurityEnhance"]);#如果接收變數失敗if($reveivedVar["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$reveivedVar;#回傳結果return $result;}#if end#如果變數不符合規定if($reveivedVar["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$reveivedVar;#回傳結果return $result;}#if end#記錄接收到的第$i-1個資料表的第$j-1個欄位變數$dataToWrite[$i][$j]=$reveivedVar["inputDataContent"][$conf["theColumnYouWant"][$i][$j]];#跳出 switchbreak;# radio 與 checkBox 使用率低,所以先不製作。/*#如果是 "radio"case "radio":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;#如果是 "checkBox"case "checkBox":#取得輸入的標題$everyInputCode[]=$conf["columnName"][$i][$j];#放置空一行$everyInputCode[]=" ";#跳出 switchbreak;*/#如果是 "file"case "file":#處理上傳的檔案#涵式說明:#處理上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。#回傳的變數:#$result["ServerFileName"]#檔案名稱#$result["ServerFileType"]#檔案類型#$result["ServerFileSize"]#檔案大小#$result["status"]#整體上傳有無成功。"true"代表完整成功 "false"代表有過程有錯誤#$result["error"]#錯誤訊息陣列#$result["fileRelativePosition"]#檔案的相對位置,包含檔案名稱與附檔名。#必填的參數:#$conf["formFileName"],字串,為上傳檔案時表單傳送時的名稱$conf["form.processUploadedFile"]["formFileName"]=$conf["theColumnYouWant"][$i][$j];#可省略的參數:#$conf["form.processUploadedFile"]["uploadDirUserDefine"],字串,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。$conf["form.processUploadedFile"]["uploadDirUserDefine"]=$conf["uploadDirUserDefine"][$i][$j];#$conf["form.processUploadedFile"]["ServerFilenameUserDefine"],字串,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名#$conf["form.processUploadedFile"]["ServerFilenameUserDefine"]="";#$conf["NoFileExtension"],字串,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名。#$conf["NoFileExtension"]="true";#$conf["form.processUploadedFile"]["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。$conf["form.processUploadedFile"]["limitPage"]=$conf["limitPage"];#$conf["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。$conf["form.processUploadedFile"]["taskName"]=$conf["columnName"][$i][$j]."上傳作業";#$conf["eraseOldFile"],字串,如果存在的話會移除舊的檔案,其值爲檔案的相對位置。#$conf["eraseOldFile"]="";#$conf["form.processUploadedFile"]["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作。亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容。#$conf["form.processUploadedFile"]["dbProcess"]="true";#$conf["form.processUploadedFile"]["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置#$conf["form.processUploadedFile"]["updatingMysqlServerAddress"]=$dbAddress;#$conf["form.processUploadedFile"]["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線。#$conf["form.processUploadedFile"]["updatingMysqlAccount"]=$dbAccount;#$conf["form.processUploadedFile"]["updatingMysqlPassword"],字串,連線時要使用的密碼#$conf["form.processUploadedFile"]["updatingMysqlPassword"]=$dbPassword;#$conf["form.processUploadedFile"]["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱#$conf["form.processUploadedFile"]["updatingDataBaseName"]=$dbName;#$conf["form.processUploadedFile"]["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表#$conf["form.processUploadedFile"]["updatingDataTableName"]="";#$conf["form.processUploadedFile"]["updatingConditionDataTableColumnName"],字串陣列,要用哪個欄位來識別要更新哪一筆資料。#$conf["form.processUploadedFile"]["updatingConditionDataTableColumnName"]=array("id");#$conf["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。#$conf["updatingConditionDataTableColumnValue"]=array("");#$conf["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?#$conf["updatingTargetDataTableColumnName"]=array("");#$conf["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置#$conf["updatingTargetDataTableColumnValue"]=array("");#參考資料:#file_exist()的用法#http:#php.net/manual/en/function.file-exists.php#bug:#目前發現上傳的檔案如果有中文字將會上傳失敗,但中文字如果是包在()裏面則不會出錯。$processUploadedFileResult=form::processUploadedFile($conf["form.processUploadedFile"]);unset($conf["form.processUploadedFile"]);#如果處理上傳的檔案失敗if($processUploadedFileResult["status"]=="false"){#如果錯誤訊息不為 沒有接收到上傳的檔案if($processUploadedFileResult["error"][0]!="沒有接收到上傳的檔案"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$processUploadedFileResult;#回傳結果return $result;}#if end#else endelse{#設置警告訊息$result["warning"][]=$conf["theColumnYouWant"][$i][$j]."檔案變數不存在";#將該變數的移除#$conf["inputType"][$i][$j]#$conf["theColumnYouWant"][$i][$j]#$conf["columnName"][$i][$j]#將該變數 從 要接收的變數中移除#涵式說明:#將陣列中特定元素剔除,並重新按照順序排序#回傳的結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息#$result["function"],當前執行的函數#$result["content"]["byName"],剔除掉特定元素的陣列,使用原來陣列的key來儲存.#$result["content"]["byNumber"],剔除掉特定元素的陣列,使用從0開始的整數key來儲存.#必填的參數:$conf["arrays.eraseElement"]["rawInputArray"]=$conf["inputType"][$i];#要處理的原始數字陣列$conf["arrays.eraseElement"]["eraseElementKey"]=$j;#要移除的元素key值$eraseResult=arrays::eraseElement($conf["arrays.eraseElement"]);unset($conf["arrays.eraseElement"]);#如果移除元素失敗if($eraseResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$eraseResult;#回傳結果return $result;}#if end#取得移除完元素的陣列$conf["inputType"][$i]=$eraseResult["content"]["byName"];#將該變數 從 要更新的欄位名稱變數中移除#涵式說明:#將陣列中特定元素剔除,並重新按照順序排序#回傳的結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息#$result["function"],當前執行的函數#$result["content"]["byName"],剔除掉特定元素的陣列,使用原來陣列的key來儲存.#$result["content"]["byNumber"],剔除掉特定元素的陣列,使用從0開始的整數key來儲存.#必填的參數:$conf["arrays.eraseElement"]["rawInputArray"]=$conf["theColumnYouWant"][$i];#要處理的原始數字陣列$conf["arrays.eraseElement"]["eraseElementKey"]=$j;#要移除的元素key值$eraseResult=arrays::eraseElement($conf["arrays.eraseElement"]);unset($conf["arrays.eraseElement"]);#如果移除元素失敗if($eraseResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$eraseResult;#回傳結果return $result;}#if end#將該變數 從 用於提示要更新的欄位名稱變數中移除$conf["theColumnYouWant"][$i]=$eraseResult["content"]["byName"];#將該變數 從 要更新的欄位名稱變數中移除#涵式說明:#將陣列中特定元素剔除,並重新按照順序排序#回傳的結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息#$result["function"],當前執行的函數#$result["content"]["byName"],剔除掉特定元素的陣列,使用原來陣列的key來儲存.#$result["content"]["byNumber"],剔除掉特定元素的陣列,使用從0開始的整數key來儲存.#必填的參數:$conf["arrays.eraseElement"]["rawInputArray"]=$conf["columnName"][$i];#要處理的原始數字陣列$conf["arrays.eraseElement"]["eraseElementKey"]=$j;#要移除的元素key值$eraseResult=arrays::eraseElement($conf["arrays.eraseElement"]);unset($conf["arrays.eraseElement"]);#如果移除元素失敗if($eraseResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$eraseResult;#回傳結果return $result;}#if end#將該變數 從 用於提示要更新的欄位名稱變數中移除$conf["columnName"][$i]=$eraseResult["content"]["byName"];#記數的$i要減1,因為當前元素會被後面的元素取代.$j--;#跳出 switchbreak;}#if end}#if end#記錄接收到的第$i-1個資料表的第$j-1個欄位變數,此處為檔案的相對路徑$dataToWrite[$i][$j]=$processUploadedFileResult["fileRelativePosition"];#取得舊檔案位置與名稱#array($conf["identifyColumnName"][$i]);#爲用來判斷要更新的哪筆資料的欄位名稱,須爲陣列值#array($receivedIdentifyVar["inputDataContent"][$conf["identifyColumnName"][$i]]);#為用來判斷是要更新哪筆資料的欄位對應數值,須爲陣列值#涵式說明:#一次取得資料庫、表的資料#回傳的結果#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["dataColumnName"],抓取的資料欄位名稱陣列.#$result["dataColumnName"][$i]代表第$i+1個欄位名稱#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#$result["sql"],執行的sql字串.#必填的參數:$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"][$i];#爲dbServer的位置。$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"][$i];#爲登入dbServer的帳號。$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"][$i];#爲要存取的資料庫名稱$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"][$i];#爲要存取的資料表名稱$conf["db.fastGetDbData"]["columnYouWant"]=array($conf["theColumnYouWant"][$i][$j]);#你想要的欄位!,若設為「array("*")」則代表全部欄位.#可省略的參數:#如果 $conf["dbPassword"][$i] 有設置if(isset($conf["dbPassword"][$i])){$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"][$i];#爲要存取dbServer的密碼}#if end$conf["db.fastGetDbData"]["WhereColumnName"]=array($conf["identifyColumnName"][$i]);#用於判斷語句的欄位項目陣列。$conf["db.fastGetDbData"]["WhereColumnValue"]=array($receivedIdentifyVar["inputDataContent"][$conf["identifyColumnName"][$i]]);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["db.fastGetDbData"]["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["db.fastGetDbData"]["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["db.fastGetDbData"]["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["db.fastGetDbData"]["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["db.fastGetDbData"]["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["db.fastGetDbData"]["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["db.fastGetDbData"]["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["db.fastGetDbData"]["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。$getShceduleFileResult=db::fastGetDbData($conf["db.fastGetDbData"]);unset($conf["db.fastGetDbData"]);#如果取得排程檔案資料失敗if($getShceduleFileResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$eraseResult;#回傳結果return $result;}#if end#如果排程檔案不存在if($getShceduleFileResult["dataCount"]==0){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="找不到排程檔案資料";#回傳結果return $result;}#if end#移除舊檔案#$getShceduleFileResult["dataContent"][$conf["theColumnYouWant"][$i][$j]][0];#涵式說明:#移除檔案#回傳的結果:#$result["status"],"true"代表移除成功,"false"代表移除失敗.#必填的參數:$conf["fileAccess.delFile"]["fileAddress"]=$getShceduleFileResult["dataContent"][$conf["theColumnYouWant"][$i][$j]][0];#要移除檔案的位置$eraseShceduleFile=fileAccess::delFile($conf["fileAccess.delFile"]);unset($conf["fileAccess.delFile"]);#如果移除排程檔案失敗if($eraseShceduleFile["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$eraseShceduleFile;#回傳結果return $result;}#if end#跳出 switchbreak;#如果不是以上輸入類型default :#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]=$conf["inputType"][$i][$j]."輸入類型不存在";#回傳結果return $result;}#switch end}#for end}#for end#$conf["inputType"] 有幾個元素就執行幾次for($i=0;$i<count($conf["inputType"]);$i++){#要更新的欄位名稱#$conf["theColumnYouWant"][$i]#要更新的欄位數值內容#$dataToWrite[$i]#函式說明:#更新資料表裏面的資料#回傳結果:#$result["status"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了#$result["error"],錯誤訊息#$result["sql"],執行的sql語法.#必填的參數:$conf["db.updateDataTableContent"]["dbAddress"]=$conf["dbAddress"][$i];#爲mysql-Server的位置$conf["db.updateDataTableContent"]["dbAccount"]=$conf["dbAccount"][$i];#爲用於連入mysql-Server時要使用的帳號$conf["db.updateDataTableContent"]["selectedDataBaseName"]=$conf["dbName"][$i];#要選取的資料庫名稱$conf["db.updateDataTableContent"]["tableName"]=$conf["dtName"][$i];#要修改的資料表名稱$conf["db.updateDataTableContent"]["whereColumn"]=array($conf["identifyColumnName"][$i]);#爲用來判斷要更新的哪筆資料的欄位名稱,須爲陣列值$conf["db.updateDataTableContent"]["whereValue"]=array($receivedIdentifyVar["inputDataContent"][$conf["identifyColumnName"][$i]]);#為用來判斷是要更新哪筆資料的欄位對應數值,須爲陣列值$conf["db.updateDataTableContent"]["tableColumnName"]=$conf["theColumnYouWant"][$i];#資料表項目的名稱陣列$conf["db.updateDataTableContent"]["updateDataValue"]=$dataToWrite[$i];#要更改成對應資料表項目的內容,須為陣列值#可省略的參數:#如果 有設定連線的密碼if(isset($conf["dbPassword"][$i])){$conf["db.updateDataTableContent"]["dbPassword"]=$conf["dbPassword"][$i];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end$updateDataResult=db::updateDataTableContent($conf["db.updateDataTableContent"]);unset($conf["db.updateDataTableContent"]);#如果更新資料失敗if($updateDataResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$updateDataResult;#回傳結果return $result;}#if end}#for end}#if end#反之代表 $conf["addOrEdit"] 參數有誤else{#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="\$conf[\"addOrEdit\"]參數只能為add或edit";#回傳結果return $result;}#else end#設置執行成功識別$result["status"]="true";#回傳結果return $result;}#function add&editResponse end}#class dataTable end?>