Toggle main menu visibility
下載輕鬆架
套件下載
使用手冊
發問討論
網站地圖
:::
登入
登入
帳號
密碼
登入
:::
所有書籍
「XOOPS模組開發」目錄
MarkDown
8-1 加入報名功能
1. 安裝開發環境
1-1 幾個您要知道的位置
1-2 下載 XOOPS250ModuleConversionFiles
1-3 認識 xoops_version.php
1-4 logo製作
1-5 上課範例及需求
2. 資料庫規劃
2-1 完成資料庫部份設定
3. 後台界面設定
3-1 修改 admin/menu.php
3-2 後台管理頁面 main.php
3-3 後台管理主頁樣板
4. XOOPS內建表單Class
4-1 XOOPS表單物件的基本用法
4-2 將資料送至樣板呈現
4-3 各種XOOPS表單元件
4-4 加入 TinyMCE 編輯器
4-5 在內建表單元件加入額外設定
4-6 修改日曆元件
4-7 改用 CKEditor 編輯器
4-8 自動功能
4-9 完整表單函數
5. $xoopsDB資料庫物件
5-1 資料過濾檢查
5-2 $xoopsUser 使用者物件取得使用者資料
5-3 寫入資料庫
5-4 建立安全的表單
5-5 異常處理
6. 在前台頁面顯示
6-1 header.php
6-2 修改前台流程
6-3 從資料庫讀出單一資料
6-4 製作顯示單一活動頁面
6-5 陣列傳至Smarty樣板的用法
6-6 顯示列表
6-7 讀出資料的安全性過濾
6-8 過濾所有讀出的函數
6-9 加入模組工具列
7. 加入管理功能
7-1 編輯活動
7-2 更新活動
7-3 加入確認後刪除的機制
7-4 加入刪除功能
7-5 根據不同身份顯示不同內容
7-6 根據不同狀態顯示標籤
7-7 加入分頁功能
8. 加入報名按鈕
8-1 加入報名功能
8-2 報名過後的界面改變
8-3 取消報名
9. 新增區塊
9-1 編輯區塊主函數
9-2 同時讀取兩個資料表
9-3 區塊編輯設定
9-4 根據區塊設定來調整區塊
10. 加入搜尋
11. 加入偏好設定
11-1 加入分頁並套用偏好設定
12. 加入語系常數的方法
8-3 取消報名
XOOPS模組開發 ========= 1. 其實,我們已經悄悄的內建報名過後,就不可再報功能了!為什麼?因為我們當初設計資料表時,就把「uid」和「action\_id」組合成主索引,主索引只能有一組,所以絕對不會讓您有機會出現第二筆重複資料。若硬是要報名就會出現「Duplicate entry '2-1' for key 'PRIMARY'」的訊息。 2. 「那為何還要提出來修改?」因為,您覺得使用者看得懂「Duplicate entry '2-1' for key 'PRIMARY'」是啥意思嗎?更別說當使用者明明報完活動了,卻還在該活動頁面看到「我要報名」的按鈕,這時心裡會如何評價這位開發者呢? 3. 所以,請修改一下列處,以及活動頁面裡面,偵測,若使用者已經報名,就不顯示「我要報名」的按鈕。 4. 思考一下,作法有那些? ### 一、建議作法 1. 連到此模組時就撈出該使用者所有已經參加的資料,存成陣列,並放入session 2. 列出活動時,只要利用in\_array()判斷該活動有無在陣列中即可。 3. 優點,只多做了一次SQL請求就可以搞定。 ### 二、修改 interface\_menu.php 1. interface\_menu.php 是讀取模組一定會動到的,所以,可以在裡面判斷有$xoopsUser之後就後撈取該使用者所有已報名的活動編號 ``` if ($xoopsUser) { $module_id = $xoopsModule->getVar('mid'); $isAdmin = $xoopsUser->isAdmin($module_id); //抓取該使用者已報名的活動編號 if (!isset($_SESSION['uid_signup'])) { $tbl = $xoopsDB->prefix('signups'); $uid = $xoopsUser->uid(); $sql = "SELECT action_id FROM `{$tbl}` where `uid`='{$uid}'"; $result = $xoopsDB->query($sql) or web_error($sql); $_SESSION['uid_signup'] = []; while (list($action_id) = $xoopsDB->fetchRow($result)) { $_SESSION['uid_signup'][] = $action_id; } } } ``` 2. 我們將活動編號都放入 $\_SESSION\['uid\_signup'\] 陣列中 3. 由於迴圈只抓了一個欄位,故改用 $xoopsDB->fetchRow($result) 來抓,並利用 list() 做指派,把值放到 $action\_id 中。 ### 三、修改 signup() 報名函數 1. ,這部份很容易就被忽略,這是指登入後,如果又去報名其他活動,那麼報名的當下,應該要把該活動也加到 $\_SESSION\['uid\_signup'\] 陣列中才合理。 ``` //報名 function signup($action_id) { global $xoopsDB, $xoopsUser; $uid = $xoopsUser->uid(); $tbl = $xoopsDB->prefix('signups'); $sql = "INSERT INTO `{$tbl}` ( `action_id`, `uid`, `signup_date`) VALUES ('{$action_id}', '{$uid}', NOW())"; $xoopsDB->queryF($sql) or web_error($sql); $_SESSION['uid_signup'][] = $action_id; } ``` ### 四、修改主樣板的活動列表 1. 我們直接在樣板中判斷即可,編輯 list\_action.tpl ``` <{if $xoops_isadmin}>
刪除
編輯
<{elseif $xoops_isuser}> <{if $action.action_id|in_array:$smarty.session.uid_signup}>
取消報名
<{else}>
我要報名
<{/if}> <{/if}> ``` 2. 我們利用smarty的變數修飾器,直接使用 php 的 in\_array() 函數來判斷目前此活動編號有無在 $\_SESSION\['uid\_signup'\] 陣列中
:::
書籍目錄
展開
|
闔起
快速登入
所有討論區
Tad Search 資料查詢
懶人框架討論區
實戰PHP7+MySQL
XOOPS輕鬆架快速上手
校園網站輕鬆架一般討論區
Booking Helper 預約助手
es_stud_sign 班級報名
es charge 學生收費管理
E-Stud import 學生名冊管理
es_after_school 課後照顧報名
es_exam 學生作業繳交
ES_panel 校務行政面板
es_timetable 課表
ES_youtube 本校影音
info_whats 網路設備記錄
jill booking 場地預約
jill_notice 臨時公告
jill query 簡易查詢
jill receipt 領據填報
kw club 社團報名
kw device 設備借用管理系統
ntpc_oprnid 新北市 OpenID 登入
TinyD嵌入內容模組
ugm contact us 聯絡我們
ugm page 自訂頁面
ugm table 萬用表格
Yaoh Servicelearning 服務學習管理系統
dummy 自訂模組
soone_submit 投稿模組
Tad Adm 站長工具箱
Tad Assignment 作業上傳展示模組
Tad Blocks 進階區塊管理
Tad Book3 線上書籍
Tad Cal 行事曆
Tad Cbox 即時留言簿
Tad Discuss 討論區模組
Tad Embed 崁入模組
Tad Evaluation 評鑑檔案管理
Tad Form 萬用表單模組
Tad FAQ 常見問答
Tad Google 相簿
Tad Gallery 電子相簿
Tad Guide 安裝精靈
Tad Honor 榮譽榜
Tad idioms 背背成語
Tad Link 好站連結
Tad Login 快速登入
Tad Lunch3 午餐資訊
Tad Lunch2 營養午餐公告
Tad Meeting 會議系統
Tad Merage 線上合併套印
Tad News 本站消息
Tad Player 影音播放
Tad RSS 友站新聞
Tad Repair 維修通報
Tad SiteMap網站地圖
Tad Timeline 重要紀事
Tad Themes 佈景管理
Tad Tools 工具包
Tad TV 直播電視
Tad Uploader 檔案上傳模組
Tad Users 大量會員管理
Tad Web 多人網頁模組
MyTabs 我的頁籤
Random Quote 隨機小語
LogCounterX 網站流量統計
Yaoh light 多區塊多層次跑馬燈模組
校園網站輕鬆架功能建議區
佈景討論區
即時留言簿
search
進階搜尋
計數器
今天:
昨天:
總計: