<script language="JavaScript" type="text/javascript">
<!--
var search_random = new Array();
/* 加入預設的查詢條件 */
search_random[search_random.length] = "PHP";
search_random[search_random.length] = "ASP";
search_random[search_random.length] = "MYSQL";
search_random[search_random.length] = "AJAX";
search_random[search_random.length] = "JavaScript";
document.getElementById("sbi").value =
search_random[Math.floor(Math.random()*search_random.length)];
//-->
</script>
2007-09-30
預設 AdSense for Search 的查詢條件
在看過 AdSense 的條規後,Google 並沒有看到有限制不可以預設查詢條件,我用亂數的方式去隨機顯示自訂的查詢條件,只要將下面的程式碼貼在 AdSense for Search 的程式碼後面就可以了,不過我只有處理一個查詢欄位,如果有兩個以上的查詢在同一個頁面下,我可不保證程式碼沒有問題。
令人又愛又恨的『 推薦2.0 』
在 AdSense 中的推薦功能有一個討厭的問題,就是顯示的廣告時常會消失,在網路上看了許多文章後,還是沒有具體的解決方法,除了用舊版本的廣告程式碼沒有其他的辦法了,我加了四個推薦連結,只有一個偶爾會顯示,我也嘗試過其他語言的廣告,但是一樣沒有任何廣告顯示。
而且也沒有替代的廣告或圖片可以用,就整個空在那,使整個版面看起來怪怪的,在 Firefox 上到還好,只是少了個圖片而已,背景上並沒有什麼變化,但在 IE 上卻出顯了一個白底的方匡,整個版面的感覺就差很多。
但是 AdSense 的『推薦2.0』給瀏覽者的親和力很高,而且廣告的圖片給人有專業的感覺,蠻適合拿來裝飾 Blog,可是這個裝飾品常常會消失,這真是一件麻煩的事。
而且也沒有替代的廣告或圖片可以用,就整個空在那,使整個版面看起來怪怪的,在 Firefox 上到還好,只是少了個圖片而已,背景上並沒有什麼變化,但在 IE 上卻出顯了一個白底的方匡,整個版面的感覺就差很多。
但是 AdSense 的『推薦2.0』給瀏覽者的親和力很高,而且廣告的圖片給人有專業的感覺,蠻適合拿來裝飾 Blog,可是這個裝飾品常常會消失,這真是一件麻煩的事。
2007-09-29
重新啟動 Linux
今天把塵封已久的 Linux 系統啟動了,這台機器是使用 Intel Pentium 200MHz 的 CPU,主機板是 ASUS 的,這是我表哥給我的,不灌圖形介面的話其實他跑得還蠻順的,之前有灌過圖形介面,我光是開啟視窗就等很久,整台電腦只有慢而已。
他已經有一年半沒開機了,剛開機時一切正常所有的服務都很 OK,這真是令我驚訝的事,原本對他已經沒什麼好期望的,看來早期 ASUS 的電腦還蠻耐用的,然後重新設定防火牆,由於第一次沒做好重開時設定就跑掉了,這次又再找更多的資料來看,所以防火牆的部分也 OK 了。
開始上載之前寫的網頁,發生了 MySQL 無發連接的問題,在主機上連結沒什麼問題,SQL 指令也都正常,就是網頁連結無法執行,不知道是不是版本的問題,而且 PHP 載入的模組卻只有一個,之前在 Windows 也發生過版本的問題,那時候 Dreamweaver 8 就有顯示錯誤,但這次顯示正常連線,可是就是沒辦法連線,phpmyadmin 也無法正常連線,可以讀取資料庫的內容,但是其他的設定指令都不能運作,上網找了些方法都試過了,但還是不行,正在考慮要不要重灌。
他已經有一年半沒開機了,剛開機時一切正常所有的服務都很 OK,這真是令我驚訝的事,原本對他已經沒什麼好期望的,看來早期 ASUS 的電腦還蠻耐用的,然後重新設定防火牆,由於第一次沒做好重開時設定就跑掉了,這次又再找更多的資料來看,所以防火牆的部分也 OK 了。
開始上載之前寫的網頁,發生了 MySQL 無發連接的問題,在主機上連結沒什麼問題,SQL 指令也都正常,就是網頁連結無法執行,不知道是不是版本的問題,而且 PHP 載入的模組卻只有一個,之前在 Windows 也發生過版本的問題,那時候 Dreamweaver 8 就有顯示錯誤,但這次顯示正常連線,可是就是沒辦法連線,phpmyadmin 也無法正常連線,可以讀取資料庫的內容,但是其他的設定指令都不能運作,上網找了些方法都試過了,但還是不行,正在考慮要不要重灌。
2007-09-27
Google 廣告
這幾天在給 Blog 加上一些廣告,原本是使用 blogger 中的 AdSense 網頁元素工具去建立廣告,但每次在修改 HTML 模版後,AdSense 的設定總會跑掉,真是屢試不爽。
後來我就換成 HTML/JavaScript 網頁元素工具來建立廣告,雖然沒有圖形介面可以用,但是可以修改的空間變的比較大,在排版上的修改也比較容一些,不像之前都要去修改 HTML 模版中的樣式。
目前 Google 的廣告元素共有三種,每一種都蠻特別的,而且感覺 Google 的廣告計畫實驗性意義很重,就像在測試網路上的廣告市場,而且你稍微留意一下你所瀏覽的網頁,其實有很多都有刊登 Google 的廣告,甚至有些廣告你根本不覺得他是廣告,因為廣告的內容會與你的網站相互應,這也是他特別的地方。
後來我就換成 HTML/JavaScript 網頁元素工具來建立廣告,雖然沒有圖形介面可以用,但是可以修改的空間變的比較大,在排版上的修改也比較容一些,不像之前都要去修改 HTML 模版中的樣式。
目前 Google 的廣告元素共有三種,每一種都蠻特別的,而且感覺 Google 的廣告計畫實驗性意義很重,就像在測試網路上的廣告市場,而且你稍微留意一下你所瀏覽的網頁,其實有很多都有刊登 Google 的廣告,甚至有些廣告你根本不覺得他是廣告,因為廣告的內容會與你的網站相互應,這也是他特別的地方。
2007-09-23
利用 ASP 對 Access 資料庫重組
由於 Access 資料庫沒有支援的 SQL 指令可做重組
而且在做刪除資料時,還是不會將空間釋放出來
這種狀況只能從 Server 上做重組釋放的動作
但不是每個人都可以進入 Server 上做這個動作
所以另外的辦法就是從 ASP 網頁上執行
<% 'CompactDB 成功將回傳 true,失敗將回傳 false 'DBUrl 以主目錄開始的資料庫相對位址字串 'passwd 資料庫密碼,如果沒有請輸入空字串 Function CompactDB(DBUrl,passwd) Set fso = CreateObject("Scripting.FileSystemObject") Dim strDB strDB = server.MapPath(DBUrl) Dim strNewDB strNewDB = server.MapPath(DBUrl & ".tmp") Dim login If(passwd<>"") Then login = ";Jet OLEDB:Database Password=" & passwd & ";" Else login = "" End If If fso.FileExists(strDB) Then '壓縮資料庫 Set Engine = CreateObject("JRO.JetEngine") strPvd = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Engine.CompactDatabase strPvd&strDB&login,strPvd&strNewDB&login Set Engine = nothing '刪除舊的資料庫 fso.DeleteFile strDB fso.MoveFile strNewDB,strDB '回傳已成功的訊息 CompactDB = true Else '回傳失敗訊息 CompactDB = false End If Set fso = nothing End Function %>檔案連結
2007-09-22
PHP 中的 unescape 函式
由於 PHP 中並沒有支援 JavaScript 的 escape() 的反函式
所以除了尋找其他編碼方式,要不然就要自己寫一個解碼函數
但如果可以使用其他方式編碼會是比較好的
在 JavaScript 中還是有針對資料傳送用的編碼函數
例如:
decodeURL(str) 『解碼』
encodeURL(str) 『編碼』
decodeURLComponent(str) 『解碼』
encodeURLComponent(str) 『編碼』
以上的函數會將英文和數字以外的文字轉成 URL 的 16 進位編碼
而 decodeURL,encodeURL 不會轉換 [ ; / ? : @ & = + $ , ] 這些文字
但 decodeURLComponent,decodeURLComponent 則會
所以並非一定要用到 unescape 函式才可以處理編碼的問題
注意關於 PHP 中的 unescape 函式程式碼必須用到 iconv 函式庫
請確認 php.ini 中有載入此函式庫
參考網頁:
PHP实现Javascript的escape(),unescape()的方法
PHP5網管實驗室
所以除了尋找其他編碼方式,要不然就要自己寫一個解碼函數
但如果可以使用其他方式編碼會是比較好的
在 JavaScript 中還是有針對資料傳送用的編碼函數
例如:
decodeURL(str) 『解碼』
encodeURL(str) 『編碼』
decodeURLComponent(str) 『解碼』
encodeURLComponent(str) 『編碼』
以上的函數會將英文和數字以外的文字轉成 URL 的 16 進位編碼
而 decodeURL,encodeURL 不會轉換 [ ; / ? : @ & = + $ , ] 這些文字
但 decodeURLComponent,decodeURLComponent 則會
所以並非一定要用到 unescape 函式才可以處理編碼的問題
注意關於 PHP 中的 unescape 函式程式碼必須用到 iconv 函式庫
請確認 php.ini 中有載入此函式庫
<?php function unescape($str){ $str = rawurldecode($str); preg_match_all("/%u.{4}|&#x.{4};|&#\d+;|.+/U",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v){ /* 下面的 UTF-8 可針對你的網頁編碼方式作變更 */ if(substr($v,0,2)=="%u"){ $ar[$k]=iconv("UCS-2","UTF-8",pack("H4",substr($v,-4)));} elseif(substr($v,0,3)=="&#x"){ $ar[$k]=iconv("UCS-2","UTF-8",pack("H4",substr($v,3,-1)));} elseif(substr($v,0,2)=="&#"){ $ar[$k]=iconv("UCS-2","UTF-8",pack("n",substr($v,2,-1)));} } return join("",$ar); } ?>
參考網頁:
PHP实现Javascript的escape(),unescape()的方法
PHP5網管實驗室
[PHP] 輸出資料至 Excel
經由設定 header 的文件格式達到輸出至 Excel 檔
這個方法我之前有用過,可惜他不支援 UTF-8 的編碼方式
有嘗試過使用 BIG5 的編碼方式,可以正常輸出文字
這個方法我之前有用過,可惜他不支援 UTF-8 的編碼方式
有嘗試過使用 BIG5 的編碼方式,可以正常輸出文字
<?php
/* 設定文件格式 */
header("Content-type:application/vnd.ms-excel");
/* 設定文件名稱 */
header("Content-Disposition:filename=to_excel.xls");
/* 輸出文件內容 */
for($i=1; $i<10; $i++){
/* 每個項目以( \t )分隔 */
echo "number".$i."\t";
echo "name".$i."\t";
echo "date".$i."\t";
echo "text".$i."\t";
/* 每一筆資料以( \n )分隔 */
echo "\n";
}
?>
Ajax 使用 POST 傳送
這篇文章是想要將所學到的 Ajax 做一個簡單的紀錄
這裡再次感謝小正正教室。
參考網頁:
小正正教室:Ajax 兩層連動選單
相關連結:
爪哇豆的秘密:AJAX深度歷險1(Getting Started)
Ajax内部交流文档
MoztwWiki:AJAX 上手篇
維基百科:AJAX
語言技術:Ajax Gossip
這裡再次感謝小正正教室。
/* 針對不同瀏覽器的前置處理宣告 */
if (typeof(XMLHttpRequest)=="undefined" && window.ActiveXObject) {
XMLHttpRequest=function(){
var arrSignatures = [
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP"];
for (var i = 0; i < arrSignatures.length; i++) {
try{
var oRequest = new ActiveXObject(arrSignatures[i]);
return oRequest;
}catch(oError){/*ignore*/}
}
throw new Error("MSXML is not installed on your system.");
};
}
/* 傳送連接 */
function convectionLink(){
/*建立傳送的資料 */
var postData = 'user=xxxx&pass=xxxx';
/*產生要求資料的 URL 位址*/
var sURL = "check_in.php";
/* 建立 XMLHttpRequest 物件,並且送要求 */
var oRequest = new XMLHttpRequest();
/* 設定(傳送的方式,要求的位址,是否非同步進行) */
oRequest.open("POST", sURL, true);
/* 使用 POST 傳送必須設定 MIME 型態 */
oRequest.setRequestHeader(
'Content-Type',
'application/x-www-form-urlencoded'
);
/* 建立接收資料的函數 */
oRequest.onreadystatechange = function(){
/* readyState 所有可能的傳送狀態值如下:
0 (還沒開始)
1 (讀取中)
2 (已讀取)
3 (資訊交換中)
4 (請求完成) */
if (oRequest.readyState == 4) {
/* (在此處加入開啟已停用選項的設置) */
/* 處理傳回為 200 的 HTTP 狀態碼 */
if (oRequest.status == 200) {
/* 接受資料成功 */
/*可以從responseText或responseXML取得傳回的資料*/
json = oRequest.responseText;
/* 處理其他錯誤 HTTP 狀態碼 */
}else{
/*接收資料失敗,可以從 statusText 取得錯誤狀態資訊*/
alert(oRequest.statusText);
}
}
}
/* (在此處可以加入一些網頁選項停用的設置,以防止重複送出) */
/* 送出 Ajax 要求 */
oRequest.send(postData);
/*以POST傳送時,這裡可以輸入(XML,串流,字串,JSON格式)*/
/*以GET傳送時,這裡只要輸入 null 或是空的 */
}
參考網頁:
小正正教室:Ajax 兩層連動選單
相關連結:
爪哇豆的秘密:AJAX深度歷險1(Getting Started)
Ajax内部交流文档
MoztwWiki:AJAX 上手篇
維基百科:AJAX
語言技術:Ajax Gossip
2007-09-21
為何使用表格排版是不明智的?
之前在小正正教室中發現了這篇文章的連結,雖然這個文章已經很舊了,但我是最近才瞭解的,以前在別人的網頁中就有發現大部分的網頁已經不是表格排版了。
你是不是跟我一樣還在用表格排版呢?那你需要好好的讀這篇簡報,裡面說明了表格排版的缺點,和使用結構性 HTML 排版的優點,現在已經是資訊的時代了,你的網頁是不是也跟上了腳步呢?
參考網頁:為何使用表格排版是不明智的
你是不是跟我一樣還在用表格排版呢?那你需要好好的讀這篇簡報,裡面說明了表格排版的缺點,和使用結構性 HTML 排版的優點,現在已經是資訊的時代了,你的網頁是不是也跟上了腳步呢?
參考網頁:為何使用表格排版是不明智的
2007-09-20
更具親和力的網站
這幾天無意間找到了一篇文章,『在 30 天內打造更具親和力的網站』,很好奇的把他看完了,你也很好奇吧!那為什麼網站需要親和力呢??
相信很多人也相同的經驗,就是在瀏覽他人的網頁時,會看不清楚他所寫的文字,或者是排版的順序很糟,根本找不到你想要的資訊,一般正常人都難以瀏覽的網頁,何況是一些具有障礙的人。
有很多人喜歡在網頁的背景上貼圖片,但不是每張圖片都適合當背景,往往這些背景會造成閱讀上的不便,有時候我也會因為這些背景所困擾,常常必須去除網頁中的 CSS,但沒有 CSS 的網頁又很單調,所以在美化網頁時必須考量到閱讀上的問題,是不是會影響文字的顯示或造成網頁的無法瀏覽。
還有一個重要的問題,就是瀏覽器的支援性,很多的網頁可能只針對某一特定的瀏覽器所撰寫的,往往在 IE 中可以正常顯示的網頁,在其他瀏覽器中可能就會完全走樣,每個瀏覽器都有不一樣的問題,但有些問題是比較重要的必須加以處理,才可以讓網頁更受到大家的歡迎。
參考網頁:在 30 天內打造更具親和力的網站
相信很多人也相同的經驗,就是在瀏覽他人的網頁時,會看不清楚他所寫的文字,或者是排版的順序很糟,根本找不到你想要的資訊,一般正常人都難以瀏覽的網頁,何況是一些具有障礙的人。
有很多人喜歡在網頁的背景上貼圖片,但不是每張圖片都適合當背景,往往這些背景會造成閱讀上的不便,有時候我也會因為這些背景所困擾,常常必須去除網頁中的 CSS,但沒有 CSS 的網頁又很單調,所以在美化網頁時必須考量到閱讀上的問題,是不是會影響文字的顯示或造成網頁的無法瀏覽。
還有一個重要的問題,就是瀏覽器的支援性,很多的網頁可能只針對某一特定的瀏覽器所撰寫的,往往在 IE 中可以正常顯示的網頁,在其他瀏覽器中可能就會完全走樣,每個瀏覽器都有不一樣的問題,但有些問題是比較重要的必須加以處理,才可以讓網頁更受到大家的歡迎。
參考網頁:在 30 天內打造更具親和力的網站
2007-09-19
利用物件的方式設定事件
這是我第一次使用物件的方式設定事件處理,以前都是用 HTML 去處理事件的呼叫,在利用 JavaScript 將表格模擬成按鈕中就是用這種模式去運作的,那麼用物件去設定有什麼好處呢?
第一用這個方法去處理的話,可以減少網頁檔案的大小,也減少 HTML 上的複雜度,讓網頁有更好的結構感,使 HTML 更容易閱讀,且更容易撰寫。
第二對於大量使用相同的事件有更好處理,重複使用性高,將程式碼獨立成個體的文件,只要在適當的位址中載入,就能重複使用相同的程式碼。
第三對於事件的新增及修改有更大的靈活度,不必在新增事件時要去改每個物件的 HTML,可以統一管理相同物件的新增及修改。
所以在大量使用相同程式碼時,這是一個不錯的選擇。
第一用這個方法去處理的話,可以減少網頁檔案的大小,也減少 HTML 上的複雜度,讓網頁有更好的結構感,使 HTML 更容易閱讀,且更容易撰寫。
第二對於大量使用相同的事件有更好處理,重複使用性高,將程式碼獨立成個體的文件,只要在適當的位址中載入,就能重複使用相同的程式碼。
第三對於事件的新增及修改有更大的靈活度,不必在新增事件時要去改每個物件的 HTML,可以統一管理相同物件的新增及修改。
所以在大量使用相同程式碼時,這是一個不錯的選擇。
/* 取得所有名稱為 s_but 的物件群組 */ var spanButtons = document.getElementsByName("s_but"); /* 設定群組中每一個物件的事件 */ for (var i = 0; i < spanButtons.length; i++) { /* 設定當滑鼠按下時的事件函數 */ spanButtons[i].onmousedown = downChange; /* 設定當滑鼠重疊時的事件函數 */ spanButtons[i].onmouseover = overChange; /* 設定當滑鼠離開時的事件函數 */ spanButtons[i].onmouseout = outChange; } /*Down Change*/ function downChange(){ this.style.borderStyle = "inset"; this.style.backgroundColor = "#EEDDDD"; } /*Out Change*/ function outChange(){ this.style.borderColor = ""; this.style.borderStyle = "outset"; this.style.backgroundColor = "#FFFFFF"; } /*Over Change*/ function overChange(){ this.style.borderColor = "#FF0000"; }檔案連結
2007-09-16
Access 資料庫連結字串
有設定密碼的連結字串
"Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("/test.mdb")& ";User ID=xxxx;Password=xxxx;"
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("/test.mdb")& ";Jet OLEDB:Database Password=xxxx;"
沒有設定密碼的連結字串
"Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("/test.mdb")
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("/test.mdb")
Server.MapPath 輸入以主目錄為參考的相對路徑,回傳一個網站的絕對路徑
User ID :資料庫使用者帳號
Password :資料庫使用者密碼
"Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("/test.mdb")& ";User ID=xxxx;Password=xxxx;"
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("/test.mdb")& ";Jet OLEDB:Database Password=xxxx;"
沒有設定密碼的連結字串
"Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("/test.mdb")
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("/test.mdb")
Server.MapPath 輸入以主目錄為參考的相對路徑,回傳一個網站的絕對路徑
User ID :資料庫使用者帳號
Password :資料庫使用者密碼
Google 的免費空間
今天為了找一個空間來放我寫的網頁,原本想用 Google 文件來放的,但對於 HTML 的格式還是有些限制,所以只好找其他的辦法了,於是我想我們的 Google 大神應該有辦法為我解決這個問題,果然讓我找到了,每個 Google 帳號都擁有 100MB 的免費空間,但目前只有英文版,而且空間並不大,還好我只有放一些純文字文件,所以已經很夠用了。
我找到一個相關的說明網頁
http://fecfec.googlepages.com/gpage.htm
Google 免費空間
Google page Creator
我找到一個相關的說明網頁
http://fecfec.googlepages.com/gpage.htm
Google 免費空間
Google page Creator
2007-09-07
2007-09-03
利用 Date() 檢查日期格式
這是利用 JavaScript 中現有的函數 Date() 作日期驗證
使用的原理是將輸入值轉成正規的文字字串
再用 Date() 新增一個日期物件
如果是正確日期將會和輸入是一樣的字串
利用這個原理做到日期格式的驗證
檔案連結
使用的原理是將輸入值轉成正規的文字字串
再用 Date() 新增一個日期物件
如果是正確日期將會和輸入是一樣的字串
利用這個原理做到日期格式的驗證
/*-- (判斷日期格式是否正確) -------------------------*/ function isDate(year, month, day){ var dateStr; if (!month || !day) { if (month == '') { dateStr = year + "/1/1" }else if (day == '') { dateStr = year + '/' + month + '/1'; }else { dateStr = year.replace(/[.-]/g, '/'); } }else { dateStr = year + '/' + month + '/' + day; } dateStr = dateStr.replace(/\/0+/g, '/'); var accDate = new Date(dateStr); var tempDate = accDate.getFullYear() + "/"; tempDate += (accDate.getMonth() + 1) + "/"; tempDate += accDate.getDate(); if (dateStr == tempDate) { return true; } return false; } /*檢查格式*/ isDate("2007/2/12") isDate("2007-2-12") isDate("2007.2.12") isDate("2007/02/02") isDate("2007", "2", "12") isDate("2007", "2", "") isDate(2007, 2, 12)
檔案連結