Toggle main menu visibility
新聞
下載
教材
影音
討論
其他選單
好站連結
行事曆
電子相簿
常見問題
萬用表單
即時留言簿
友站消息
社大學員
:::
登入
登入
帳號
密碼
登入
重整畫面
:::
所有書籍
「1041 XOOPS模組開發」目錄
MarkDown
2-6 admin/main.php
1. XOOPS的開發環境
1-1 xoops_version.php
1-2 languages/tchinese_utf8/modinfo.php
1-3 images/logo.png
1-4 tad_ebook 資料表
1-5 tad_ebook_page 資料表
2. 後台頁面與表單物件
2-1 sql/mysql.sql
2-2 xoops_version.php
2-3 admin/menu.php
2-4 language/tchinese_utf8/modinfo.php
2-5 templates/tad_ebook_adm_main.html
2-6 admin/main.php
3. 樣板與管理功能
3-1 admin/main.php
3-2 temaplates/tad_ebook_adm_main.html
4. 前台頁面與HTML表單
4-1 admin/main.php
4-2 /templates/tad_ebook_adm_main.html
4-3 /interface_menu.php
4-4 /post.php
4-5 /templates/tad_ebook_post.html
4-6 /xoops_version.php
5. 前台顯示及各種控管
5-1 /post.php
5-2 /templates/tad_ebook_post.html
5-3 /index.php
5-4 /templates/tad_ebook_index.html
5-5 /xoops_version.php
6. XOOPS群組與權限
6-1 /admin/menu.php
6-2 /admin/groupperm.php
6-3 /modules/system/admin/groupperm.php
6-4 /interface_menu.php
6-5 /xoops_version.php
6-6 /function.php
6-7 /verify.php
6-8 /templates/tad_ebook_verify.html
6-9 /post.php
6-10 /templates/tad_ebook_post.html
7. 搜尋、語系、偏好設定、自動功能
7-1 /templates/tad_ebook_post.html
7-2 /xoops_version.php
7-3 /include/search.php
7-4 /admin/main.php
7-5 /language/tchinese_utf8/admin.php
7-6 /templates/tad_ebook_adm_main.html
7-7 /language/tchinese_utf8/modinfo.php
7-8 /post.php
7-9 /include/onUpdate.php
7-10 /include/onInstall.php
7-11 /sql/mysql.sql
7-12 /include/onUninstall.php
7-13 /index.php
8. 上傳、區塊與BootStrapS3
8-1 /xoops_version.php
8-2 /sql/mysql.sql
8-3 /include/onUpdate.php
8-4 /admin/main.php
8-5 /templates/tad_ebook_adm_main.html
8-6 /blocks/tad_ebook_list.php
8-7 /templates/blocks/tad_ebook_list.html
8-8 /index.php
8-9 /templates/tad_ebook_index.html
9. 評論與通知功能
9-1 /xoops_version.php
9-2 /index.php
9-3 /templates/tad_ebook_index.html
9-4 /comment_new.php
9-5 /include/notification.inc.php
9-6 /admin/main.php
9-7 /language/tchinese_utf8/mail_template/new_ebook.tpl
9-8 Uniform Server的信件設定
9-9 /templates/tad_ebook_index_b3.html
9-10 /templates/tad_ebook_verify_b3.html
9-11 bootstrap2與bootstrap3水平表單結構
9-12 /templates/tad_ebook_post_b3.html
9-13 /templates/tad_ebook_adm_main_b3.html
3-1 admin/main.php
1041 XOOPS模組開發 ============== [](http://www.tad0616.net/uploads/tad_book3/file/1041/3.pdf) ### 一、 smarty樣板 1. 樣板(template)是使用者眼睛看到的界面,我們經由程式產生的任何結果,都可以傳送至樣板以便呈現在畫面上。 2. 樣板檔=html檔+smarty樣板標籤,樣板標籤看起來像這樣:<{$樣板標籤}> 3. XOOPS透過$xoopsTpl物件,來將PHP產生的值套用到樣板中(即樣板標籤): 4. $xoopsTpl->assign('樣板標籤' , $值); 5. 若是在函數中要使用$xoopsTpl樣板物件,記得用global $xoopsTpl,才能使用。 6. 若要在樣板中直接使用語系,請用: 7. <{$smarty.const.\_語系名稱}> ### 二、 smarty迴圈:製作樣板標籤二維陣列變數 1. 樣板標籤除了一次傳一個值外,也可以傳陣列,方法一模一樣,但陣列格式必須像這樣:
資料庫
二維陣列格式
實際範例
第一筆資料
$陣列名稱\[0\]\['索引名稱1'\] $陣列名稱\[0\]\['索引名稱2'\] $陣列名稱\[0\]\['索引名稱3'\]
$list\_ebook\[0\]\['ebook\_sn'\]=1; $list\_ebook\[0\]\['ebook\_title'\]="第一期 創刊號"; $list\_ebook\[0\]\['ebook\_post\_date'\]="2015-04-15";
第二筆資料
$陣列名稱\[1\]\['索引名稱1'\] $陣列名稱\[1\]\['索引名稱2'\] $陣列名稱\[1\]\['索引名稱3'\]
$list\_ebook\[1\]\['ebook\_sn'\]=2; $list\_ebook\[1\]\['ebook\_title'\]="第二期 會考特輯"; $list\_ebook\[1\]\['ebook\_post\_date'\]="2015-05-15";
2. 利用 $ebook = $xoopsDB->fetchArray($result); 剛好可以取得一維陣列,即:
$ebook\['ebook\_sn'\]=1; $ebook\['ebook\_title'\]="第一期 創刊號"; $ebook\['ebook\_post\_date'\]="2015-04-15";
該筆資料的「ebook\_sn」欄位值 該筆資料的「ebook\_title」欄位值 該筆資料的「ebook\_post\_date」值
3. 也就是說,在while迴圈中,再給予一個數字索引即可完成所需的二維陣列 ``` //用$i做第一個索引,這裡先設初始值 $i=0; //設定二維陣列變數的初始值 $list_ebook=""; //用迴圈一筆一筆抓出資料庫的數據 while($ebook = $xoopsDB->fetchArray($result)){ //將抓出的數據陣列,放到一維陣列中 $list_ebook[$i]=$ebook; //索引值+1 $i++; } //將此陣列套用到樣板標籤 list_ebook $xoopsTpl->assign('list_ebook' , $list_ebook); ``` ### 三、 smarty迴圈:套用二維陣列變數的樣板標籤 1. 做好二維陣列並套用到樣板後,可以利用<{foreach}>的方式來一筆一筆讀出陣列值:
<{foreach from=$list\_ebook item=ebook}> <tr> <td><{$ebook.ebook\_sn}></td> <td><{$ebook.ebook\_title}></td> <td><{$ebook.ebook\_post\_date}></td> <td><{$ebook.ebook\_publish\_date}></td> </tr> <{/foreach}>
從$list\_ebook擷取一筆資料,並塞入ebook樣板標籤中 建立一列表格 秀出期刊編號 秀出期刊標題 秀出投稿截止日 秀出發行日 一列結束 迴圈結束
2. from就是來自PHP的二維陣列變數 3. item就是設定樣板標籤名稱,以便將該變數取出陣列值後,塞進此樣板標籤 4. 樣板標籤若是陣列,其表示方式為:<{$樣板標籤.索引名稱}> ### 四、 BootStrap表格 1. 在表格標籤加入 class="table table-striped table-bordered table-hover" 2. table-striped 會出現斑馬紋,較容易辨識 3. table-bordered 會加入表格框線 4. table-hover 移過去該列會變色,較醒目 ### 五、 在樣板檔中加入刪除的功能連結 1. 利用 get 的傳遞方式可過連結來傳遞各種參數,格式為: ```
連結名稱
``` 2. 流程控制是利用$op,所以需傳遞一個op變數,以便告訴程式接下來要執行什麼動作。 3. 此外,還要傳遞流水號,如此,才能知道要刪除哪一筆資料(編號請用樣板標籤): ```
刪除
``` ### 六、 在php檔的流程控制中加入刪除 1. 一旦有設定一組op的動作(如op=delete\_ebook),接收端(main.php)就必須在流程控制的switch中加入一組 case "delete\_ebook": 的對應動作。 ``` //若$op=del_ebook時 case "del_ebook": //執行del_ebook()函數以刪除資料 del_ebook($ebook_sn); //刪除後轉向回自己這頁 header("location:{$_SERVER['PHP_SELF']}"); //停止程式 exit; //跳出流程(基本上執行不到...) break; ``` 2. 由於del\_ebook()需要傳入期刊編號$ebook\_sn,此編號用get方式傳來,但未來易可能從post方式傳來,故在流程控制之前,可先產生$ebook\_sn的初始值: ``` $ebook_sn=empty($_REQUEST['ebook_sn'])?"":intval($_REQUEST['ebook_sn']); ``` 3. 這是三元一次式的寫法:(條件)?真:假; 4. intval()用來強制數字化,用$\_REQUEST則可接收來自get、post、cookie的變數。 ### 七、 刪除資料庫資料 1. 在資料庫中要刪除資料的SQL語法: ``` delete from 資料表where 條件 ``` 2. 執行刪除或更新等動作時,需用 $xoopsDB->queryF($sql) 來強制執行 SQL 語法。 ### 八、 加入確認後刪除 1. 先修改原先的刪除連結,改為執行javascript函數 ```
刪除
``` 2. 在樣板中,加入以下javascript函數語法(需在執行之前)
<script> function del\_ebook\_func(sn){ var sure = window.confirm('確定要刪除此資料?'); if (!sure) return; location.href="main.php?op=del\_ebook&ebook\_sn=" + sn; } </script>
script起始標籤 定義del\_ebook\_func(ebook\_sn)函數 使用確認框,將使用者的選擇存入sure變數 假如按「否」,則跳出函數,不執行刪除 跳轉頁面至main.php,並帶參數,+是連接符,連接sn參數 script結束標籤
### 九、 加入修改功能 1. 和加入刪除的動作差不多,但op值可改為edit\_ebook,一樣要傳遞流水號。 2. 新增一組edit\_ebook流程,直接呼叫原有的表單函數ebook\_form($ebook\_sn),並傳入流水號,以便修改之。換言之,有傳入流水號即修改,沒傳入流水號即新增。 3. 在ebook\_form()函數加入一組$ebook\_sn參數。 4. 修改時,需讀出原有資料,並將之設為表單元件預設值。 5. 記得將$xoopsDB物件設為global,以便在函數中使用。 ``` // 假如有流水號(更新模式) if($ebook_sn){ // 先加入資料表前置字串 $tbl=$xoopsDB->prefix('ebook'); // 讀取指定流水號的所有資料 $sql="select * from $tbl where $ebook_sn='$ebook_sn'"; // 送出執行,執行失敗則停止,並秀出原因 $result=$xoopsDB->query($sql) or die(mysql_error()); // 利用list()將得到的一筆結果,四個欄位值,分別塞入四個指定變數中。 list($ebook_sn,$ebook_title,$ebook_post_date,$ebook_publish_date) = $xoopsDB->fetchRow($result); // 設定$op值為 update_ebook $op="update_ebook"; // 將投稿截止日的日期轉為時間戳記 $ebook_post_date=strtotime($ebook_post_date); // 將發行日的日期轉為時間戳記 $ebook_publish_date=strtotime($ebook_publish_date); // 若沒有傳入流水號(新增模式) }else{ // 標題和編號初始值均為空值 $ebook_title=$ebook_sn=""; // 投稿截止日設為現在時間 $ebook_post_date=time(); // 發行日設為現在時間 $ebook_publish_date=time(); // 設定$op值為insert_ebook $op="insert_ebook"; } ``` 6. op的值記得改為變數,變根據不同情形,使用不同op。另加入ebook\_sn的隱藏欄位,以便將流水號帶給下一個動作。 ``` $form->addElement(new XoopsFormHidden('ebook_sn', $ebook_sn)); $form->addElement(new XoopsFormHidden('op', $op)); ``` ### 十、 編輯時無須秀出列表 1. 修改樣板檔,在列出所有期刊列表的語法前後,利用<{if $list\_ebook}><{/if}>將之包起來,如此,只有在有傳入$list\_ebook二維陣列時,才會出現列表。 2. 編輯時,並不會產生$list\_ebook陣列,故列表剛好可以隱藏,無須出現。 ### 十一、 更新資料庫資料 1. 在流程新增一組update\_ebook的流程,並建立update\_ebook函數 2. 在資料庫中要更新資料的SQL語法: ``` update 資料表 set 欄位1='值1' , 欄位2='值2' , … where 條件 ``` ### 十二、 BootStrap按鈕 1. 在<a>或<button>標籤中,加入 class="btn" 可使用bootstrap的按鈕風格 2. btn-mini 可以讓按鈕縮小,另有btn-small或btn-large 3. btn-primary 藍色按鈕,用在主功能按鈕,例如「送出」、「儲存」、「查詢」 4. btn-warbing 黃色按鈕,有警告意味,例如「修改」 5. btn-danger 紅色按鈕,較重要或危險之動作,例如「刪除」 6. 另有btn-success 綠色按鈕及btn-info淺藍色按鈕可套用。
:::
搜尋
search
進階搜尋
QR Code 區塊
快速登入
所有討論區
「PHP全端開發」線上課程討論區
XOOPS使用討論區
一般研習學員
社大學員專用
路過哈啦區
XOOPS佈景設計
XOOPS模組開發
Tad書籍區
即時留言簿
書籍目錄
展開
|
闔起
線上使用者
128
人線上 (
69
人在瀏覽
線上書籍
)
會員: 1
訪客: 127
tad
,
更多…