2021年11月29日 星期一

2021年11月28日 星期日

避免按鈕被按了兩次!

<input type="submit" id="Contenttrns_cpButton_Update" class="btn btn-lg btn-primary btn-block" alt="{res:CCS_Update}" value="{res:CCS_Update}" name="{Button_Name}"
onclick="javascript:{this.disabled=true;document.getElementById('Contenttrns_cpButton_Cancel').disabled=true;document.trns_cp.submit();}">

在按鈕裡面多增加 

onclick="javascript:{
this.disabled=true;
document.getElementById('<cancel按鈕的ID>').disabled=true;
document.form_name.submit();
}"

Cancel按鈕是否也要失效?

2021年11月23日 星期二

CodeCharge 做一個一對多的AUDI

例如:做一個客戶,以及客戶的0~n個地址

資料庫:

customers (cust_id, name, .... , address_id, ...)

customers_address (address_id, cust_id, name, address.....)


Page: address.php

用 CodeCharge 做一個 address.php

1. 建立一個 grid :address (where cust_id = $_SESSION["UserID"])

address_id, name, address, action

action 裡面 有 修改、刪除 連結

修改:<!-- edit -->

<a href="address.php?address_id={address_id1}&action=edit" class="nav-link-style me-2" data-bs-toggle="tooltip" title="修改"><i class="ci-edit"></i></a> 

刪除:<!-- del  -->

<a href="address.php?address_id={address_id2}&remove=1" class="nav-link-style text-danger" data-bs-toggle="tooltip" title="移除" onclick="return confirm('{res:are_you_sure}');"><i class="ci-trash"></i></a></td>

2. 再建立一個 record : address (where address_id = URL($_GET["address_id"]))

可以新增、刪除、修改、取消

3. 刪除功能,可以考慮在這個 Record 中處理,或是直接在 grid 中的 del action 中傳到 address.php的頁面 BeforeInitialize 中判斷 action=del處理刪除。

4. 幫 record 建立一個 panel,當有action 新增或修改時,才出現 panel,否則不顯現(visible=false)

5. 可以考慮,grid + record 建立一個 update_panel ,這樣就不用 refresh 頁面

但是,要犧牲在 grid 中刪除的連結,使用 onclick="return confirm('Are You Sure?')" 的功能

不論按確定、還是取消,該連結都會被呼叫(大概是因為身在 update panel 中的關係)

這個現象,只要將 update_panel 拿掉,就好了!

我在做客戶購物網站時,最後還是把 update panel 拿掉了!讓客戶操作便利比較好!

以後在另外尋找兩全其美的辦法吧!


這個頁面1-(0~n)處理應該很多。會常用到,紀錄一下。

Code Charge 其實還蠻好用的,可惜公司已經不再提供新版!

正在考慮找人開發一個工具,或是在找另一個現成的工具!

PHP JS 縣市、鄉鎮區的地址選單

 參考:https://marsz.tw/blog/articles/411

CodeCharge 的 Update Panel 如果裡面有用 JS Confirm 對話框會無效

CodeCharge 的 Update Panel 如果裡面有用 <a href="" onclick="return confirm('{res:are_you_sure}');">

對話框,按了 取消,她還是會被執行!

紀錄一下

2021年11月21日 星期日

2021年11月19日 星期五

HTML tag

<!--...-->

  • 做註解使用,瀏覽器不會顯示,不會執行。
  • 用以紀錄解說代碼使用,便於理解,修改、維護。


<main>....</main>

  • 用以表述這是文件document的主要內容。
  • 在 main 裡面的元素在文件中必須是唯一的
  • 他不應該存在一些會在文件的其他地方可能會重複出現的元素,例如:選單、鏈結、版權宣告、LOGO、搜尋表單等。
  • 一個文件 document 只能有一個 main
  • main 不能是 以下 元素 的子元件:<article>, <aside>, <footer>,<header>,<nav>
  • 可以搭配 CSS 來定義 <main> 元件(element)


<html>
<head>
<style>
main {
  margin: 0;
  padding: 5px;
  background-color: lightgray;
}

main > h1, p, .browser {
  margin: 10px;
  padding: 5px;
}

.browser {
  background: white;
}

.browser > h2, p {
  margin: 4px;
  font-size: 90%;
}
</style>
</head>
<body>

<main>
  <h1>Most Popular Browsers</h1>
  <p>Chrome, Firefox, and Edge are the most used browsers today.</p>
  <article class="browser">
    <h2>Google Chrome</h2>
    <p>Google Chrome is a web browser developed by Google, released in 2008. Chrome is the world's most popular web browser today!</p>
  </article>
  <article class="browser">
    <h2>Mozilla Firefox</h2>
    <p>Mozilla Firefox is an open-source web browser developed by Mozilla. Firefox has been the second most popular web browser since January, 2018.</p>
  </article>
  <article class="browser">
    <h2>Microsoft Edge</h2>
    <p>Microsoft Edge is a web browser developed by Microsoft, released in 2015. Microsoft Edge replaced Internet Explorer.</p>
  </article>
</main>

</body>
</html>

CodeCharge 搭配 CloudFlare經常沒用多久就自動被登出?!

 經過研究發現是 CodeChargeStudio 的 Common.php中有這一行:

if (session_id() == "") { session_start(); }

if (CCGetUserAddr() != $_SERVER["REMOTE_ADDR"]) { CCLogoutUser(); }

也就是 CCS 會檢查 REMOTE_ADDR,如果不一樣就會被強制登出!

解決這個問題,就必須拿掉這一行檢查。




//Initialize Common Variables @0-8AF2F782
$PHPVersion = explode(".",  phpversion());
if (($PHPVersion[0] < 4) || ($PHPVersion[0] == 4  && $PHPVersion[1] < 1)) {
    echo "Sorry. This program requires PHP 4.1 and above to run. You may upgrade your php at <a href='http://www.php.net/downloads.php'>http://www.php.net/downloads.php</a>";
    exit;
}
if (session_id() == "") { session_start(); }
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
  $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
}
// if (CCGetUserAddr() != $_SERVER["REMOTE_ADDR"]) { CCLogoutUser(); }

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

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