2022年3月19日 星期六

MySQL IF EXIST UPDATE ELSE INSERT

 以下提供的是一般在大量倒資料時,會用到的,請僅慎使用!!

================================================================


IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue') THEN

    UPDATE Table1 SET (...) WHERE Column1='SomeValue'

ELSE

    INSERT INTO Table1 VALUES (...)

END IF;

================================================================


UPDATE Table1 SET (...) WHERE Column1='SomeValue'

IF @@ROWCOUNT=0

    INSERT INTO Table1 VALUES (...)

2022年3月3日 星期四

SC Layout 的 HTML Templates

 整個SC是一個完整的HTML APP 開發系統,他可以產生一個HTML頁。

預先設定的 Layout 可以套用 Header Template 以及 Footer Template,中間就留著放主內容Content APP。

如果有 HTML 的  <head></head>的內容要自己安插進去,就必須寫在 Events onApplicationInit 裡面。

然後,<boby></boby>裡面再分為 會系統重複的 header /footer


SC - FORM 表單設計

 FORM Application有四種不同的形態:

  1. Single Record:一個頁面一筆紀錄
  2. Multiple Records:一個頁面同時多筆紀錄;前面可以有選取勾勾,同時做多筆更新或刪除
  3. Editable grid:以方格式表現多筆紀錄同時編輯;每筆紀錄前面可有刪除、更新、複製等按鈕
  4. Editable grid view:以方格式表現多筆紀錄,但先只是只讀,需要再按一次按鈕才能編輯。

* 做購物車 Cart 更新功能時,SC online Shop 範例Samples 裡面有兩種做法:
  • my_cart :是 Grid Application
  • form_cart:是 Form Editable Grid Application
最後程式是用 my_cart Grid 作法。
序號、品名、[-]按鈕、數量、[+]按鈕、單價、金額

[-][+]按鈕,是使用 Ajax onClick Event 程式執行 數量的增減

2022年3月2日 星期三

SC 欄位效果:sc_input_group

有趣的文章內容,參考:

https://medium.com/scriptcase-master/bootstrap-input-group-in-scriptcase-mastertip09-a20a9a7dca5


1. 我將 sc_input_group(),寫到 internal libraries 裡面,這樣可以共用。

2. 記得使用時,需要先將 ajax_error_output 設成 OFF ,在 application -> Setting 裡面

3. 如果是在 Form 的單一Record 時,在 Event onLoad 裡面,設:

$arr_fields = [

['login'    , 'text', 'R$', 'right'],

['email', 'text', '@gmail.com', 'right'],

['nick_name'    , 'icon', 'fas fa-at', 'right']

];

sc_input_group($arr_fields,null);

如果是 multi records From ,在 EVENT onLoadRecord


# Form with multiple lines example

$arr_fields = [

['field_name', 'text', 'R$', 'right'],

['field_name', 'text', '@gmail.com', 'right'],

['field_name', 'icon', 'fas fa-at', 'right'],

['field_name', 'icon', 'fas fa-phone', 'right'],

['field_name', 'icon', 'fas fa-phone', 'right']

];

sc_input_group($arr_fields, $sc_seq_vert);



2022年3月1日 星期二

ERROR: CONSTANT DS ALREADY DEFINED

Constant 重複定義了! 

找到這個指令:

define('DS', DIRECTORY_SEPARATOR);

修改成這樣就可以了:

if(!defined('DS')){ define('DS',DIRECTORY_SEPARATOR); }

MySQL sql_mode=only_full_group_by

MySQL 產生 sql_mode=only_full_group_by

這是我做一個 View 裡面有 GROUP BY

在我的 Local MySQL沒有問題,上傳到  Server 就有問題了。

這一定就是版本不同的緣故。

於是網路搜尋:

https://www.gushiciku.cn/pl/pFxA/zh-tw

https://www.twle.cn/c/yufei/mysqlfav/mysqlfav-basic-sql_mode2.html

修改了 Server 上面 /etc/my.cnf

sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

加上這段,重新啟動MySQL 就好了!

如何判斷現在FORM是在 insert mode? 還是 update mode?

只要用  if (empty({primary_key})) 就可以知道是否為新增模式了。 如果 {promary_key} 是空白的,那麼就是在新增模式;反之,就是更新模式。 以上。