於 mysql 裡使用 custom sort

通常在 mysql 下作排序的時候,會用「 ORDER BY 欄位」來排序內容,但這樣的方法的排序的動作只能依其大小來排。假設目前有下面的 table 內容想要顯示,可是球隊內容都會依照其防守位置作排序依據,這時就不能用單純的大小來比較了。 [code lang=“sql”] SELECT * FROM batters ORDER BY 守位; [/code] 結果如下: 守位 名字 1B 潘忠韋 2B 蔣智聰 3B 石志偉 C 陳峰民 CF 黃龍義 DH 陳金鋒 LF 曾豪駒 RF 霸漢 SS 林智勝 可以透過 FIELD 來幫忙,他可以依照傳入的值找出順序,例如: field(欄位,‘spring’,‘summer’,‘fall’,‘winter’),如果傳入值是 winter 的話,他會回傳數字,可以利用這個特性作為排序依據。依上面的例子來說: [code lang=“sql”] SELECT * FROM batters ORDER BY FIELD(守位,‘C’,‘1B’,‘2B’,‘3B’,‘SS’,‘LF’,‘CF’,‘RF’,‘DH’); [/code] 此時結果就會變成: 守位 名字 C 陳峰民 1B 潘忠韋 2B 蔣智聰 3B 石志偉 SS 林智勝 LF 曾豪駒 CF 黃龍義 RF 霸漢 DH 陳金鋒 [Read More]

tr hover 在 IE 上的 hack

昨天想要在作在 table 上移動滑鼠時,滑鼠指到的該行會改變顏色作為顯示,假設目前有下列 html 結構的話: [code lang=“html”]

test

test

test

[/code]

在 firefox 上可以直接用下列方式達成: [code lang=“css”] tr.changecolor:hover { background-color:#CCFF99; } [/code]

但在 IE 下不能這樣搞,對 IE 而言 hover 只能使用在 a 這個 tag 使用,所以要配上 javascript 作 hack 的動作。首先載入 jquery-min.js 後,再使用下列程式即可達成同樣的效果。 [code lang=“javascript”] $(document).ready(function() { $(".changecolor tr").hover(function() { $(this).css(“background-color”,"#DDDDDD"); },function(){ $(this).css(‘background-color’,’#FFFFFF’); }); }); [/code]

參考文件:

[php]QuiXplorer 中文化(Utf-8)+Utf-8 patch

QuiXplorer 是一個 Web 介面的檔案管理軟體,是用 php 寫的。目前在網路上有流傳許多的中文化,不過都是 big5 編碼的。越來越多的 filesystem 語言編碼格式都選擇為 utf-8 ,所以將程式略為修改,讓他可以顯示 utf-8 編碼的檔案名稱,另外修改一些從簡體轉成繁體時使用語言習慣不同的部份。

你可以從下列三個位置下載原始碼、語系檔、和 Patch:

下載後將語系檔放入「 _lang 」目錄之中,然後再套用我所修改完成 Patch ,這樣就可以讓檔名為 utf-8 的檔案顯示了。並且在編輯、複製、和移動 Utf-8 編碼的檔案也不會發生問題,另外網頁編碼也會改成 utf-8 。

因為已經過了一段時間了,我也忘記上面的語系檔從哪得到的,如果有任何的問題,請在此留言。

[js]Jquery + jFeed = 簡單的新聞發布系統

其實我發現用 Jquery + JFeed 完成一個簡易型的新聞發布系統是很容易的。在後台的管理部份,利用 Wordpress 或是相關的 Blog 軟體來撰寫即可。前端就利用 jFeed 來抓取該 Wordpress 的 Rss 的部份,並且顯示出來。

另外其實可以稍加改變後,就可以改成留言板了。讓 jFeed 抓取 wordpress 某篇文章的 Comment 的 Rss 。如果使用者需要留言的話,再導到該篇文章即可。這樣也可以利用 WordPress 阻檔廣告留言系統,來輕易的阻檔廣告。

Jquery :下載 Jquery 。 jFeed : 下載 jFeed

此處可以看到 jFeed example,你可以直接觀看原始碼就可以知道如何撰寫的 。 不過因為在抓取外部的 Feed 時,對 browser 而言是不被允許的(當然你可以修改 Browser 的設定),所以此時必需要使用 Proxy 的功能來讓 Browser 誤認為是抓取和 java script 同樣的站台的位置 。下列為 php 的原始碼: [code lang=“php”] [/code]

其實 Jquery 還有很多應用,如果有機會的話,再介紹給大家知道。

CSS 的 min-height

之前需要使用各種奇淫技巧的 min-height 的 hack ,在今天看到「Min-Height Fast Hack」這篇文章,有快速解決的方法(不過好像是 2005 年的文章了)。

在 IE 不支援 min-height 的情況下,同樣的方法在 firefox 下使用很輕鬆,為了讓萬惡的 IE 支援該方法,可以使用如下的技 巧:

selector { min-height:500px; height:auto !important; height:500px; }

快速方便瞬間解決!

dump variables 的 java script

我從「Tsung’s Blog」裡看到一個「javascript Variable Dump(var_dump)」的 java script ,他可以讓你印出 javascript 各種變數的內容。寫 php 的時候,很習慣的會使用 print_r 或是 var_dump 來作印出變數內容,來方便 debug 的功能。可是 java script 只會幫你印出 Object or Array 這種情況,如果 Debug 將會非常的麻煩,不過有了這個工具後,可以讓你容易的看到完整內容。

使用上非常的方便,直接用 dump(variables) 他就會彈出一個視窗來印出該變數的內容。

原始的網站在:JavaScript Variable Dump Method

Java Script 分析 iso 8601 日期模式至 Date 物件

我在「Parsing W3C’s ISO 8601 Date/Times in JavaScript」看到如下的程式碼,這段主要的功能把「2004-12-21 23:11:00」這個字串,拆解回去 java script 的 Date 物件。通常在 Mysql 裡存的資料顯示出來都是這種格式,如果 java script 收到這種格式的時候,除了自已用 substring 分析之外,下面是使用 regexp 作分析的方法。 [code lang=“javascript”] Date.prototype.setISO8601 = function (string) { var regexp = “([0-9]{4})(-([0-9]{2})(-([0-9]{2})” + “( ([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?” + “( |(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?”; var d = string.match(new RegExp(regexp)); var offset = 0; var date = new Date(d[1], 0, 1); if (d[3]) { date.setMonth(d[3] - 1); } if (d[5]) { date.setDate(d[5]); } if (d[7]) { date. [Read More]

php 產生縮圖的方法

php 比較常用的有二種縮圖的方式,一種是用 gd 函式,一種是利用 imagemagick 。剛試用了二種方法,以前為了所垢病的 GD 畫質不好的情況已經有顯著的改善了,跟 imagemagick 所產生出來的縮圖已經極為接近了,其主要差異為壓縮後畫質和檔案大小方面的問題。 第一個 function 是利用 GD 來作縮圖的動作。 [code lang=“php”] $src_h){ $thumb_w = $size; $thumb_h = intval($src_h / $src_w * $size); }else{ $thumb_h = $size; $thumb_w = intval($src_w / $src_h * $size); } $thumb = imagecreatetruecolor($thumb_w, $thumb_h); // 舊方法,不過產出來的畫質效果極差 //imagecopyresized($thumb, $src, 0, 0, 0, 0, $thumb_w, $thumb_h, $src_w, $src_h); imagecopyresampled($thumb, $src, 0, 0, 0, 0, $thumb_w, $thumb_h, $src_w, $src_h); $file= array_pop(explode("/",$filename)); imagejpeg($thumb, “/tmp/thumb/i-$size-”.$file); } ? [Read More]

Dreamhost 的 coppermine URI 上傳修正

Introducing

coppermine 是一個很方便的網路相簿軟體,他除了可以利用網頁、工具、或是 ftp 上傳之外。他還可以使用 URI (網路連結)來作上傳的動作。不過 DreamHost 裡預設並沒有開啟 allow_url_fopen 的功能,造成要使用 URI 上傳時,他無法運作。

Features

這個 patch 的主要修正在把原先的 fopen 改為 curl ,並且自動判定,如果 allow_url_fopen 有開啟的話,將會使用 fopen 如果沒開啟,即使用 curl 作為下載連接的方式。

Download

version:0.1 Download:upload.php.txt

Installation

使用 patch -p1 <upload.php.txt 這個指令即可。

如有任何問題,請留言。

Adodb 配合 PEAR pager 分頁工具

PEAR pager It takes an array of data as input and pages it according to various parameters. It also builds links within a specified range, and allows complete customization of the output (it even works with front controllers and mod_rewrite). Two operating modes available: “Jumping” and “Sliding” window style. 參考資料: 快速分頁 - Pager 如下程式所示,他就會列出每 10 個 item 作一頁的效果了,實例可參考 pager.php。除了使用他內定的格式之外,也可以使用自定格式,可以參考下面所列的資料來判定要不要顯示翻頁的選項。 getCurrentPageID() : 目前頁面的 ID getNextPageID() : 下一個頁面的 ID getPreviousPageID() : 上一個頁面的 ID numItems() : 總共有多少個物件 numPages() : 總共有多少頁 isFirstPage() : 是不是在第一頁 isLastPage() : 是不是在最後一頁 $pager->range : 頁面範圍,如 array(“1”=>0,“2”=>1,“3”=>0); 1,2,3 就代表頁面,其中 “2”=>1 代表是目前顯示的頁面。 範例如下: [Read More]