復活節假期節目 學習Laravel 5

復活節長假,銀行戶口沒有太多銀兩外遊,只好留守香港捱麵包過日子,5日長假有什麼做呢?打開網頁看到2015年最受歡迎的php framework 是Laravel,十分好奇到底為何那麼受歡迎,於是就上網看看資料。

筆者看了『歲寒』博客的入門文章,看完後自己用macbook +MAMP 安裝composer,試了一下,終於體驗到為何它會那麼出名。

Laravel 是以精簡容易開發出名,簡單的 php artisan 就可以自動生成需要controller 和model,內建了主題,migrate可以很快生成database 需要的測試數據,還有eloquent簡單打造關聯,不用自己慢慢輸入,真的1個小時內完成了一個簡單的blog 系統,相當好用的framework。對於筆者這樣一個人的自學開發者,看來是時候放棄以前自己慢慢打code 建立文件的日子了。

因為妻子壓力大,每天已經不能長時間對著顯示屏,只能提高自己的效率才能更快完成工作,laravel 值得推薦。不過,假如你是php 初學者,建議你還是先跟著php 入門網站教學學習一下基本,還有數據庫關聯等知識,然後才開始使用。

相關網站:

https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx

http://laravel.tw/

http://laravel-china.org/docs/5.0/eloquent

 

php csv輸出讀取繁體亂碼

上次經歷了一次php csv 輸出亂碼,以為已經能解決了一切問題,但開心得太早了。今天用phpexcel 類讀取一個xlsx 文件,裏面文字比較特別,夾雜著繁體和簡體字,所以一定要用unicode。一讀取,發現亂碼,怎麼回事?之前未發生此情況。

開始排除問題,之前因為已經寫好,所以這次很有信心沒測試直接mysql_query 到數據庫中!慘!很多亂碼,一萬多條要刪除,所以整個數據庫直接刪除(早已經備份了)。

測試一,BOM問題,之前發生亂碼是文件有BOM問題,全部改一次,發現情況一致。

測試二,下載phpexcel 測試文件,直接讀取文件,發現也是亂碼,怎麼辦?

測試三,開始懷疑讀取的文件有問題,一個xlsx 會有甚麼問題呢?於是開啟文件,把它另存成xls,然後再讀取一次,亂碼消失了=.=

發現到是格式問題,然後上網谷哥一下,原來還有不少人討論,元兇和office 2007 有很大關係,今天就不多寫,把這些討論的資料搬上來給大家去參考,解決方法就是:

在寫入csv是,要加入BOM!

參考資料:

http://blog.darkthread.net/post-2009-09-06-csv-encoding-again.aspx

Excel讀取UTF-8編碼的CSV檔,中文變亂碼的簡單解法

http://blog.roodo.com/rocksaying/archives/1096340.html

 

phpexcel 亂碼 輸出解決方法

phpexcel 很常用,因為可以用來讀取excel,又可以輸出,之前在用時就遇到一個問題,輸出下載時出現亂碼,之前由於趕時間,就沒有用瀏覽器直接下載,而是提供下載鏈接,因為有些不同;

$objWriter->save(‘php://output’);

上面是直接跳出下載提示,不會存在伺服器

$objWriter->save($file);

這個就會存一份在伺服器中,$file就是你定義的名字,路徑等。

那麼直接下載亂碼如何解決,筆者看了很多資料,google了不少,終於解決了,在此總結。

因為程序用了smarty,因此需要考慮這問題。

繼續閱讀 phpexcel 亂碼 輸出解決方法

wordpress wp ecommerce last product

wordpress 設計theme 時需要在首頁取得wp ecommerce 的最新產品資料,可以用以下方法,輸出圖片,和title,網上找沒什麼資料,只好自己在widget 改一下那來用

[php]
global $wpdb;
$args = wp_parse_args( (array)$args, array( ‘number’ => 5 ) );

$number = 3;
$image = true;

$width = 150;

$height = 150;

$latest_products = get_posts( array(
‘post_type’ => ‘wpsc-product’,
‘numberposts’ => $number,
‘orderby’ => ‘post_date’,
‘post_parent’ => 0,
‘post_status’ => ‘publish’,
‘order’ => ‘DESC’
) );
$output = ”;

if ( count( $latest_products ) > 0 ) {
$output .= ‘