檢視 Etable/form 的原始碼
←
Etable/form
跳轉到:
導覽
、
搜尋
根據以下的原因,您並無權限去做編輯這個頁面:
您剛才的請求只有這個使用者組的使用者才能使用:
使用者
你可以檢視並複製本頁面的原始碼。
[[分類:Etable]][[分類:Etable/form]] ===六階段流程說明=== ====(一)form_edit與form_ins==== <table class=nicetable> <tr><th>form_edit($row=array())</th><th>form_ins()</th></tr> <tr><td colspan=2>new XoopsThemeForm 得到 form 物件</td></tr> <tr><td colspan=2>每欄處理一輪:</td></tr> <tr><td colspan=2>剔除演算式且沒有表代名之欄</td></tr> <tr><td colspan=2>留下允許編或允計插之欄</td></tr> <tr><td> hidden/both或hidden/edit<br/>用隱藏欄送出('f[表名][欄名]',$h($i,$row[$i])) </td><td> hidden/both或hidden/ins或hidden/ins_only<br/>用隱藏欄送出<br/> 1)('f[表名][欄名]',$h($i,欄位預設值))<br/> 2)('f[表名][欄名]',$h($i,null)) </td></tr> <tr><td> unix_time/both或unix_time/edit<br/>用隱藏欄送出('f[表名][欄名]',mktime()) </td><td> unix_time/both或unix_time/ins或unix_time/ins_only<br/>用隱藏欄送出('f[表名][欄名]',mktime()) </td></tr> <tr><td> 其他可編之欄,以addElements($i,$row[$i])處理 </td><td> 其他可插之欄,以:<br/> 1)addElements($i,欄位預設值)處理<br/> 2)addElements($i,null)處理 </td></tr> <tr><td> 不可編之欄送出addElement(new XoopsFormLabel(欄代名,$row[$i]),0) </td><td> 不可插之欄送出addElement(new XoopsFormLabel(欄代名,DONTINSERT),0) </td></tr> </table> ====(二)addElements($i,$value)==== *處理會員欄,「$value=$xoopsUser->getVar('uname');」是以 xoops 為外套時期使用,應移除 *處理formType中各欄,除hidden、wrap以外諸欄 *#unix_time:出時分秒小日曆 *#date:出日期小日曆 *#time:用 XoopsFormTime *#datetime:用 XoopsFormDateTime *#select:用 XoopsFormSelect 及其中的 addOptionArray(選項陣列) *#searchSelect:用 XoopsFormSelect 及其中的 addOptionArray(選項陣列) *#select2:用 XoopsFormSelect 及其中的 setExtra(" onChange='createOpt…'",false)、addOptionArray(選項陣列) *#radio:用 XoopsFormRadio 及其中的 addOptionArray(選項陣列) *#checkbox或bitCheckbox:用 XoopsFormCheckBox(欄代名,'f[表代名][欄名]',核取陣列或null) 及其中的 addOptionArray(選項陣列)。bitCheckbox 由 $value 拆解出各bit組合,成為預選值。 *#radioyn:用 XoopsFormRadioYN *#auto:用 XoopsFormTextArea *#rangeNumber:用 XoopsFormRangeNumber ,限制輸入範圍的數值,如「成績分數」 *#file:用 XoopsFormFile 盤,前為路徑選單,後為上傳按鈕 *#text:用 XoopsFormText ,可加 showColExplain *#其他(如 function):用 XoopsFormText *處理不在formType中的各欄,依coltype產生表單元素 *#blob/binary:XoopsFormLabel(表代名,BIDNT) *#blob/非binary:XoopsFormTextArea *#其他:XoopsFormText ====(三) javascript 中的表達==== <table class=nicetable> <tr><th>formType</th><th>HTML</th><th colspan=2>javascript</th><th>PHP</th></tr> <tr><th>select</th><td>name='f[表名][欄名]'<br/>id='f[表名][欄名]'</td><td>document.getElementsByName('f[表名][欄名]')[0].value<br/>document.getElementById('表單名').elements[第幾].value</td><th>select-one</th><td>$_POST['f']['表名']['欄名']</td></tr> <tr><th>radio</th><td>name='f[表名][欄名]'多個相同<br/>id='f[表名][欄名]0'<br/>id='f[表名][欄名]1'<br/>…</td><td>document.getElementsByName('f[表名][欄名]')[0].value<br/>document.getElementsByName('f[表名][欄名]')[1].value<br/>…<br/>document.getElementById('表單名').elements[第幾].value<br/>「第幾」跳號選項次<br/>核選的 checked 為 true<br/>未核選的 checked 為 false</td><th>radio</th><td>全未選不後送<br/>核選則$_POST['f']['表名']['欄名']</td></tr> <tr><th>checkbox<br/>(單選)</th><td>name='f[表名][欄名]'<br/>id='f[表名][欄名]0'</td><td>document.getElementsByName('f[表名][欄名]')[0].value<br/>document.getElementById('表單名').elements[第幾].value<br/>核選的 checked 為 true<br/>未核選的 checked 為 false</td><th>checkbox</th><td>未選不後送<br/>核選則$_POST['f']['表名']['欄名']</td></tr> <tr><th>checkbox<br/>(複選)</th><td>name='f[表名][欄名][]'<br/>id='f[表名][欄名]0'<br/>id='f[表名][欄名]1'<br/>…</td><td>document.getElementsByName('f[表名][欄名][]')[0].value<br/>document.getElementsByName('f[表名][欄名][]')[1].value<br/>…<br/>document.getElementById('表單名').elements[第幾].value<br/>「第幾」跳號選項次<br/>核選的 checked 為 true<br/>未核選的 checked 為 false</td><th>checkbox</th><td>全未選不後送<br/>核選則$_POST['f']['表名']['欄名']陣列</td></tr> </table> #getElementsByName 的 Elements 是複數加's',可以有很多同 name 的元素,即使只有一個,也要加 [0] 表示第一個<br/>而 getElementById 的 Element 是單數,只應傳回一個,不用加 [0] #.value 可以換成 .name 或 .type 或 .checked 或 .length ====(四)colValue($j,$value,$row)==== formType中只有特定表現沒有專用表單元素: #'長欄名'=>array('function',函式名),請參考[[Etable/開發#以函式決定欄值的表現|範例]] #'長欄名'=>array('wrap'),$value中的半形分號「;」代換為換行<br/> ====(五)main()中單筆資料前置處理,含插畢、刪一筆、編一筆==== 在編畢與插畢中,if(is_array($value)){…}裡面 #是 datetime :綜合 $value['date'],$value['pm'],$value['hour'],$value['min'] 得出年月日時分秒字串 #是 time :綜合 $value['hour'],$value['min'] 得出時分秒字串 #是 bitCheckbox :將各元素值加總 ====(六)main()中蒐尋表單傳入值前置處理==== 欄名必須在 search 陣列中 #欄名在 searchId 陣列中,條件用「該欄欄名='蒐尋表單傳回值'」 #formType[欄名][0]=='bitCheckbox',條件用「該欄欄名&蒐尋表單傳回值=蒐尋表單傳回值」 #其他情形,條件用「該欄欄名 like '%蒐尋表單傳回值%'」 ====(七)main()輸出蒐尋排序表單==== #日期欄用 text 型 input 輸入年月 #select欄、radio欄、bitCheckbox欄:出 select 選單 #checkbox欄:出核取方塊,選取有選的。其實 checkbox 應有三種蒐尋樣態,有選的、沒選的、全部。本段應改成選單。 ===表單物件應用=== $表單=new XoopsThemeForm(抬頭,表單名,$_SERVER['PHP_SELF']); :$選單元素=new XoopsFormSelect(抬頭,元素名,後送預設值,選項數,是否複選,id,是否span); // 前二引數必填 :#$選單元素->addOptionArray($選項陣列); // 將選項放上選單元素 :#$選項陣列中的諸陣列元素的索引為後送值,諸陣列元素的值為提示。 :$表單->addElement($選單元素,是否必填); // 之後才將$選單元素放入表單 :$表單->display(); // 印出表單,此方法在 form.php 中定義 ===前後呼應=== etable.php 中 /// 表單區 function addElements …new XoopsFormTime(欄代名,'f[欄名]',15,欄值); …form->addElement(上面生成的物件); 前面 // 主函式 function main // 單筆資料前置處理,含插畢、刪一筆、編一筆 if(is_array($value)){ if(isset($value['hour']) && isset($value['min'])){$value=$value['hour'].':'.$value['min'].':00';} } 以上段落出現兩次
返回到
Etable/form
。
導航
個人工具
登入
名字空間
頁面
討論
變換
檢視
閱讀
檢視原始碼
檢視歷史
動作
搜尋
導覽
首頁
近期變動
隨機頁面
使用說明
工具箱
連入頁面
相關頁面修訂記錄
特殊頁面
頁面資訊