2009年7月31日

php 如何十進位轉二進位


今天在Yahoo知識+看到一則討論,是關於php如何十進位轉二進位的問題(http://tw.knowledge.yahoo.com/question/question?qid=1609073000065),在該討論中原提問者希望最終結果可以以1~255的十進位轉換成8位數的二進位,在不足8位數的情況下能夠自動補齊,如 "12" → "00001100"。

在原討論中原提問者希望能不用php內建函數來解決這個問題(真是奇怪的想法,有現成的含式不用,偏要重寫),所以得到各方高手以下的幾種寫法解答:


解法1:
while ($c >= 1){
$c = $a/$b;
$d = $a%$b;
$a = $c;
array_push ($e,$d); //將數據丟入陣列
}
$f = array_reverse($e); //反轉陣列
$g = implode($f); //陣列組合成數字
if ($_POST["a"]==1) {
printf("%08d", $_POST["a"]);
}else{
printf("%08d", $g);
}


解法2:
不用內置函數也不難,不用設array,每擷一字直接併入變數 $out 就可以,下面的程式可以將數字轉為2,3,4,5,6,7,8,9制,只須更改$b定義。

$a = 12;
$b = 2;
while ( $a>=$b ){
$out = $a%$b . $out;
$a = floor($a/$b);
}
$out = $a.$out;
$out = str_repeat("0",8-strlen($out)) .$out;print $out;

當 $a 為1,輸出 00000001 。


解法3:
while ($a >= 1){
$c = $a/$b;
$d = $a%$b;
$a = $c;
array_push ($e,$d);
}
$f = array_reverse($e);
$g = implode($f);
$z = sprintf('%08s' , $g);
echo $z;
?>


解法4:
php 有內置轉制函數,不用自己運算
$a = 12;
$a = base_convert($a, 10, 2);
printf("%08d", $a);


解法5:
function decToBinary($num, $str = "00000000", $pos = 0) {
if ($pos == 8) {
return $str;
} else {
$str{(7-$pos++)} = $num % 2;
return decToBinary(intval($num / 2), $str, $pos);
}
}
echo (isset($_POST["a"]))?decToBinary(intval($_POST["a"])):"";


以上是各方高手提供的解法,不過基本上YOGO比較傾向使用內建函式來處理,因為php是屬直譯程式,自己寫的處理函式會比php內建函式慢,且php已有內建程式可處理,就無需再重新造輪一次, 以下為YOGO的解法,給各位朋友參考看看:


十進制轉二進制(http://tw.php.net/manual/en/function.decbin.php)

以指定字元加字串填滿到指定長度(http://tw.php.net/manual/en/function.str-pad.php)


範例:
echo str_pad(decbin(12) , 8,"0",STR_PAD_LEFT)."\n";
echo str_pad(decbin(26) , 8,"0",STR_PAD_LEFT);


延伸閱讀:
PHP函數參考大全

如果覺得這篇文章對您有所幫助,在觀看完文章之餘,希望能點選下方方廣告,當作是對YOGO的支持,讓YOGO更有寫作的動力。



2009年7月28日

NAS的應用與簡介(二)家庭與個人的應用


關於NAS的原理請參考這篇文章NAS的應用與簡介(一);這次這篇文章要討論的是「NAS家庭與個人應用」的部份。

現在很多家庭都有二台以上的電腦,所以每台電腦內都有不少的檔案可以分享,一般來說都是透過「網路芳鄰」來分享檔案,但透過這種方式來分享檔案必須雙方電腦都在開機的狀態下才能相互分享,再加上P2P軟體的盛行,想必很多人都是整天掛網養寵物吧,但在這提倡「節能減碳」時代,一直開機掛網確實有點不太環保,關於以上的需求都能透過NAS來獲得很好的解決方案。

NAS依功能需求分別有1-BAY 、2-BAY 、4-BAY 等規格,基本上就是可安裝的硬碟數量與可否串成磁碟陣列的功能差別,1-BAY 就是可裝1顆硬碟,2-BAY 就是可裝2顆硬碟,以此類推,原則上大部份2-BAY 以上的機種都可串成磁碟陣列,關於這部份在下一篇「NAS的應用與簡介(三)公司與企業的應用」中會有所討論,基本上家庭與個人應用1-BAY 的機種就很足夠了。

以下就以「Synology Disk Station DS110j網路儲存伺服器」來作說明 

Synology Disk Station DS110j網路儲存伺服器

傳輸快速,效率提升 – Synology DS110j最大容量可達2TB,能夠滿足個人及家庭的資料儲存與影音分享需求。傳輸效能方面,Synology DS110j配備800MHz CPU,Windows上傳/下載速度每秒可達38/75MB以上*,提供絕佳CP值。

安裝方便,易學易用 – 免接排線(cable-less)設計的Synology DS110j安裝超方便,開機後僅需幾個設定步驟就可完成安裝、開始使用。系統管理介面採用AJAX技術設計,操作直覺好管理,反應快速省時間。
功能豐富,實用滿點 – 搭載系統韌體Synology Disk Station Manager 2.2(後簡稱DSM 2.2),Synology DS110j提供Synology Photo Station 3網路相簿/網誌、BT/eMule/FTP免開PC下載、DLNA多媒體伺服器、Synology Audio Station線上音樂播放、iTunes伺服器、Synology File Station 2網頁式檔案管理、PHP+MySQL網頁伺服器等多項功能。DSM 2.2還支援iPod/iPod touch等手持裝置的瀏覽,透過網際網路,您可以到Apple APP Store線上商店免費下載DS audio以及DS photo軟體,就可以隨時透過3G或無線網路連線到Synology DS110j的音樂庫來播放歌曲,或是隨時將拍攝的照片上傳到Photo Station 3喔。

完整備份,加密安全 – 我們了解您的資料十分寶貴,所以您可以放心將Windows、Mac及Linux個人電腦上的資料備份到Synology DS110j上。Synology免費贈送的備份軟體Synology Data Replicator 3(後簡稱DR3)可以幫您進行Windows PC備份,並提供3種備份方式:立即備份、同步備份、排程備份;Mac電腦的使用者則可以使用內建的Apple Time Machine來進行Mac資料的備份。兩者都是會自動將資料備份到Synology DS110j上,使用起來輕鬆無煩惱。另外,針對Synology DS110j上的資料,您可以使用本地備份將資料備份到外接USB硬碟上,或是使用網路備份將Synology DS110j的資料備份到另一台Synology多功能網路伺服器或rsync相容伺服器。Synology DS110j的網路備份功能可做加密保護,您不必擔心資料會在備份的過程中遭到攔截。

.Windows、Mac、Linux 跨平台運作,並支援玩家級Telnet/SSH/NFS
Synology DS110j 是專為跨平台操作所設計的。Windows、Mac,和Linux使用者可輕鬆順暢地在Synology DS110j 上儲存並分享資料。Windows 使用者可以使用Samba(網路上的芳鄰)和FTP 存取伺服器資料,而Mac 使用者則能使用Samba、FTP,和AFP。Unicode 萬國碼支援讓檔案不管語言怎麼變都不受影響。另外,玩家級使用者也可以透過Linux NFS存取DS110j,或是輕鬆地從Synology DSM 2.2 管理介面設定Telnet/SSH 終端機服務。


.架設個人郵件伺服器
Synology 2009 年推出Mail Station 郵件伺服器套件,讓使用者可在短時間內完成安裝及設定,就可開始使用。Mail Station 支援SMTP、POP3、IMAP等協定,且提供像Outlook 的網頁介面線上信箱,便利您在任何有網際網路的地方收發郵件。


.架設個人網站
Synology Web Station 內建Apache 網頁伺服器,讓您不需要專業技術,只要簡單幾個步驟就能架設和發佈個人網站。懂PHP及MySQL的使用者還可以自行撰寫動態網站喔。


.網路攝影機監控中心
Synology Surveillance Station 2 讓您能管理至多5 支1 IP 攝影機,並能即時監控及錄影。您可依照自身需求進行連續錄影、動作偵測錄影,或警報錄影。Surveillance Station 2 支援攝影機聲音串流,也支援百萬畫素網路攝影機,讓您看得清楚、聽得仔細。


.24/7 持續下載免PC
只要將BT/eMule/HTTP/FTP/NZB 連結拖拉到Synology Download Redirector 介面,就能自動開始下載。另外,網頁介面的Download Station 2也能讓您在遠端透過網際網路管理、新增下載任務。


.Sony PS 3 及 Microsoft Xbox360支援
DS110j最新支援Sony PS3以及Microsoft Xbox360多媒體影音串流,讓您家庭娛樂運用到極致。


.使用iTunes
享音樂直接將儲存在Synology 網路儲存伺服器上的音樂分享給區域網路上的iTunes 使用者,不需要再複製或燒錄光碟中的音樂檔案。


.使用UPnP 裝置串流多媒體檔案
多媒體服務支援讓您使用UPnP 多媒體轉接器(DMA)串流相片、影片和音樂到電視或高品質音響。


.全方位備份
DS110j 提供全方位的備份功能,要幫您趕跑繁複備份的噩夢。您可以使用隨機附贈的免費軟體Synology Data Replicator 3,自動備份PC檔案;也可以外接USB磁碟,備份伺服器內部硬碟的檔案。若您擁有另一台Synology網路伺服器或rsync相容伺服器,您還可以備份透過網路備份伺服器檔案。超簡單自動的備份方案讓您以後再也沒機會抱怨備份太困難。


.2.5吋硬碟支援
您可以選購Synology 2.5" Disk Holder (Type A) 硬碟架,以安裝2.5吋的硬碟。在您安裝2.5吋硬碟後,需到管理介面設定風扇轉速依照2.5吋硬碟模式。系統在大部分的運作情況下,皆不會啟動風扇,故能讓您達到更省電更安靜的目的。

每一家NAS廠商所推出的功能並不一定都會一樣,但基本上重點功能都是大同小異的,而我個人認為家庭與個人用戶最實用的功能有:


.Windows、Mac、Linux 跨平台運作,並支援玩家級Telnet/SSH/NFS
這應該算是NAS最基本但也是最核心的功能吧,只要把資料放一份在NAS上,其它各台電腦都只要存取NAS上的資料即可,不用每台電腦都COPY一份,也不用為了互相存取檔案而每一台電腦都要開機。




.24/7 持續下載免PC
因為NAS的耗電量較少約只需電腦的1/4電量,且運轉時噪音又小,是24小時掛網養寵物最佳環保選擇。




.Sony PS 3 及 Microsoft Xbox360支援與使用UPnP 裝置串流多媒體檔案
這個功能不是每一家NAS廠商產品都有,不過若是能透過Sony PS 3 及 Microsoft Xbox360播放存放在NAS上的影音檔,直接在電視上播出,就不用忍受電腦的小小螢幕。


.使用iTunes
只要將音訊檔放在NAS上,各台電腦只要讀取NAS上的音訊檔即可播放,而不用每台電腦都COPY一份相同的檔案,多佔硬碟空間。


.全方位備份
這我覺得是最重要的,畢竟硬碟有價,硬碟內的資料無價。




以下為YOGO個人覺得還不錯的1-BAY機型的NAS機種:


Synology DS109 高效能網路儲存伺服器
EDIMAX NS-2501 1 Bay網路儲存伺服器
合勤ZyXEL NSA-210 1Bay 網路儲存設備
Netshare‧ME752GN-S‧1 bay 家用網路儲存伺服器
QNAP 威聯通TS-110 網路儲存伺服器
Buffalo LinkStation 1.5TB 網路儲存設備

延伸閱讀:
NAS的應用與簡介(一)
NAS的應用與簡介(三)企業與公司的應用
[好物推薦]ICY BOX 酷盒 NAS下載機 IB-NAS4220-B
FileZilla Client安裝使用教學

如果覺得這篇文章對您有所幫助,在觀看完文章之餘,希望能點選下方方廣告,當作是對YOGO的支持,讓YOGO更有寫作的動力。



NAS的應用與簡介(一)


網路儲存設備 (Network Attached Storage,NAS),是一種專門的資料儲存技術的名稱,它可以直接連接在電腦網路上面,對異質網路使用者提供了集中式資料存取服務。


描述

NAS 和傳統的檔案儲存服務或是直接儲存設備不同的地方在於NAS設備上面的作業系統和軟體只提供了資料儲存、資料存取、以及相關的管理功能;此外,NAS設備也提供了不止一種檔案傳輸協定。NAS系統通常有一個以上的硬碟,而且和傳統的檔案伺服器一樣,通常會把它們組成RAID來提供服務;有了NAS以後,網路上的其他伺服器就可以不必再兼任檔案伺服器的功能。NAS的型式很多樣化,可以是一個大量生產的嵌入式設備,也可以在一般的電腦上執行NAS的軟體。

NAS用的是以檔案為單位的通訊協定,例如像是NFS(在UNIX系統上很常見)或是SMB(常用在 MS 視窗環境)。NAS所用的是以檔案為單位的通訊協定,大家都很清楚它們的運作模式,相對之下,儲域網路(SAN) 用的則是以區塊為單位的通訊協定、通常是透過SCSI再轉為光纖通道或是 iSCSI。(還有其他各種不同的 SAN 通訊協定,像是ATA over EthernetHyperSCSI,不過這些都不常見。)

NAS 電腦或設備用的通常是精簡版的作業系統,只提供了最單純的檔案服務和其相關的通訊協定;舉例來說,有一個叫 FreeNAS 的開放源碼 NAS 軟體用的就是精簡版的FreeBSD,它可以在一般的電腦硬體上執行,而商業化的嵌入式設備用的則是封閉源碼的作業系統和通訊協定程式。


歷史

網路儲存設備 一開始是在 1983 年 Novell 公司的 NetWare 作業系統裡面的檔案分享功能和 NCP 通訊協定裡面所引進來的觀念;而在 UNIX 界,1984 年時昇陽公司發表了 NFS,讓網路伺服器之間能夠利用網路程式彼此能夠分享儲存空間。3Com 公司的 3Server3+Share 軟體是當時第一個為了開放系統伺服器而特別設計的伺服器 (其中包括了專屬軟硬體及多台磁碟機),該公司也從 1985 年到 1990 年代初期一直領導時代的潮流,3Com 和微軟公司在這個新市場上還合作開發了 LAN Manager 軟體及其通訊協定。受到 Novell 的檔案侗服器的啟發,IBM、昇陽、以及其他相當多的公司都開始研發專屬的伺服器;3server 應該是第一家專門為桌上型作業系統開發專屬 NAS 的公司,而 Auspex Systems 則是第一家為 UNIX 市場開發專屬 NFS 伺服器的公司。在 1990 年代早期,Auspex 公司的一些員工獨立出來開了另一家叫 Network Appliance 的公司,同時支援了 Windows 和 UNIX 系統,開啟了專屬 NAS 的市場。


NAS 使用狀況

NAS可讓資料的使用率提升,主要的原因在於資料不會像以往一樣依附在SERVER上,比方說以往使用者不會因為SERVER的關閉而讓使用者無法使用,因為使用者連結的是NAS。 NAS也讓資料管理變得輕鬆及簡單,讓原本需要在伺服器上進行的繁複設定程序,簡化成幾個步驟就可完成,大大的節省設定時間。


消費性 PC 所用的 NAS 作業系統

著名的NAS系統例如FreeNAS、Openfiler等;FreeNAS基於FreeBSD系統,Openfiler基於Linux。一般認為,後者的許可權管理優於前者。但是前者可以通過在Shell中使用ACL機制實現較完善的許可權管理。


以上資訊出至wiki中文維基百科:http://www.blogger.com/post-edit.g?blogID=87806169992504556&postID=5451773221634027737


至於NAS的應用可以參考以下文章:http://issuu.com/d-link/docs/d-link_nas

延伸閱讀:
NAS的應用與簡介(二)家庭與個人的應用
NAS的應用與簡介(三)企業與公司的應用
[好物推薦]ICY BOX 酷盒 NAS下載機 IB-NAS4220-B
FileZilla Client安裝使用教學

如果覺得這篇文章對您有所幫助,在觀看完文章之餘,希望能點選下方方廣告,當作是對YOGO的支持,讓YOGO更有寫作的動力。

2009年7月26日

心情鬱卒嗎?聽紓壓音樂10分鐘免鬱卒


不景氣,壓力大增、情緒跌落谷底,聆聽喜愛的音樂有助紓壓。昨發表、針對台灣自製的紓壓音樂的一項 研究發現,聽特有節奏和旋律的音樂十分鐘後,可讓掌管腦內放鬆、感性的α波提高,讓掌管緊張、積極的β波下降,證實有紓壓效果。 以上內容為壹蘋果健康網醫學新知內容報導的大綱節錄,若需要完整內容請自行參閱壹蘋果健康網的醫學新知中的『聽紓壓音樂10分鐘免鬱卒』
http://hk.health.nextmedia.com/index.php?fuseaction=Article.ListArticle&sec_id=6349078&iss_id=20090107&art_id=12060276

另外Yahoo知識+中討論的『治療心靈的歌』

http://tw.knowledge.yahoo.com/question/question?qid=1507102409316

中推薦的『傾聽心靈音樂』也是治療心靈、放鬆心情的不錯選擇,剛剛查了一下GOHAPPY有在賣,而且還送『送賓果遊樂網-週年慶生包』,感覺還蠻超值的

http://www.gohappy.com.tw/shopping/Browse.do?op=vc&cid=30637&sid=6

,且kkbox也有這張專輯可線上收聽

http://www.kkbox.com.tw/funky/web_info/yPumxE1si8HxjiL00JUI008l.html

,若想聽聽心靈音樂紓紓壓的朋友不妨慘考看看。



傾聽心靈音樂 / Let Music Stay in Your Soul
傾聽長笛的獨特樂符、欣賞長笛的亮麗演出、潔淨無暇的溫柔旋律,可使心靈展翅飛揚,新瑩水嫩的純淨節奏,可使精神深層美化,無論向左聽、向右聽,皆是動聽的戀曲,長笛流轉的旋律,常駐心底;本輯特別收錄16首以長笛演繹的影視名劇與廣告名曲,電影『英雄本色』、韓劇『巴黎戀人』、日劇『白色巨塔』,無論向左聽、向右聽,皆是動聽的戀曲,長笛流轉的旋律,常駐心底。

★網友真實見證(治療心靈的歌)
★內附精美彩印琴譜


曲目:(長笛演奏音樂版本)
01.The Sally Gardens / 莎莉花園(電影『英雄本色』常用背景配樂,傾聽長笛輕柔且悠揚的音色,透露一番難以言喻的淡淡幽情) 試聽
02.The Rose Of Tralee / 玫瑰(優雅浪漫的樂章融合於長笛的演繹,深深打動你心靈之音)
03.Be Thou My Vision / 成為我的異象(『中華三菱savrin』汽車廣告曲,耳熟能詳愛爾蘭著名民謠)
04.Summer Snow / 夏之雪(日劇『夏之雪』主題曲,是首最迷人也最被喜愛的愛爾蘭名曲)
05.Amazing Grace / 奇異恩典(日劇『白色巨塔』主題曲,浪漫優雅的長笛情境小品) 試聽
06.Moon River / 月河(韓劇『巴黎戀人』、偶像劇『薰衣草』常用背景配樂 ,網路詢問率最高配樂曲) 試聽
07.Serenade / 舒伯特小夜曲(韓劇『夏日香氣』主題曲,這樣優美的旋律,總是被深藏在心底)
08.Chopin Concerto No.1 In E Minor, Op.11 / 蕭邦第1號鋼琴演奏曲(韓劇『天國的階梯』常用背景配樂)
09.La Vie En Rose / 玫瑰人生(法國最賣座電影『美麗人生』、『偷情』主題曲,是一首受歡迎的法式的浪漫風情名曲)
10.Le Papillon / 蝴蝶(電影『蝴蝶』主題曲,傾聽長笛溫婉清亮的音色,讓人覺得格外有氣質)
11.Pachabel's Canon / 卡農(電影『我的野蠻女友』主題曲、『黑松沙士』廣告曲,網路詢問率最高配樂曲)
12.Memory / 回憶(『貓』主題曲,『Nissan Teana 3.5』汽車廣告代言曲)
13.Dying Young / 伴你一生(電影『伴你一生』主題曲,在長笛悠揚的樂聲中,讓人想起那段往事回憶)
14.Somewhere In Time / 似曾相識(電影『似曾相識』主題曲)
15.New Dream / 新夢(電影『瓶中信』、『英倫情人』主題曲)16.The Phantom Of The Opera / 歌劇魅影(電影『歌劇魅影』主題曲)



相關網址:
GOHAPPY:http://www.gohappy.com.tw/shopping/Browse.do?op=vc&cid=30637&sid=6

KKBOX:http://www.kkbox.com.tw/funky/web_info/yPumxE1si8HxjiL00JUI008l.html

延伸閱讀:
(1)YOGO推薦聖誕節音樂與紓壓音樂(送遊戲包)
(2)多久沒和朋友聯絡了?寄張電子音樂賀卡聯絡一下感情吧!
(3)你有多久沒有好好舒放心靈壓力了?
(4)令人感動的好戲,令人感動的好歌

如果覺得這篇文章對您有所幫助,在觀看完文章之餘,希望能點選下方方廣告,當作是對YOGO的支持,讓YOGO更有寫作的動力。

2009年7月25日

令人感動的好戲,令人感動的好歌


最近晚上八點檔都改看大愛電視台的 大愛劇場系列 / 芳草碧連天,不但好看又深具教育意義,有別於現在的主流八點檔的本土戲劇,不是打打殺殺就是劈腿外遇的劇情,尤其是它的主題曲『守候』跟片尾曲『花園』,不但好聽、歌詞又有意義,喜歡的朋友建議可以買張專輯回來聽。

相關連結:http://www.books.com.tw/exep/assp.php/yogo/exep/cdfile.php?item=0020133782




大愛人間3-簡單生活 (芳草碧連天限量版)


專輯說明
專輯收錄:《大愛劇場》芳草碧連天、沈順從《真善美劇場》勵志、感恩、自在人生系列主題曲


曲目及試聽

01守候 主唱:高慧君 試聽
02花園 主唱:洪瑞襄 試聽
03決心 主唱:程伯仁
04情義.月光 主唱:李麗芬
05我的名字叫勇敢(勵志系列) 主唱: 徐哲緯、關心、荒山亮
06歲月的籤詩(感恩系列) 主唱:李麗芬
07感恩跟著人生行(自在人生系列) 主唱:曹雅雯
08Nature(演奏曲) 曲:王力宏 編曲:饒善強、伍冠諺
09一首簡單的歌(演奏曲) 曲:王力宏 編曲:饒善強、伍冠諺
10幸福的保證(演奏曲) 曲:薛忠銘 編曲:饒善強、伍冠諺
11The Moment 這一刻(演奏曲) 曲:陳忠義 編曲:饒善強、伍冠諺
12簡單生活(演奏曲) 曲:吳旭文 編曲:饒善強、伍冠諺

相關連結:http://www.books.com.tw/exep/assp.php/yogo/exep/cdfile.php?item=0020133782


延伸閱讀:
 (1)YOGO推薦聖誕節音樂與紓壓音樂(送遊戲包)
 
(2)多久沒和朋友聯絡了?寄張電子音樂賀卡聯絡一下感情吧!

(3)你有多久沒有好好舒放心靈壓力了?

(4)心情鬱卒嗎?聽紓壓音樂10分鐘免鬱卒

如果覺得這篇文章對您有所幫助,在觀看完文章之餘,希望能點選下方方廣告,當作是對YOGO的支持,讓YOGO更有寫作的動力。



2009年7月23日

[推薦]學習網頁設計及規劃的二本入門書

 
一般來說非科班出身的人,想踏入網頁設計的領域,不外乎是去電腦補習班補習或買書自修,但不管是去電腦補習班補習或買書自修,一般人都會把重點放在如Dreamweaver與Flash..等軟體上,但卻忽略了網站整體設計上的企劃與規劃的重要,今天要推薦二本YOGO讀過且覺得很不錯的網站規劃的書給各位網友參考,若有興趣的朋友建議可以去圖書館找看看有沒有這二本書,或買回來參考YOGO都覺得不錯。


第一本:網頁設計新人仕事


想成為網頁設計師要看的第一本書 進入網頁設計職場前,先學會基本的Know-How吧! 到底網頁設計是怎麼樣的工作呢?難道只是畫圖嗎? 即將從事網頁設計工作的學生們,或是想跳槽轉行來的人,對於這項工作,總充滿著不安的感覺,這正是催生這本書的原動力。

除了說明網頁設計的工作流程之外,同時介紹基礎知識,是進入瞬息萬變的網路世界最重要的敲門磚,同時解說新人在業界將面臨何種挑戰。

利用豐富的實例以及插圖,使容清晰易懂,讓讀者沉浸在網頁設計的樂趣裡。

另外,藉由採訪博報堂i.Studio、IMG SRC以及GREE的三位新人設計,讓讀者能夠實際了解緊張的現場氣氛。本書可說是從事網頁設計前的必備寶典。


相關連結:http://www.books.com.tw/exep/assp.php/yogo/exep/prod/booksfile.php?item=0010434058



第二本:Web+設計的黃金則 - 讓人流連忘返的網站設計關鍵




「給人好印象的網頁,其來有自!」技術與功能不是全部,網站不只要好看,更要好用。當瀏覽者願意停留在你的網站時,你的設計才具有價值!


本書特色

從企劃、結構設計、視覺設計到完成前的測試,按部就班分門別類地將網站設計所需知識與原理都一網打盡。


不僅從網頁設計人員的角度,也從網站企劃、編輯人員的角度來提供關於網站規劃、網頁設計上的實用知識。


文中不僅圖解眾多, 且包含專家密技、專家知識、專家看法與小知識大放送等關鍵說明專欄, 內容分類明確又易讀。


附錄包含易用性量表, 讀者可影印來實際評量自己製做的網頁。
附錄包含易用性詞彙列表索引+說明, 幫助非技術類人員理解專有名詞。





若對網站設計有興趣的朋友,YOGO強烈建議可讀讀這二本書的內容,保證獲益良多。

如果覺得這篇文章對您有所幫助,在觀看完文章之餘,希望能點選下方方廣告,當作是對YOGO的支持,讓YOGO更有寫作的動力。


2009年7月1日

[教學]PHP多個核取方塊如何放到同一個欄位

緣起:

先說廢話,我在織夢線上發現有很多大大都在問說如何利用多個核取方塊放到同一個欄位,老實說我對這功能並不感興趣,因為我覺得這樣做並不實用,所以我原本是不打算寫教學的,直到前幾天有位織夢線上的大大寫封MAIL給我,信的內容是他現在在做學校的畢業專題,遇到了多個核取方塊如何放到同一個欄位的問題,希望我能指導他,信的內容不但把他所遇到的問題寫的很詳細,且有提出他的想法(也就是他想到的結決方法)且有抓圖說明,讓我覺得他是真的有心想學習,而非只是為了要交作業而已,所以我才決定寫這一篇"多個核取方塊如何放到同一個欄位教學",希望能對有需要的大大有所幫助,好了,不廢話進入主題了。

第1步:新增一個"delfile"資料庫。

第2步:新增一個"checkbox"資料表。

第3步:新增"id"及"checkbox"二個欄位,id為主鍵、型態為int、自動編號;checkbox為記錄興趣欄位,型態為varchar、長度為200。

第4步:新增一張表單。

第5步:新增八個核取方塊如下圖,核取方塊名稱用 checkbox[](八個核取方塊名稱都要用用checkbox[]),表示我們要用陣列處理。

第6步:核取的值輸入若使用者選取該核取方塊時,所要寫入資料庫的值。第7步:選取form標籤。第8步:伺服器行為 ---> 插入記錄。

第9步:把checkbox欄和隨便一個FORM.checkbox[]配對,並把送出為改為'文字'(一定要記得改喔!)。

第10步:插入後,請前往的部份選ok.php。第11步:把index.php切換至'程式碼'編輯模式。

第11步:把index.php切換至'程式碼'編輯模式。

第12步:找到這一段 if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {。

第13步:在剛剛那一段下方新增下列的程式碼。
foreach($_POST['checkbox'] as $box) {
$box2 .= $box;
}


我解釋一下這一段的意思好了,foreach()是PHP用來處理陣列的特有迴圈,詳細的用法我在我上一篇的[一次刪除複數檔案]的教學中解釋過了,在此不再贅述,有興趣的大大請自行參閱該教學。

在這一段最重要的在這一句'$box2 .= $box; ',一般PHP的要指派值給變數都是用=(等於)不過在此卻是用.=(在等於之前多一個點),在PHP中=是用來指派變數值,但同一個變數若指派給二種不同的值,新值會覆蓋舊值,用echo輸出時只會輸出新值,不會輸出舊值,在PHP中.=是用累加的方法來指派值,所以新值與舊值都會存在,因為我們須將所有陣列的值合併成同一個值,以能插入同一個欄位,所以要用.=來作。

第14步:把
$insertSQL = sprintf("INSERT INTO checkbox (checkbox) VALUES (%s)",GetSQLValueString($_POST['checkbox[]'], "text"));

改成
$insertSQL = sprintf("INSERT INTO checkbox (checkbox) VALUES (%s)",GetSQLValueString($box2, "text"));

我解釋一下這一段的意思好了,我們要插入checkbox欄位的值,已經變成$box2了,而不是$_POST['checkbox']所以要改成我上述的樣子。

第15步:簡單吧!只改4行字就完成了,我們來測試看看!

第16步:嗯!果然成功了。

第17步:去資料庫看看,剛剛 選取的資料有無插入資料庫中,果然成功寫入資料庫,YA!成功。

第18步:在ok.php的頁面新增一個資料集,把剛剛輸入的資料庫資料取出,以確定我們真的成功了。其實這個步驟可以不用作,我會這樣做的原因是要讓各位大大知道,如果用剛剛的方法去作,所有的輸出資料都會擠在一起,不但不美觀且不實用(因為無關鍵字,所以無法把字串拆成陣列),那要怎麼辦呢?請繼續往下看。

第19步:找到我們剛剛改的那段程式。
foreach($_POST['checkbox'] as $box) { $box2 .= $box;}

把它改成
for($i=0;$i<count($_POST['checkbox']);$i++) {
if(count($_POST['checkbox'])==1) {
$box2=$_POST['checkbox'][$i];
}elseif($i == (count($_POST['checkbox'])-1)) {
$box2.=$_POST['checkbox'][$i];
}elseif($i <>
$box2.=$_POST['checkbox'][$i];$box2.='、';
}
}

這樣就可以了。我解釋一下程式碼的意思好了,我們改用for迴全圈來跑陣列(for迴圈用法請自行參閱相關資料,不在此解釋之),並在迴圈內新增3個判斷式,為什麼要新增3個判斷式呢?且聽我道來。

第一個判斷式:if(count($_POST['checkbox'])==1) ,先說count這個函式好了,它是一個統計函式,用以統計陣列中有幾筆資料,再來說說判斷式的內容,這個判斷式為真的條件是,當陣列的資料只有一筆時,不用多作處理,直接去執行$box2=$_POST['checkbox'][$i];這一段,也就是把表單變數指派給變數$box2,好讓dw把$box2的值插入checkbox欄位,也就是直接去執行步驟14,而不需要使用第三個判斷式內的方法處理。

第二個判斷式:elseif($i == (count($_POST['checkbox'])-1)) {,當第一個判斷式不成立,就會去比對第二個判斷式是否成立,而這個判斷式為真的條件是當 $i 的值等於$_POST['checkbox']陣列的資料總筆數減1的值時,就會去執行$box2.=$_POST['checkbox'][$i];,先說一下為什麼要用$_POST['checkbox']陣列的資料總筆數減1的值去和 $i 比對,因為 $i 的值代表的是陣列的索引鍵值,因為陣列若不指定索引鍵的值會自動從'0'開始,而統計函數統計出來的值卻是從'1'開始,2者差1,所以當 $i 的值等於$_POST['checkbox']陣列的資料總筆數減1的值時,表示是陣列的最後一筆資料了,直接累加資料就可以,不需使用第三個判斷式內的方法處理。

第三個判斷式:elseif($i <> $box2.=$_POST['checkbox'][$i]; $box2.='、';

這二行的意思就是說,變數$box2的值為累加的$_POST['checkbox'][$i]陣列值,因為我們是用迴圈處理陣列,所以在迴圈重覆之前我們把變數$box2的值再累加一個 '、' 的值上去,然後再去重覆迴圈,而當第一及第二個判斷式成立時不會累加 '、' 這個值上去,這麼做有什麼用處呢?繼續看下去你就知道了。

第20步:新增一筆資料。

第21步:把步驟17的資料集所輸出的資料改用重覆區域輸出,看看二者有什麼不同。

第22步:開啟ok.php的頁面並切換到程式碼編輯。

第23步:找到 < ?php echo $row_Recordset1['checkbox']; ?>

第24步:把 < ?php echo $row_Recordset1['checkbox']; ?>修改如下:

$check = split('、',$row_Recordset1['checkbox']);
foreach($check as $check2) {
echo $check2;echo ' ';
}

我解釋一下這一段的意思好了, split()函式是用來分割字串的,而 '、' 就是要分割的條件,$row_Recordset1['checkbox']就是要被分割的字串,分格完後會自動以陣列方式儲存並指派給變數$check,然後用foreach迴圈輸出值,這一段其實可以不用作,我會這樣作的原因主要是要讓各位大大知道沒有 '、' (第一種方法)與有 '、' (第二種方法)差別在那?因為第一種方法沒 '、' 當分割關鍵值,所以無法分割字串,我們來看看成果吧!

第25步:囉!這就是結果。

PS:其實我也不贊成這種作法,因為將來要updata會很麻煩,且就如gordon大大在篇討論中的說明
http://www.dreamweaver.com.tw/forumD...p?main_id=5374 ,這不符合正規化原則,其實我覺得用gordon大大說的那個方法會比較好一點。

如果覺得這篇文章對您有所幫助,在觀看完文章之餘,希望能點選下方方廣告,當作是對YOGO的支持,讓YOGO更有寫作的動力。

【教學】 用DW製作PHP版刪除檔案教學



如何將server端的檔案刪除,也就是刪除資料後,一併將該相關檔案刪除:

舉例:index.php、photodel.php兩個網頁

資料庫欄位舉例:p_id(自動編號、主鍵)、p_name(紀錄檔案名稱及副檔名)

存放檔案的路徑:photo/

步驟一:在index.php頁面的表單插入二個隱藏欄位,p_id及p_name,而其值分別是資料庫欄位的p_id及p_name。

驟二:index.php頁面做法跟刪除資料的做法與設定一樣,然後主索引鍵值選"表單變數"旁邊的空白欄位輸入p_id,全都設定好之後按下確定後,在程式碼內容裡加上下面一段語法:先找到這一行:

先找到這一行:

$Result1 = mysql_query($deleteSQL, $delfile) or die(mysql_error());

在這一行之後,在找到這一行:

$deleteGoTo = "photodel.php";

在這二行中間的任何一個地方,加上下面二行程式碼

$photo = $_POST['p_name'];
unlink("photo/$photo");

這樣只要一個頁面就完成了,這個程式主要的重點在於unlink()這個函式,它的作用就是叫php去刪除指定的檔案,而它的函式原型如下:

unlink("要刪除的檔案存放路徑與要刪除的檔案名稱");


那為什麼要放在

$Result1 = mysql_query($deleteSQL, $delfile) or die(mysql_error());

之後

$deleteGoTo = "photodel.php";

之前呢?其實只要放在

header(sprintf("Location: %s", $deleteGoTo));

一行之前先執行unlink()函式就可以了,因為

header(sprintf("Location: %s", $deleteGoTo));

這一行的意思就是轉址,轉向你原本在刪除記錄後所要前往的網頁,所以unlink()函式一定要在

header(sprintf("Location: %s", $deleteGoTo));

之前執行,而為什麼要放在

$Result1 = mysql_query($deleteSQL, $delfile) or die(mysql_error());

之後,主要是因為if判斷式的關係,在你插入刪除記錄行為的時候,dw會自動加入一個if判斷式,判斷表單變數是否存在,而會要在

$Result1 = mysql_query($deleteSQL, $delfile) or die(mysql_error());

之後,主要是要確保unlink()這個函式會在if判斷式之內,避免程式發生錯誤。

另外下面延伸閱讀推薦的那二本書也都有提到相同的內容,而且寫的更詳細,推薦給有需要的朋友。

延伸閱讀:

挑戰Dreamweaver CS4互動網站百寶箱:使用PHP

精通Dreamweaver CS4與PHP & MySQL實例整合應用經典

如果覺得這篇文章對您有所幫助,在觀看完文章之餘,希望能點選下方方廣告,當作是對YOGO的支持,讓YOGO更有寫作的動力。




聖誕跑趴歡樂降★韓版假兩件針織連衣裙$890,新款顯瘦棒球服連帽風衣外套下殺$510,冬新款歐美棉襖棉服連帽短款外套限量↘$530,秋冬新款韓版大碼毛領氣質毛料外套↘$680,快上左耳貓網路購物

您好!如圖太小看不清楚,請 點選此處 看詳細內容 左耳貓蝦皮賣場 https://shopee.tw/hrf5168 左耳貓 露天賣場 http://class.ruten.com.tw/user/index00.php?s=starbox 左耳貓粉...