網頁程式撰寫/丁禾:修訂版本之間的差異
出自六年制學程
(→筆記二) |
(→隱藏非使用者的密碼) |
||
(未顯示2位用戶所作出之22次版本) | |||
第 55 行: | 第 55 行: | ||
#PHP註解 | #PHP註解 | ||
#*單行註解用#(例:#這是一個變數) | #*單行註解用#(例:#這是一個變數) | ||
− | #多行註解用/**/(例:/*這是一個變數<br/>這是一個TM的變數*/) | + | #多行註解用/**/(例:<br/>/*這是一個變數<br/>這是一個TM的變數*/) |
+ | #GET:由網址列就可傳送變數到後端,能傳得比POST小 | ||
+ | #POST:要從表單傳送變數。比GET大很多,可傳圖片、幾萬字,會重編碼變很多百分比 | ||
+ | *#<form action='r.php' method='GET/POST' /> 此段後面的method就是前端資料給後端的方法,可選擇GET或POST | ||
+ | ==筆記三== | ||
+ | #空字串 | ||
+ | #null是既沒位置也沒內容,資料型別是null | ||
+ | #餘數(%)取除法餘數,例: | ||
+ | #* | ||
+ | #* | ||
+ | #* | ||
+ | #or(||):其中至少要有一個為true | ||
+ | #*真||真=真 | ||
+ | #*真||假=真 | ||
+ | #*假||真=真 | ||
+ | #*假||假=假 | ||
+ | #and(&&)兩個都要為真 | ||
+ | #*真&&真=真 | ||
+ | #*真&&假=假 | ||
+ | #*假&&真=假 | ||
+ | #*假&&真=假 | ||
+ | #not(!) | ||
+ | #變數前加$號,常數前不加$號 | ||
+ | #常數用define("常數名",常數值)指定值,例define("NM",「妮姬」),常數NM得值就是「妮姬」 | ||
+ | #變數名字有分大小寫,不可以用數字開頭,也不能用-、@、!、+等運算元 | ||
+ | #可以宣告變數,但通常不需要宣告,第一次指派值時,變數會自然產生。例:var $x; | ||
+ | #指定值給變數:$變數名=數值、字串或另一變數。例:$x=8; | ||
+ | #動態變數(變數名為變數):如$a="b";則$$a為$b。$$a以變數$a之值為名。 | ||
+ | ===陣列=== | ||
+ | #字串索引 | ||
+ | #*$x=array('引一'=>2,'引二'=>3,'引三'=>4); | ||
+ | #不設定索引序列從0開始(0,1,2,3...) | ||
+ | #*例:$x=array(1,1,2);,$x[0]=1、$x[1]=1、$x[2]=2 | ||
+ | |||
+ | ===敘述區塊=== | ||
+ | #敘述區塊:{}中間放可執行的的敘述。區塊結束處不必加';',但區塊內每個動作末尾均要加';' | ||
+ | #*if | ||
+ | #**(條件一){做一}elseif(條件二){做二}elseif(條件三){做三}…else{做其他} | ||
+ | #*switch | ||
+ | #**switch(變數) {case 值一 : 做一;break; | ||
+ | case 值二 : 做二;break; | ||
+ | case 值三 : 做三;break; | ||
+ | default :做其他;break; | ||
+ | } | ||
+ | |||
+ | ==筆記四== | ||
+ | #$result=mysql_query("select 姓名,phone from web where 姓名!=' ' "); | ||
+ | #*query 請求 | ||
+ | #*select 某幾欄 | ||
+ | #*from 某張表 | ||
+ | #*where 條件 | ||
+ | |||
+ | ==std筆記== | ||
+ | ===2016/11/18=== | ||
+ | #建 account_xxx資料表 | ||
+ | #*登入mysql,建一個新資料表。 | ||
+ | #建 std.php 加基本五行。 | ||
+ | #*如下: | ||
+ | #**<?php | ||
+ | #**include_once '../serverConstant.php'; //載入伺服器常數檔 | ||
+ | #**include_once CLASS_FILE_PATH."/database/etable.php"; //載入etable.php | ||
+ | #**$ET=new etable; //建一個新etable | ||
+ | #**$ET->sql[0]="select * from account_TH"; //選擇要用的mysql資料表 | ||
+ | #**$ET->main(); | ||
+ | #**?> | ||
+ | #加 css、editable、perpage、colAlias 諸屬性 | ||
+ | #*$ET->css='default'; //etable預設的css | ||
+ | #*$ET->editable="7"; //設定編輯權限(7是可看可邊可刪可插入) | ||
+ | #*$ET->perpage=5; //設定一頁要顯示幾筆(5就是5筆) | ||
+ | #*$ET->colAlias=array('money'=>'支出','date'=>'日期','summary'=>'摘要','account_e'=>'費用','account_a'=>'減去資產','subaccount'=>'項目','subaccountItem'=>'子項','name'=>'支付者') ; //設定要顯示在網頁中表單上各欄的代稱,例:array(lc_name=>代稱,…) | ||
+ | #加 formType 屬性 | ||
+ | #*$ET->formType=array('date'=>array('date'),'account_e'=>array('checkbox',array('費用'=>'費用')),'account_a'=>array('radio' ,array('現金'=>'現金','存款'=>'存款')),'subaccount'=>array('radio' ,array('食'=>'食','衣'=>'衣','住'=>'住','行'=>'行','育'=>'育','樂'=>'樂')),'name'=>array('radio' ,array('丁智仁'=>'丁志仁','白憶蘭'=>'白憶蘭'))); | ||
+ | #*設定各欄的選擇方式(例checkbox和date...等),以及設定其後送質 | ||
+ | #*派值範例: | ||
+ | #**$formType=array('長欄名'=>array('select',array('值'=>'提示文字','值'=>'提示文字','值'=>'提示文字',…)), | ||
+ | #**'長欄名'=>array('select2',第一選單陣列,第二選單長欄名,第二選單二維陣列,第二選單以提示代表欄值), | ||
+ | #**'長欄名'=>array('select22',array(0=>'===請選擇===')), | ||
+ | #**'長欄名'=>array('searchSelect', array(''=>'===請輸入姓名或公司名稱===')), | ||
+ | #**'長欄名'=>array('radio' ,array('值'=>'提示文字','值'=>'提示文字','值'=>'提示文字',…)), | ||
+ | #**'長欄名'=>array('radioyn',array('0之提示','1之提示')), | ||
+ | #**'長欄名'=>array('checkbox',array('勾選後送值'=>'提示')), | ||
+ | #**'長欄名'=>array('date',array('ifFormat'=>'daFormat')),改畢,因欄值'%Y-%m-%d'是小日曆認得的格式,所以預選日期為欄值日期 | ||
+ | #**'長欄名'=>array('auto',array('plain','html','wiki','tex')),改畢,$this->formType中未定義,則$this->fields[$i]["formType"]會自動將該欄定為auto型,如欄型為TEXT則form出textarea,其他出文字欄。第二元素為語法組合陣列,預設為plain(純文本)。 | ||
+ | #**'長欄名'=>array('hidden',函式,表單種類), | ||
+ | #**'長欄名'=>array('password',array('編碼方式'=>'編碼指示')),編碼方式目前有plain,其指示為1,MD5其指示有 | ||
+ | #**'長欄名'=>array('unix_time',"Y-m-d<bR>H:i:s",表單種類),待改,因欄值'%s'是小日曆不認得的格式,所以預選日期為跑到當天日期,要認得欄值格式須為「年-月-日 [10] 時:分」,用Calendar.setDateFormat('%s');無效。此事無解,參看http://192.168.3.175/et/class/calendar/jstest.htm,不是每一種格式jscalendar都可以認得出日期,如Date #0:的%s會解不出日期,Date #2:的…會解錯日期,Date #4:解不出日期。 | ||
+ | #**'長欄名'=>array('oneWaySwitch',array(0=>'按鈕字',值=>'按完字')), | ||
+ | #**'長欄名'=>array('wrap') | ||
+ | #嵌入 WWEB 中。 | ||
+ | #*require_once "theme.php"; | ||
+ | #*if(!isset($_REQUEST['exec_type'])){echo $html1;} //載入theme和$html1 | ||
+ | #*if(!isset($_REQUEST['ajax'])){echo $html2;} //加在最後,載入$html2 | ||
+ | #加入密碼驗證。 | ||
+ | ===2016/11/25=== | ||
+ | *建立 DVD.php | ||
+ | *#加 colAlias、formType 屬性 | ||
+ | *#*$ET->sql[0]="select concat(Name,'-',number),album,EN,buyDate,inHome from DVD"; //選擇要用的mysql資料表 | ||
+ | *#*$ET->colAlias=array("concat(Name,'-',number)"=>'片名數量','album'=>'套片','EN'=>'字幕','buyDate'=>'購買日期','inHome'=>'是否在家') ; | ||
+ | *#*concat(Name,'-',number)可將兩欄位合在一起,不過因為是演算式所以無法編輯。應用上可只放單項,例:concat(Name)來防止人家編你不想改的欄位。 | ||
+ | *#加 formType/oneWaySwitch 到 inHome 欄 | ||
+ | *#*$ET->formType=array('inHome'=>array('oneWaySwitch',array(0=>'待還',1=>'已還'))); | ||
+ | *#加 concat(Name,'-',number) 演算式欄位,並了解演算式欄位無法編輯 | ||
+ | *#加 演算式欄位的代名 | ||
+ | *#加 moreCol(額外欄) 屬性,並解釋自訂函式 f1,f2 | ||
+ | *#加 formValidate 驗證屬性,並解釋正規表示式 | ||
+ | *#*$ET->formValidate=array('Name'=>array('.+','請寫片名')); | ||
+ | *#*'.+' 必填 | ||
+ | *#*'^[^\\s]+@[^\\s]+\\.[^\\s]+$' email | ||
+ | *#*'^[1-9]\\d*$' 正整數 | ||
+ | *#*'^[A-Z]{1}[0-9]{9}$' 身份證號 | ||
+ | *#*'^(\\d+|[1-9]\\d*)$' 非負整數 | ||
+ | *#*'^(-?(\\d+|[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+))$' 數字 | ||
+ | *#*'^(\\d+|[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+)$' 非負數值 | ||
+ | *#*'^((19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01]))$' 合理的日期 | ||
+ | *回到 std.php | ||
+ | *#加 驗證屬性 到 summary、money 兩欄 | ||
+ | *#*$ET->formValidate=array( | ||
+ | *#*'money'=>array('^[1-9]\\d*$','支出必須是正整數'), | ||
+ | *#*'summary'=>array('.+','摘要不能空白'), | ||
+ | *#*'name'=>array('.+','支付者不能空白'), | ||
+ | *#*'subaccount'=>array('.+','項目不能空白') | ||
+ | *#*); | ||
+ | *#同學取回連動兩陣列 | ||
+ | *#加 formType/select2,select22 到 subaccount,subaccountItem 兩欄 | ||
+ | *#*$ET->formType=array( | ||
+ | *#*'date'=>array('date'), | ||
+ | *#*'account_e'=>array('checkbox',array('費用'=>'費用')), | ||
+ | *#*'account_a'=>array('radio' ,array('現金'=>'現金','存款'=>'存款')), | ||
+ | *#*'name'=>array('radio' ,array('丁智仁'=>'丁志仁','白憶蘭'=>'白憶蘭')), | ||
+ | *#*'subaccount'=>array('select2',$category,'subaccountItem',$categoryItem,1), | ||
+ | *#*'subaccountItem'=>array('select22',array(0=>'===請選擇===')) | ||
+ | *#*); | ||
+ | *#加函式f1、f2 | ||
+ | *#*$ET->main(); | ||
+ | *#*if(isset($login->checkin) && $login->checkin==0){echo $nowMsg;} | ||
+ | *#*if(!isset($_REQUEST['ajax'])){echo $html2;} | ||
+ | *#*?> | ||
+ | ===2016/12/23=== | ||
+ | ====多國語系==== | ||
+ | #撰寫「std0En.php」 | ||
+ | ##先寫基本五行: | ||
+ | ##*include_once '../serverConstant.php'; //載入伺服器常數檔 | ||
+ | ##*'''include_once CLASS_FILE_PATH."/database/etloc_en.php";''' | ||
+ | ##*include_once CLASS_FILE_PATH."/database/etable.php"; //載入etable.php | ||
+ | ##*$ET=new etable; //建一個新etable | ||
+ | ##*'''$ET=css='default'; //建一個新etable''' | ||
+ | ##*$ET->sql[0]="select * from account_jj"; //選擇要用的mysql資料表 | ||
+ | ##*$ET->main(); | ||
+ | ##*加粗的為後來增加的兩行,css檔和載入語言檔 | ||
+ | ##加$ET->editable="7"; //設定編輯權限(7是可看可邊可刪可插入) | ||
+ | #製作英文布景 themeEn.php | ||
+ | #*重做一個themeEn.php | ||
+ | #*將選項欄裡面的內容翻成英文 | ||
+ | #*改xo-banner裡面的標題字 | ||
+ | #*在index.php裡include_once '../serverConstant.php';的下面加(刪掉include_once "themeEn.php"): | ||
+ | #**if($_GET['lan']=='en'){include_once "themeEn.php";} | ||
+ | #**else{include_once "theme.php";} | ||
+ | #*把theme的xo-banner之下的xo-main-logo的href改成href='/".SITE."/'''index.php?lan=en'''' | ||
+ | ====2016.12.30==== | ||
+ | =====ET加認證===== | ||
+ | *範例程式:userTraining.php | ||
+ | #在ET開始前的前置程式內加一行:$nowMsg="您暫無權限閱覽此頁,請洽本站站長:jj@xxx.yyy。"; | ||
+ | #在ET屬性中加一行:$ET->sql[0]="select name,性別,psd,email,phone,grp,lineName from 6yearPersonTraining"; //選擇要用的mysql資料表 | ||
+ | #在$ET->main();後面加一行:if(isset($login->checkin) && $login->checkin==0){echo $nowMsg;} | ||
+ | =====隱藏非使用者的密碼===== | ||
+ | *範例程式:userTraining.php | ||
+ | #$ET->formType=array('psd'=>array('function','seePass')); | ||
+ | #在$html2之後加: | ||
+ | #*function seePass($arr){ | ||
+ | #*if($arr['row'][0]==$_SESSION['login_user']){return $arr['value'];} | ||
+ | #*else{return '無權看';} | ||
+ | #*} | ||
+ | =====只有吻合的登入者才可以編、刪資料===== | ||
+ | *$ET->banE='banE'; | ||
+ | # | ||
+ | #*function banE($row){ | ||
+ | #*if(!in_array($_SESSION['login_user'],explode(';',$row[0]))){ | ||
+ | #*$row['banEdit']=1; | ||
+ | #*$row['banErase']=1; | ||
+ | #*} | ||
+ | #*return $row; | ||
+ | #*} |
2016年12月30日 (五) 14:29的最新修訂版本
目錄
筆記
- <meta http-equiv='content-type' content='text/html;charset=UTF-8'/>
- meta:對html文檔的描述
- http-equiv:meta標籤要描述的類型
- content-type:http-equiv的類型下要描述的內容
- charset:字級編碼(例:UTF-8、BIG-5等)
- CSS:串接樣式表(在html是style)網上的.CSS檔就是封包的style內容。
- 伺服器語言三大系統:
- ASP:微軟所有,要是微軟倒了就沒了,安全性也較差(開發者是以賺錢為出發點)。
- JSP:性能比ASP好,業界(大公司)常用,半開放(允許私佔)。
- PHP:開放,免費,此課程的中心,與前端呼應,又可控制後端。
- SQL:後端資料庫,標準語法。
- ajax:是javascrip中用來開通和伺服器通道的技術(例:學程該做的事)
- form屬性
- action是做出回應的檔案位置。
- input:
- type:輸入變數的種類(例如text、password、submit之類)<input type='變數的種類'>
- submit:後送按鈕,是將輸入變數送到後台,可用value改變按鈕的顯示名稱。
- name:輸入變數的名稱
- value:在輸入變數前欄位就會出現的預設值
- maxlength
- select
- teetarea
- type:輸入變數的種類(例如text、password、submit之類)<input type='變數的種類'>
- input:
- 駝峰式表示法:變數名稱除了第一個單字外字首全部大寫(例:studentName)
- php指令分為三段
- 命令
- echo:送出<?php echo ;?>
- $connect=mysql_connect:連接MySQL資料庫。<?php $connect=mysql_connect('連接位置','帳號','密碼'); ?>
- mysql_close關閉與MySQL資料庫的連結。指令為mysql_close(連結ID),承上例:mysql_close($connect)
- "insert into web set 姓名(要插入的欄位)='".(要插入的內容)."'"在資料庫中的「姓名」欄中插入一筆。
- "update web set 姓名(要更改的欄位)='". (要更改的內容) ."' where wid=""更改資料庫中的某一筆,前面承上,後加的where wid=後打更改位置。
- "insert into web set 姓名(要更改的欄位)='". ."' where wid=(wid欄中數字)"刪除資料庫中的某一筆,前面承上,後加的where wid=後打更改位置。
- 資料
- $_REQUEST[]括號中填的是前端送來的變數。例如:$_REQUEST[studentName]就是指前端名為studentName變數的值。<?php echo $_REQUEST[u] ;?>
- 雙引號"為字串開始和字串結束。例:"123"
- .為連結字串的符號。例:"123"."345"="123345"
- 執行(即為;分號)
- 命令
筆記二
- HTML段落是給瀏覽器了解的,php段落是給伺服器了解的
- php嵌入Html的方法:
- 短型:<?…?>
- XML型:<?php…?>
- SCRIPT型:<SCRIPT language='php'?>…</SCRIPT>
- ASP型:<%…%>
- $:在php中是變數前置符號,置於變數前(例:$aa、$bb)
- php中變數名稱分大小寫(例:$aa、$AA、$Aa是不一樣的變數),保留字(php已經指定好的文法單字)不分大小寫。
- 程式撰寫基本四個型別
- 字串:要用引號框起來'sdfa'
- 整數:123(沒加引號是代表數值「一百二十三」、'123'則代表字串)
- 浮點數:12.5、123.234...等等
- 布林值:
- 只有兩個值:true或1、false或0
- php中=是派入(例:$a=123;是指將變數a的值設為123),要比大小要用==是不管型別比較(例:123==123;、123=='123'),===是型別和內容都要比較(例:123===123但不會123==='123')
- PHP註解
- 單行註解用#(例:#這是一個變數)
- 多行註解用/**/(例:
/*這是一個變數
這是一個TM的變數*/) - GET:由網址列就可傳送變數到後端,能傳得比POST小
- POST:要從表單傳送變數。比GET大很多,可傳圖片、幾萬字,會重編碼變很多百分比
- <form action='r.php' method='GET/POST' /> 此段後面的method就是前端資料給後端的方法,可選擇GET或POST
筆記三
- 空字串
- null是既沒位置也沒內容,資料型別是null
- 餘數(%)取除法餘數,例:
- or(||):其中至少要有一個為true
- 真||真=真
- 真||假=真
- 假||真=真
- 假||假=假
- and(&&)兩個都要為真
- 真&&真=真
- 真&&假=假
- 假&&真=假
- 假&&真=假
- not(!)
- 變數前加$號,常數前不加$號
- 常數用define("常數名",常數值)指定值,例define("NM",「妮姬」),常數NM得值就是「妮姬」
- 變數名字有分大小寫,不可以用數字開頭,也不能用-、@、!、+等運算元
- 可以宣告變數,但通常不需要宣告,第一次指派值時,變數會自然產生。例:var $x;
- 指定值給變數:$變數名=數值、字串或另一變數。例:$x=8;
- 動態變數(變數名為變數):如$a="b";則$$a為$b。$$a以變數$a之值為名。
陣列
- 字串索引
- $x=array('引一'=>2,'引二'=>3,'引三'=>4);
- 不設定索引序列從0開始(0,1,2,3...)
- 例:$x=array(1,1,2);,$x[0]=1、$x[1]=1、$x[2]=2
敘述區塊
- 敘述區塊:{}中間放可執行的的敘述。區塊結束處不必加';',但區塊內每個動作末尾均要加';'
- if
- (條件一){做一}elseif(條件二){做二}elseif(條件三){做三}…else{做其他}
- switch
- switch(變數) {case 值一 : 做一;break;
- if
case 值二 : 做二;break; case 值三 : 做三;break; default :做其他;break; }
筆記四
- $result=mysql_query("select 姓名,phone from web where 姓名!=' ' ");
- query 請求
- select 某幾欄
- from 某張表
- where 條件
std筆記
2016/11/18
- 建 account_xxx資料表
- 登入mysql,建一個新資料表。
- 建 std.php 加基本五行。
- 如下:
- <?php
- include_once '../serverConstant.php'; //載入伺服器常數檔
- include_once CLASS_FILE_PATH."/database/etable.php"; //載入etable.php
- $ET=new etable; //建一個新etable
- $ET->sql[0]="select * from account_TH"; //選擇要用的mysql資料表
- $ET->main();
- ?>
- 如下:
- 加 css、editable、perpage、colAlias 諸屬性
- $ET->css='default'; //etable預設的css
- $ET->editable="7"; //設定編輯權限(7是可看可邊可刪可插入)
- $ET->perpage=5; //設定一頁要顯示幾筆(5就是5筆)
- $ET->colAlias=array('money'=>'支出','date'=>'日期','summary'=>'摘要','account_e'=>'費用','account_a'=>'減去資產','subaccount'=>'項目','subaccountItem'=>'子項','name'=>'支付者') ; //設定要顯示在網頁中表單上各欄的代稱,例:array(lc_name=>代稱,…)
- 加 formType 屬性
- $ET->formType=array('date'=>array('date'),'account_e'=>array('checkbox',array('費用'=>'費用')),'account_a'=>array('radio' ,array('現金'=>'現金','存款'=>'存款')),'subaccount'=>array('radio' ,array('食'=>'食','衣'=>'衣','住'=>'住','行'=>'行','育'=>'育','樂'=>'樂')),'name'=>array('radio' ,array('丁智仁'=>'丁志仁','白憶蘭'=>'白憶蘭')));
- 設定各欄的選擇方式(例checkbox和date...等),以及設定其後送質
- 派值範例:
- $formType=array('長欄名'=>array('select',array('值'=>'提示文字','值'=>'提示文字','值'=>'提示文字',…)),
- '長欄名'=>array('select2',第一選單陣列,第二選單長欄名,第二選單二維陣列,第二選單以提示代表欄值),
- '長欄名'=>array('select22',array(0=>'===請選擇===')),
- '長欄名'=>array('searchSelect', array(=>'===請輸入姓名或公司名稱===')),
- '長欄名'=>array('radio' ,array('值'=>'提示文字','值'=>'提示文字','值'=>'提示文字',…)),
- '長欄名'=>array('radioyn',array('0之提示','1之提示')),
- '長欄名'=>array('checkbox',array('勾選後送值'=>'提示')),
- '長欄名'=>array('date',array('ifFormat'=>'daFormat')),改畢,因欄值'%Y-%m-%d'是小日曆認得的格式,所以預選日期為欄值日期
- '長欄名'=>array('auto',array('plain','html','wiki','tex')),改畢,$this->formType中未定義,則$this->fields[$i]["formType"]會自動將該欄定為auto型,如欄型為TEXT則form出textarea,其他出文字欄。第二元素為語法組合陣列,預設為plain(純文本)。
- '長欄名'=>array('hidden',函式,表單種類),
- '長欄名'=>array('password',array('編碼方式'=>'編碼指示')),編碼方式目前有plain,其指示為1,MD5其指示有
- '長欄名'=>array('unix_time',"Y-m-d
H:i:s",表單種類),待改,因欄值'%s'是小日曆不認得的格式,所以預選日期為跑到當天日期,要認得欄值格式須為「年-月-日 [10] 時:分」,用Calendar.setDateFormat('%s');無效。此事無解,參看http://192.168.3.175/et/class/calendar/jstest.htm,不是每一種格式jscalendar都可以認得出日期,如Date #0:的%s會解不出日期,Date #2:的…會解錯日期,Date #4:解不出日期。 - '長欄名'=>array('oneWaySwitch',array(0=>'按鈕字',值=>'按完字')),
- '長欄名'=>array('wrap')
- 嵌入 WWEB 中。
- require_once "theme.php";
- if(!isset($_REQUEST['exec_type'])){echo $html1;} //載入theme和$html1
- if(!isset($_REQUEST['ajax'])){echo $html2;} //加在最後,載入$html2
- 加入密碼驗證。
2016/11/25
- 建立 DVD.php
- 加 colAlias、formType 屬性
- $ET->sql[0]="select concat(Name,'-',number),album,EN,buyDate,inHome from DVD"; //選擇要用的mysql資料表
- $ET->colAlias=array("concat(Name,'-',number)"=>'片名數量','album'=>'套片','EN'=>'字幕','buyDate'=>'購買日期','inHome'=>'是否在家') ;
- concat(Name,'-',number)可將兩欄位合在一起,不過因為是演算式所以無法編輯。應用上可只放單項,例:concat(Name)來防止人家編你不想改的欄位。
- 加 formType/oneWaySwitch 到 inHome 欄
- $ET->formType=array('inHome'=>array('oneWaySwitch',array(0=>'待還',1=>'已還')));
- 加 concat(Name,'-',number) 演算式欄位,並了解演算式欄位無法編輯
- 加 演算式欄位的代名
- 加 moreCol(額外欄) 屬性,並解釋自訂函式 f1,f2
- 加 formValidate 驗證屬性,並解釋正規表示式
- $ET->formValidate=array('Name'=>array('.+','請寫片名'));
- '.+' 必填
- '^[^\\s]+@[^\\s]+\\.[^\\s]+$' email
- '^[1-9]\\d*$' 正整數
- '^[A-Z]{1}[0-9]{9}$' 身份證號
- '^(\\d+|[1-9]\\d*)$' 非負整數
- '^(-?(\\d+|[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+))$' 數字
- '^(\\d+|[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+)$' 非負數值
- '^((19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01]))$' 合理的日期
- 加 colAlias、formType 屬性
- 回到 std.php
- 加 驗證屬性 到 summary、money 兩欄
- $ET->formValidate=array(
- 'money'=>array('^[1-9]\\d*$','支出必須是正整數'),
- 'summary'=>array('.+','摘要不能空白'),
- 'name'=>array('.+','支付者不能空白'),
- 'subaccount'=>array('.+','項目不能空白')
- );
- 同學取回連動兩陣列
- 加 formType/select2,select22 到 subaccount,subaccountItem 兩欄
- $ET->formType=array(
- 'date'=>array('date'),
- 'account_e'=>array('checkbox',array('費用'=>'費用')),
- 'account_a'=>array('radio' ,array('現金'=>'現金','存款'=>'存款')),
- 'name'=>array('radio' ,array('丁智仁'=>'丁志仁','白憶蘭'=>'白憶蘭')),
- 'subaccount'=>array('select2',$category,'subaccountItem',$categoryItem,1),
- 'subaccountItem'=>array('select22',array(0=>'===請選擇==='))
- );
- 加函式f1、f2
- $ET->main();
- if(isset($login->checkin) && $login->checkin==0){echo $nowMsg;}
- if(!isset($_REQUEST['ajax'])){echo $html2;}
- ?>
- 加 驗證屬性 到 summary、money 兩欄
2016/12/23
多國語系
- 撰寫「std0En.php」
- 先寫基本五行:
- include_once '../serverConstant.php'; //載入伺服器常數檔
- include_once CLASS_FILE_PATH."/database/etloc_en.php";
- include_once CLASS_FILE_PATH."/database/etable.php"; //載入etable.php
- $ET=new etable; //建一個新etable
- $ET=css='default'; //建一個新etable
- $ET->sql[0]="select * from account_jj"; //選擇要用的mysql資料表
- $ET->main();
- 加粗的為後來增加的兩行,css檔和載入語言檔
- 加$ET->editable="7"; //設定編輯權限(7是可看可邊可刪可插入)
- 先寫基本五行:
- 製作英文布景 themeEn.php
- 重做一個themeEn.php
- 將選項欄裡面的內容翻成英文
- 改xo-banner裡面的標題字
- 在index.php裡include_once '../serverConstant.php';的下面加(刪掉include_once "themeEn.php"):
- if($_GET['lan']=='en'){include_once "themeEn.php";}
- else{include_once "theme.php";}
- 把theme的xo-banner之下的xo-main-logo的href改成href='/".SITE."/index.php?lan=en'
2016.12.30
ET加認證
- 範例程式:userTraining.php
- 在ET開始前的前置程式內加一行:$nowMsg="您暫無權限閱覽此頁,請洽本站站長:jj@xxx.yyy。";
- 在ET屬性中加一行:$ET->sql[0]="select name,性別,psd,email,phone,grp,lineName from 6yearPersonTraining"; //選擇要用的mysql資料表
- 在$ET->main();後面加一行:if(isset($login->checkin) && $login->checkin==0){echo $nowMsg;}
隱藏非使用者的密碼
- 範例程式:userTraining.php
- $ET->formType=array('psd'=>array('function','seePass'));
- 在$html2之後加:
- function seePass($arr){
- if($arr['row'][0]==$_SESSION['login_user']){return $arr['value'];}
- else{return '無權看';}
- }
只有吻合的登入者才可以編、刪資料
- $ET->banE='banE';
-
- function banE($row){
- if(!in_array($_SESSION['login_user'],explode(';',$row[0]))){
- $row['banEdit']=1;
- $row['banErase']=1;
- }
- return $row;
- }