[CodeIgniter] 多國語言網站製作,重複 load 相同 language?

目前正在研究網站的多國語系寫法,研究了 CodeIgniter 的 Language class 用法,可以看線上中文文件:Language 類別,目前遇到一個疑問,在單一 PHP 檔案讀取,不可以同時讀取相同的 Language file 檔案,這樣是完全沒有作用的,以底下的例子來說,我在 application/language 目錄底下放了三個語系資料夾,English、zh-TW、zh-CN 這三個資料夾,裡面分別放路 vbs_lang.php 檔案,為了要區別各國的語系檔案,要分別開資料夾放入,在 CI 文件裡面都寫的很清楚,架構如下

  • application/language/English
  • application/language/zh-TW
  • application/language/zh-CN
[Read More]

[PHP] CodeIgniter 繁體中文翻譯計畫

CideIgniter 官方中文網站 本人目前正在推廣 CodeIgniter 官方中文網站,這套 MVC 在我使用起來還蠻適合新手學習的,也非常容易上手的一套 MVC Web development 架構 ,希望推廣給台灣繁體 php web 開發人員,即使您之前沒有用過 MVC 架構,只要懂的一點 PHP 語法,基本 function 會使用,基本上就可以直接來使用 CodeIgniter,在這裡徵求對 php 或者 CodeIgniter 翻譯繁體中文有興趣的網友或者是使用者們,可以加入繁體中文的翻譯計畫,我在 github 開了CodeIgniter translation 的 repository,網址是: http://github.com/appleboy/PHP-CodeIgniter-Framework-Taiwan/tree/master

[Read More]

[PHP] Class: RSS Generator 產生器

最近在寫新聞系統,需要 RSS 線上訂閱的功能,所以在 PHP Classes 找到了 RSS Generator 產生器,這產生器使用起來也相當方便,在測試的時候剛好遇到一個問題,就是要對內容做 escape 的動作,避免 RSS 爛掉,看到 gslin 大的發表一篇 WordPress 的 exporter 裡面寫到 WordPress 的產生 xml 格式沒有經過 escape 造成程式亂掉『Exporter does not escape url』,當然解決方法也很容易,那就是用 htmlspecialchars,避免 url 裡面帶有 & 符號。 解決方法很容易,如下就可以了 link = htmlentities($url, ENT_QUOTES); ? [Read More]
php 

[PHP] Web Framework : CodeIgniter MySQL Database 使用教學

繼上一篇 [PHP] 好用 Web Framework : CodeIgniter 安裝教學 之後,這次來紀錄一下 Database Class 的用法,我想官方網站都已經寫的很詳細了,就大概快速講一下我的一些用法跟心得,其實最主要講的是內建的 Active Record Class,它可以快速撰寫 SQL 語法,不必打 where 或者是 From 這些字眼,insert update select 都可以利用 Active Record Class 很簡單的撰寫出來喔,它也幫忙簡單的檢查 escape SQL Injection,舉的簡單例子大概就知道了: 假設底下這個簡單的 join 一個表格的 select 語法

$query = $this->db->query("SELECT a.news_id, a.news_name, a.add_time FROM project_news a
 left join project_news_categories b on a.categories_id = b.categories_id
where news_id = '".$id."' order by news_top DESC, a.add_time DESC
");
利用

Active Record Class 可以改寫成:

$this->db->select('a.news_id, a.news_name, a.add_time');
$this->db->from('project_news a');
$this->db->join('project_news_categories b', 'a.categories_id = b.categories_id', 'left'); 
$this->db->order_by("news_top DESC, a.add_time DESC");
$this->db->where('news_id', $id); 
[Read More]

[PHP] 好用 Web Framework : CodeIgniter 安裝教學

最近都在 survey 一堆 PHP Web Framework,自己想學一套可以馬上上手的,其實因為目前在 PHP 的開發上面講求速度,以及程式的可維護性,雖然我自己有一套自己的開發方法,包含包好的 SQL Class 以及上傳模組,不過還是覺得熟悉一套 MVC 架構的寫法,將來維護或者是團隊合作方面會比較好分工,在小專案上面還可以自己來,但是大型專案就必須靠 MVC Framework 了,畢竟一個人寫程式,永遠比不上團隊合作,紀錄一下最近找到的一些網路比較多人用的 FrameWork:

[Read More]

MySQL count(“欄位”) vs mysql_num_rows 速度?

在 FreeBSD ports 裡面還沒看到 chinese/phpbb3 的 ports,目前只有 chinsan 維護的 chinese/phpbb-tw ports,之前版本是 2.0.22 版本,後來我 commit 到 2.0.23 版本,不過 PHPBB 官網已經不再維護或者是開發 2.0.X 版本了,現在以 PHPBB3 為版本開發,也針對了 PHP6 跟 PHP 5 的相容性做了很大的改變,所以基本上如果在 2.0.X 版本加了很多外掛,那就沒辦法升級到 phpBB3 版本了,畢竟 code 實在改變太多了,找個時間把 chinese/phpbb3-tw commit 進去,不然也可以到 www/phpbb3 做安裝。 為什麼會提到 phpBB 呢,今天在 trace phpBB3 的 code,發現原本在 phpBB2 裡面有支援 mysql_num_rows function,用來讓程式可以取出 sql 的個數,不過在 phpBB3 竟然就把這個 function 拿掉了。 phpBB2 mysql4.php 程式:

function sql_numrows($query_id = 0)
{
	if( !$query_id )
	{
		$query_id = $this->query_result;
	}

	return ( $query_id ) ? mysql_num_rows($query_id) : false;
}
[Read More]

[PHP] Zend 使用 Google Calendar API – 新增、刪除事件 – END

這篇算是 Google Calendar API 的結尾文章了,只剩下新增、刪除兩個功能尚未說明,那這兩個功能野蠻簡單的,底下就來介紹如何新增單一事件功能,看看是否要增另外新檔案放 form 的表單,我是把表單放入 index.php 再把資料傳送到 news.php 此檔案,先介紹 form 表單:

[Read More]

[PHP] Zend 使用 Google Calendar API – 編輯事件

上一篇介紹了瀏覽 Google Calendar API 範圍內所有的事件,有沒有發現在 index.php 就有瀏覽單一事件的連結,我們透過 API 可以取得單一事件的 evenID,取得的方式就是透過 basename 函式:

basename($event->id->text)
我們可以利用 $_GET 方式讀取到 evenID 值,傳送到 event.php 來接收
$eventId = ( isset($_POST['id']) ) ? $_POST['id'] : $_GET['id'];
1. 新增 event.php 檔案,寫入開頭:
where as $where) {
  $whereValue = $where->valueString;//地點
}
?>
[Read More]

[PHP] Zend 使用 Google Calendar API – 瀏覽事件

昨天寫了一篇 [PHP] Zend 使用 Google Calendar API - 環境建立架設,相信應該是非常簡單才對,那今天來介紹一下實做 Google Calendar API 的瀏覽、新增、刪除、修改事件的功能,在官方網站都有詳細的 API 功能介紹,我只不過把功能整合完整一點,詳細請看 Google Calendar API With PHP。 1. 瀏覽功能:建立 index.php

/*
* include 昨天新增的config.inc.php 檔案
*/
include('config.inc.php');
/*
* 提供Calendar 的服務名稱
*/
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
/*
* 登入帳號密碼
*/
$client = Zend_Gdata_ClientLogin::getHttpClient($googleAccount, $googlePassword, $service);
[Read More]