發表文章

jquery.datepicker下拉月曆完整格式(年/月/日/時/分/秒)->Xoops模組開發-教學撰寫:徐嘉裕Neil hsu

圖片
客戶要做一個可以選擇時間的選項功能,要能輸入完整的(年/月/日/時/分/秒)格式,本來想用html5原生的 type='datetime-local' 來做,誰知道偏偏IE不支援type='datetime-local' 的input,只能在 Chrome瀏覽器中運作,這樣一定會被客戶打槍......想說之前有用了一個jquery.datepicker下拉月曆還滿好用的,也寫了一個建置jquery.datepicker下拉月曆的教學,有興趣的朋友可以參考看看。

http://neohsuxoops.blogspot.tw/2017/02/jquerydatepicker.html

但是問題來了,這個datepicker下拉月曆只有年月日阿,沒有時分秒,這樣還是沒辦法達成客戶的需求,只好又來求助估狗大神,看有沒有解決方法,後來找到有人在網路上分享一個jQuery UI 日期選擇的套件JS檔,經過測試的確是能顯示完整的 (年/月/日/時/分/秒)格式如下圖:


下面還有捲軸能拉動時/分/秒的數值,真的分常好用,如需要在Xoops模組中使用的方法如下說明!!

1、先於模組根目錄中建立一個js資料夾,然後下載datepicker下拉月曆套件(已中文化),吧檔案解壓縮後放到js資料夾中!

https://drive.google.com/file/d/1z7Bqfxd3v4_hQEFTtb8R2GNwkX8MjZyi/view?usp=sharing


2、於模組php檔案中增加以下的檔頭js及css引入設定

//檔頭輸出

global $xoopsModule;

$xoopsTpl->assign('xoops_module_header', "

<script src='http://code.jquery.com/jquery-1.10.2.js'></script>

<script src='http://code.jquery.com/ui/1.11.4/jquery-ui.js'></script>

<script src='" . XOOPS_URL . "/modules/". $…

使用empty判斷$_FILES['value']是否為空值的方法-教學撰寫:徐嘉裕Neil hsu

圖片
最近幫客戶寫了一個檔案上傳的功能,想要做個empty判斷確認是否有上傳檔案,有值才要進行後續的程式運作,像這樣的功能!!



結構

 <input type='file' class='form-control' name='class_excelname' id='class_excelname' accept='xls'> 

寫了一個判斷語法

if(!empty($_FILES['class_excelname'])){ //判斷是否有傳入值

echo '有檔案上傳;;

}
但怎麼測試即使沒有上傳檔案empty還是判斷有值,真是非常的奇怪,$_FILES['class_excelname']明明就是空的阿!!那是哪出問題了,後來用var_dump();看了一下$_FILES['class_excelname']裡面到底有什麼東東,顯示下面的內容!

array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) }

原來在$_FILES裡面還包含了name,type,tmp_name,error,size五個欄位數值,所以是二維陣列形式,難怪判斷$_FILES['class_excelname']會顯示有值,因為裡面還有個空陣列!

修改一下,改成


if(!empty($_FILES['class_excelname']['name'])){ //判斷是否有傳入值

echo '有檔案上傳;;

}
抓第二層陣列裡面的name來判斷是否有數值,這樣就沒問題了!!可以正確的判斷出是否有檔案被上傳。


教學撰寫:徐嘉裕 Neil hsu


Xoops模組開發->用PHPExcel套件匯出Mysql資料表內容存成Excel檔的方法-教學撰寫:徐嘉裕Neil hsu

圖片
所謂有近就有出,PHPExcel套件既然能讀取Excel檔寫入Mysql資料表中,那當然也能吧Mysql資料表中的內容匯出成Excel檔,這部分還是要感謝tad吳弘凱老師在出版的【實戰PHP7】一書所提到的PHPExcel套件匯出Mysql資料表使用方法,我只是吧他應用在Xoops模組開發上,寫了一個工作心得紀錄以方便日後查詢,有需要的朋友可以參考看看或是可以去買那本書有更詳盡的匯出格式排版教學。


1、於模組根目錄建立一個excel.php檔,(很重要)這支檔必須為獨立運作檔,不能由後台ui介面程式include引入,這樣會連同模組後台的佈景的檔頭表頭一起執行,導致匯出的.xls檔編碼格式全部出錯(如下圖),所以excel.php檔一定要用連結方式開啟,不能作成function然後同頁面呼叫這樣會出錯的。


2、於excel.php檔中引入以下檔案
/*-----------引入檔案區--------------*/
include_once "header.php";
require_once TADTOOLS_PATH . '/PHPExcel.php'; //引入 PHPExcel 物件庫
require_once TADTOOLS_PATH . '/PHPExcel/IOFactory.php'; //引入 PHPExcel_IOFactory 物件庫

備註說明:header.php中必須要有引入mainfile.php及tad_function.php這兩支檔才行,這樣資料庫語法及語言檔跟TADTOOLS變數才能使用,如果您的header.php中沒有引入這兩支檔,請加上以下的引入語法。
include_once "../../mainfile.php";  //一定要引入的XOOPS網站設定檔 include_once XOOPS_ROOT_PATH."/modules/tadtools/tad_function.php"; //引入TadTools的函式庫
3、於excel.php檔中貼上以下的PHPExcel套件匯出Mysql資料表為Excel檔的程式CODE
$objPHPExcel = new PHPExcel(); //實體化Excel
//------…

Xoops模組開發->用PHPExcel套件讀取Excel內容後存入資料表的方法-教學撰寫:徐嘉裕Neil hsu

圖片
最近客戶要寫一個能匯入Excel檔案並存入資料表功能的模組,幾年前有寫過但還是用.csv格式的,沒辦法用.xlsx格式讀取,php程式也很老舊了,想說砍掉重練好了,這裡立馬想到tad老師在【實戰PHP7】一書中有提到可以用PHPExcel套件匯出資料表中的內容存成.xlsx檔,但沒提到讀取的部分,不過已經有好的開始是成功的一半,至少不用走冤枉路,這裡要向TAD吳弘凱老師致上十二萬分的敬意,太感謝您了。

經過上網查詢PHPExcel套件的使用方法,寫了一用PHPExcel套件讀取Excel內容後存入資料表的方法,大家參考看看喔!!

這裡還是要感謝tad老師,因為老師開發的tadtools模組裡面就已經有PHPExcel套件了,而且還是最新版,只要引入檔案就能使用了。

1、先引入PHPExcel.php,在模組上方中貼上以下引入路徑

require_once TADTOOLS_PATH . '/PHPExcel.php'; //引入 PHPExcel 物件庫

備註說明TADTOOLS_PATH是直接指向tadtools的常數,如果有再function.php中引入
include_once XOOPS_ROOT_PATH."/modules/tadtools/tad_function.php";
就能使用TADTOOLS_PATH常數

2、加上編碼指定

header("Content-Type:text/html; charset=utf-8");

3、要讀取Excel的欄位共有三欄,分別是學生姓名,學號,座號


表頭不要儲存,然後存入資料表的student_name,student_number,student_seatnumber三個欄位中。

4、code如下說明:

function buildPHPExcel($excelname=""){

global $xoopsDB,$xoopsModule; //需要global物件

//$excelname為檔名由buildPHPExcel()外部傳入

//讀取Excel檔案位置

$file = XOOPS_ROOT_PATH.'/uploads/'. $xoopsModule->getVar("dirname&qu…

Xoops布景開發->用js做一個判斷某區塊最大寬度並均分其他區塊寬度的方法!!-教學撰寫:徐嘉裕Neil hsu

圖片
最近幫客戶開發xoops佈景遇到一個功能需求,就是假設上方有4個區塊,當其中一個區塊的寬度大於預設值時,該區塊寬度將大於其他三個區塊,其他三個區塊均分剩下的寬度,反之如果四個區塊預設大小都沒超過預設寬度,則四個區塊都套用均分寬度,這樣講大家可能會搞不清楚我要說什麼碗糕,直接截圖給大家看比較快!!。


當四個區塊中有一個區塊寬度大於預設值時(紅框),該區塊寬度會大於其他三個區塊!!




如果四個區塊預設寬度都沒大於預設值時,則套用均分寬度!



本來想說用css的min-width或是max-width因該就能做出這效果了,但事情往往不是像所想的那樣簡單,經過反覆測試最後還是要用js來做計算判斷才行,所以寫了一個js程式包括佈景結構跟css部分,有需要的朋友參考看看。


js程式部分

可以先建立一個.js檔然後在佈景上head引入,之後是程式部分(藍字可改)


$(document).ready(function(){

var $i=0;

var $blockdivlength=$("#leftbox .blockdiv").length;

var $leftbox=$("#leftbox").height();


$(".leftwidth").each(function(index) {

var index=index+1;

$leftwidth =$(".left"+index+"").width();


//高度設定

$(".left"+index+"").css("min-height", $leftbox+"px");


//寬度判斷--480為寬度的預設值,小於480寬度區塊套用min-width:256px設定

if($leftwidth<'480'){

$i=$i+1;

$(".left"+index+"").css("min-width", "256px");

}else{

//大於480寬度區塊套用width:502px設定

$(".left"+index+&q…

在CentOS7上安裝XAMPP並設定允許外部連線phpmyadmin的方法-教學撰寫:徐嘉裕Neil hsu

圖片
XAMPP有也是可以在CentOS7上安裝的,裝好之後預設是只有本機(localhost)才能進入phpmyadmin,如果使用外部IP或網址則會顯示以下畫面

要請你去修改httpd-xampp.conf這支檔,之前是有寫過在windows上安裝Xampp修改httpd-xampp.conf的教學,如果您是在windows上安裝Xampp請參考這篇教學

http://neodw.com/neil/modules/tadnews/index.php?nsn=114#A

如果是在CentOS7上安裝則修改方式略有不同,方法如下:

1、找到以下路徑檔案,用筆記本打開編輯

/opt/lampp/etc/extra/httpd-xampp.conf

2、找到以下檔案


# since XAMPP 1.4.3

<Directory "/opt/lampp/phpmyadmin">

AllowOverride AuthConfig Limit

Require local

ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var

</Directory>

替換成以下的設定


<Directory "/opt/lampp/phpmyadmin">

AllowOverride AuthConfig Limit

Order allow,deny

Allow from all

Require all granted

ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var

</Directory>


存檔後,需要重啟伺服器,請用ssh遠端連線或直接在CentOS輸入以下指令

/opt/lampp/xampp restart

如重啟伺服器成功,會出現以下畫面



之後再進入phpmyadmin就會顯示內容了。



如需設定root的密碼請參考這篇教學

http://neohsuxoops.blogspot.tw/2017/10/xamppmysqlphpmyadmin.html

教學撰寫:徐嘉裕 Neil hsu


CentOS 6X升級PHP5.6版本的方法(包含GD圖形庫)-教學撰寫:徐嘉裕Neil hsu

圖片
今天客戶回報說tadgallery相簿的上傳功能有問題,出現HTTP500錯誤,奇怪我在本地端測都是正常的,哪有什麼HTTP500錯誤,又不是七月半見鬼了,結果去客戶網站測還真的上傳圖片出現HTTP500錯誤,開PHP除錯也沒問題啊,客戶的PHP版本是5.63因該也OK的阿,檢查了一下phpinfo.php結果發現客戶居然沒裝GD圖形庫,難怪圖片上傳會出錯,後來才知道客戶是用CentOS 6X預設的PHP版本PHP5.3去升級的,但沒用到包含GD圖形庫的升級包,所以才會出現這樣的問題,好人做到底只好幫客戶升級PHP版本包含GD圖形庫的,完成升級後在測試圖片上傳功能就都正常了,沒出現HTTP500錯誤,升級CentOS 6X PHP方法如下:

1、先用SSH連線進入客入端主機

2、輸入以下指令下載PHP升級檔

wget http://rpms.famillecollet.com/enterprise/6/remi/x86_64/php56-php-mcrypt-5.6.31-1.el6.remi.x86_64.rpm

分開輸入

wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

分開輸入

rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

3、如果以上操作都成功,進到FTP中找到以下檔案,用筆記本打開編輯

搜尋[remi],enabled預設是0,改為1啟用

[remi]
name=Remi's RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/remi/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/6/remi/httpsmirror
mirrorlist=http://rpms.remirepo.net/enterprise/6/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

搜尋[remi-php56],enab…