Title1

Title2

Title3

7-2 列表

一、說明

當新增記錄後,一般會轉向至列表或顯示單筆

二、流程

  1. 使用 switch:switch 語句用於基於不同條件執行不同動作。
  2. Switch 語句

    如果您希望有選擇地執行若干代碼塊之一,請使用 Switch 語句。

    使用 Switch 語句可以避免冗長的 if..elseif..else 代碼塊。

  3. 語法
     

    switch (expression)
    {
    case label1:
      code to be executed if expression = label1;
      break;  
    case label2:
      code to be executed if expression = label2;
      break;
    default:  
        # ---- 目前網址 ----
        $_SESSION['return_url'] = getCurrentUrl();
        $op = "opList";
        opList();
    }

     

  4. 工作原理:
    對表達式(通常是變數$op)進行一次計算
    把表達式的值與結構中 case 的值進行比較
    如果存在匹配,則執行與 case 關聯的代碼
    代碼執行後,break 語句阻止代碼跳入下一個 case 中繼續執行
    如果沒有 case 為真,則使用 default 語句,並給予$op預設值 opList
    若執行轉向或AJAX請用 exit 

三、函數

  1. global
    global $xoopsDB,$xoopsTpl;

     

  2. 引入
      #---- 過濾資料 --------------------------
      $myts = &MyTextSanitizer::getInstance();

     

  3. 外鍵
    
      #外鍵
      $ForeignKeyMainOption = get_ForeignKeyMainOption("ugm_stk_staff",$staff, false);
    
      $ForeignKey="    
        <div class='row my-2'>
          <div class='col-sm-3'>
            <select name='staff' id='staff' onchange=\"location.href='?staff='+this.value\" class='form-control'>
              $ForeignKeyMainOption
            </select>
          </div>
        </div>
      ";  
      $xoopsTpl->assign("ForeignKey", $ForeignKey);

     

  4. 撈資料
    
      $andKey = $staff ? "where a.`staff`='{$staff}'":"";
      #撈資料
      $sql="select a.`sn`,a.`no`,a.`title`,a.`tel`,a.`fax`,a.`contact`,b.`title` as `staff_title`,a.`uniform`,a.`enable`        
        from " . $xoopsDB->prefix("ugm_stk_vendor") . " as a 
        left join ". $xoopsDB->prefix("ugm_stk_staff") ." as b on a.staff = b.sn
        $andKey
        order by a.`sort` desc,a.`date` desc";//die($sql);

     

  5. 分頁
    
      //getPageBar($原sql語法, 每頁顯示幾筆資料, 最多顯示幾個頁數選項);
      $p_count = 20;
      $PageBar = getPageBar_b4($sql, $p_count, 10);
      $bar = $PageBar['bar'];
      $sql = $PageBar['sql'];
      $total = $PageBar['total'];
      $bar = $total > $p_count ? "<hr>".$bar : "";
      $xoopsTpl->assign("bar", $bar);

     

  6. 整理記錄
    
      $result = $xoopsDB->query($sql) or redirect_header($_SERVER['PHP_SELF'], 3, web_error());
      $rows = array();
      while ($row = $xoopsDB->fetchArray($result)) {
        //
        $row['sn'] = intval($row['sn']);//客戶流水號
        $row['no'] = $myts->htmlSpecialChars($row['no']);//公司編號
        $row['title'] = $myts->htmlSpecialChars($row['title']);//公司名稱
        $row['tel'] = $myts->htmlSpecialChars($row['tel']);//公司電話
        $row['fax'] = $myts->htmlSpecialChars($row['fax']);//公司傳真
        $row['contact'] = $myts->htmlSpecialChars($row['contact']);//聯絡人
        $row['staff_title'] = $myts->htmlSpecialChars($row['staff_title']);//業務員
        $row['uniform'] = $myts->htmlSpecialChars($row['uniform']);//統一編號
        $row['enable'] = intval($row['enable']);//啟用
        $rows[] = $row;
      }
      $xoopsTpl->assign("rows", $rows);

     

  7.  

四、樣板

  1. boostrap3 面板
    https://v3.bootcss.com/components/#panels
  2.