跳到主要內容

發表文章

目前顯示的是 11月, 2017的文章

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

使用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來判斷是否有數值,這樣就沒問題了!!可以正確的判斷出是否有檔案被上傳。 如果是多檔上傳name是陣列格式,則判斷空陣

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檔的程式CO

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.'/uploa

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