2021年1月28日 星期四

session_id()

 如果有 Session_id() 要延續,程式是這樣:

session_id($_GET["sid"]);

session_start();


2021年1月27日 星期三

CodeCharge checkbox 如果是只在 前端javascript 用,就不要用內建的 form->checkbox

 CodeCharge checkbox 如果是只在 前端javascript 用,就不要用內建的 form->checkbox


如果在 html 使用  code-charge 內建的 checkbox ,他會 表現得跟單純的 html checkbox 不大一樣。

如果只是要在前端使用 javascript ,不會更新後端資料庫,就不要用CCS內建的checkbox!

他會不一樣!很頭大!

例如:寫 購物車,結帳,收件人與會員資料一樣,前面加個 check,讓用戶選擇,只要 click on, 就複製會員資料到收件人欄位裡,這個功能只要單純的 javascript 就可以了。

那麼,就使用單純的 html 的 checkbox 就好。千萬不要使用CCS內建的checkbox,會無法使用!

紀錄 下



        <div class="form-group">

          <label>請填寫送貨收件人資料 (請填入收件人真實姓名,以確保順利收件)</label>

        </div>

        <hr>

        <div class="form-group">

        <div class="checkbox">

          <label for="contentorderssame_with_customer">

<input type="checkbox" id="contentorderssame_with_customer" onclick="same_with_customer()">

          {res:same_with_customer}

          </label>

</div>

</div>

       <div class="form-group">

          <label for="contentordersdelivery_name">{res:delivery_name}</label>

          <input type="text" class="form-control" name="{delivery_name_Name}" value="{delivery_name}" id="contentordersdelivery_name">

        </div>

 

        <div class="form-group">

          <label for="contentordersdelivery_telephone">{res:delivery_telephone}</label>

          <input  class="form-control" type="text" name="{delivery_telephone_Name}" value="{delivery_telephone}" id="contentordersdelivery_telephone">

        </div>



<script language="JavaScript" type="text/javascript">

function same_with_customer()

{

if (document.getElementById("contentorderssame_with_customer").checked == true) {

document.getElementById("contentordersdelivery_name").value=document.getElementById("ss_customer_name").innerHTML;

document.getElementById("contentordersdelivery_telephone").value=document.getElementById("ss_customer_telephone").innerHTML;

} else {

document.getElementById("contentordersdelivery_name").value="";

document.getElementById("contentordersdelivery_telephone").value="";

}

}

</script>

2021年1月24日 星期日

CodeCharge 的 Validate Error 抓蟲經驗

 CCS欄位有自動檢查是否需要有值的功能,只要在"Required"設成"Yes",就可以了。

但是,奇怪,怎麼搞了半天,都沒有!

搞了好久。

只好去查原始碼~~~

Common.php

Classes.php

找到 clsControl 裡面的 Validate() method

使用 die("text -- $varibale"); 來查看變數內容,以抓蟲。

一個一個試,才發現問題出在 clsError->addError() 這裡!?

再查進去,原來是 

      $this->Errors->addError($CCSLocales->GetText('CCS_RequiredField', $this->Caption));

CCS_RequiredField 這一個tw-zh 沒有定義到!是空白的,出來的就是空白!
以至於加了Error ,還是沒有 Error

最後,把CCS_RequiredField語系檔定義進去,就跑出來了!

呼!!!鬆了一口氣!
終於找到原因了!

紀錄一下這個抓蟲經驗。

2021年1月20日 星期三

php 網頁跳離開網站到別的網站,再CALLBACK回來時,保持原來的登入狀態

離開時,要帶著 session_id 的參數,然後回來時,再帶回來該參數。

離開時: session_id()

回來時: 

if (!empty($_REQUEST["retsid"])) {

    session_id($_REQUEST["retsid"]);

    session_start();

}


2021年1月5日 星期二

CodeCharge 的目錄功能

 CCS 有內建的目錄產生功能。

在製作電子購物網站時,會有產品目錄,分層進去,然後才顯示產品目錄頁,然後才是產品單頁。

在製作目錄時,CCS的內建目錄可以有兩層結構。

為了簡化產品目錄結構,產品項目幾百個以內,大概分三層就可以了。

第一層是"館別",第二層是主目錄、第三層是子目錄,然後是產品。

如果將目錄製作成為 共用的 子網頁,可以被嵌入的子網頁。

那就分別製作 N個館別,然後顯示主目錄以及子目錄,共三層。

第一層、第二層,都只有顯示,不能連結。

第三層才可以連結。

由於目錄是製作成 嵌入式子網頁,會在每個網頁都出現。如果 傳入的 Get 參數有 Categories_id,那麼CCS的目錄結構就跟著跑了。所以,只要將要連結出去的 GET 參數 改成 category_id,跟原本的 categories_id 不一樣,就不會引動目錄跟著跑了!而要顯示第三層產品目錄的網頁,其 GET 參數跟著改成 category_id 這樣就完成了!

MySQL ERROR 1292 (22007): Truncated incorrect DOUBLE value

ERROR 1292 (22007): Truncated incorrect DOUBLE value

這個 Warning產生了。

經查是我這個個案是資料型態不一致造成的。

程式裡面,做了一個變數

DECLARE v_variable VARCHAR(100);

SET v_variable = IFNULL((SELECT abc FROM table WHERE id = 'aaa'),0);

IF (v_variable = 0) THEN

.........................

ELSE

...................

END IF;


v_variable 資料型態是文字,將他設為數字 0!

後面又拿文字來跟數值比較!所以產生了這個警告!

修改一下,就好了。


DECLARE v_variable VARCHAR(100);

SET v_variable = (SELECT abc FROM table WHERE id = 'aaa');

IF (v_variable IS NULL) THEN

.........................

ELSE

...................

END IF;


2021年1月4日 星期一

DA Download

 使用  DA 壓縮檔案後,

下載

然後,到另一個目錄

上傳

解壓縮!

結果:解壓縮還是回到原來的地方。

新的地方完全都沒有。

研究後才發現,原來 壓縮時有包含路徑。

所以,解壓縮後,還是存回原來的路徑。


正確的作法,應該是 下載到 Local,然後解壓縮,他會依照原先的路徑。然後,移動壓縮的目錄,用相對路徑,再重新壓縮。再上傳、解壓縮!完成!

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

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