開平食材採購系統/etable

出自福留子孫
在2015年3月8日 (日) 12:41由丁志仁對話 | 貢獻所做的修訂版本

(差異) ←上個修訂 | 最新修訂 (差異) | 下一修訂→ (差異)
跳轉到: 導覽搜尋

原汁 etable

MVC 分離

全伺服器共用(model)

  • constant.php
    1. etable class 的網址及檔案系統位置(絕對路徑)
    2. 進入資料庫的帳密。
    3. wiki 的文字過濾器。
    4. MediaWiki 及 資料表欄位內容投射:webContent($path)
  • etable 三層類別,工作程式必載入其中一層程式。
    1. DB.php 連結資料庫
    2. login.php 載入 DB.php 並提供登入登出功能。
    3. etable.php 載入 login.php 並提供完整功能。

全 CMS site共用(view)

  • siteConstant.php 全 site 共用常數。
  • theme.php 載入 siteConstant.php ,定義頁頭、頁尾
  • style.css 給 theme 用。
  • menu.css 下拉表單的 css ,給 theme 用。
  • index.php
    1. 載入 constant.php
    2. 載入 theme.php
    3. 載入 DB.php ,並連結資料庫
    4. echo 頁頭、webContent($path)、頁尾

工作程式(control)

  1. 載入 constant.php
  2. 載入 theme.php
  3. 載入 三層類別其中之一
  4. 工作:
    • 捕捉使用者按鍵,去資料庫找,然後產生業面新選單。
    • 如為「插畢」則檢查條件:
      1. 條件如成立 echo 'alert("警告訊息");';再echo "window.location='目的地';";
      2. 條件未成立,則為一般工作。
    • 一般工作:new 類別,設屬性,輸出頁首,main(),輸出頁尾。

森茂版 etable

  • 改 constant.php
    1. 去掉 wiki 解譯
    2. 去掉 webContent (可投射wiki頁、投射資料表內容)
    3. 增加 load_template 函式
      • 載入並表現表頭:load_template("header.php")
      • 載入並表現表尾:load_template("footer.php")
  • 沒有 theme.php

固定位置

  • /config/constant.php 根本常數檔
  • /config/etable-lib.php
    1. 載入 config/constant.php
    2. 載入 etable.php
    3. new $ET
    4. 指定 $ET 的登出錨點
  • /views/template/header.php 頁首
  • /views/template/footer.php 頁尾

工作程式說明(以 food.php 為例)

基本載入

  1. config/etable-lib.php
    • 載入 config/constant.php
      1. 不載入 wiki 解譯函式 wiki.php
      2. 缺函式 webContent :可投射wiki頁、投射資料表內容
      3. 多函式 load_template :可載入指定的 view
    • 載入 etable.php
    • new $ET
    • 指定 $ET 的登出錨點
  2. models/order.php
    • 載入 models/db-lib.php
      1. 函式 query($sql):傳回查詢結果。
      2. 函式 select_query($sql):傳回查詢結果之陣列(使用 mysql_fetch_assoc )。
    • 常用函式製備
  3. models/login.php:指定 $ET->loginTable
  4. 取用 $_REQUEST['workControl']['o1id']

工作

  1. 若 catchText 載入 models/searchSelect.php
    • models/searchSelect.php :由食材資料表找食材造 select 表單區塊,並 echo 出來。
  2. 若剛完成插入一筆,則檢查請購單是否已有這筆食材,
    • 如果有以 javascript 送出 alert
    • 如果沒有則載入 food-list.php ( 請購單 main() 後再 load_template("footer.php"))
  3. 若非 catchText 也非剛完成插入一筆則:load_template("header.php") 再載入 food-list.php

文件

其中「程式手冊」主要是寫PDF,內容摘要如下:

PDF產生流程:參考 order2pdf.php

  1. 在 models/pdf-fax.php(直印)或 models/pdf.php(橫印)產生 TCPDF 物件,並設定PDF相關資料,例如直印或橫印、紙張大小、邊界寬度、是否自動分頁、使用的字型等
  2. 把要轉換成PDF的資料,例如食材清單等,都以HTML格式並加到變數 $html 中
  3. 把變數 $html 透過 TCPDF 物件的方法 writeHTML() 暫存到記憶體中
  4. 使用 TCPDF 物件的方法 Output 執行輸出 PDF。Output() 第一個參數是輸出的 PDF 檔名,如果如要指定儲存到伺服器的哪個資料夾中,則寫成「./資料夾名稱/PDF檔名」。第二個是輸出 PDF 的方式,I:使用瀏覽器顯示,D:下載到使用者的電腦中,F:儲存到伺服器

傳真流程:參考 fax.php

  1. 中華電信網路傳真只接受上傳 PDF 檔,所以把要傳真的資料轉成PDF檔,儲存到伺服器上的資料夾 files_upload
  2. 準備傳真所需的參數:廠商傳真號碼($receiver)、上傳的PDF檔名($msgbody)、是否立即傳真($sendtype)、預定傳真時間($sendtime,立刻傳真,就給空值)
  3. 使用 function fax_sent() 執行傳真,執行完畢會回傳「傳真代碼」(一個數字),儲存到資料庫中,以供後續查詢是否傳真成功,因為傳真機大約1、2分鐘才會接收到傳真要求。fax_sent() 的定義在 models/fax-lib.php
  4. 中華電信會自動重試三次,如果都沒有傳真成功,才會回傳失敗。
  5. 執行 fax-result-all.php ,抓取資料庫中的傳真代碼,以查詢並更新傳真結果。如果傳真不成功,則會回傳失敗,否則只會是『已點選連結「傳真」』
  6. 資料夾 files_upload 的 PDF 檔使用 cron 指令每天晚上刪除,避免佔用過多伺服器硬碟空間