同一頁面使用兩個資料庫的常見問題

有時候我們會在同一個頁面同時使用兩個資料庫,

若連線字串是放在CLASS的CONSTRUCTOR裡面, 通常我們都只要NEW 一次, 就可以一直保持資料庫連線,

但若兩個資料庫交替使用, 則會發生連線字串混亂的狀況.

此時應該在CLASS裡面每個FUNCTION都的MYSQL_QUERY之前都指定連線字串,

這樣就可以保持一MYSQL_QUERY對應一個資料庫的狀況了.

class sample {

function DATABASE() {
include(“db1.php”);

}

function FIRSTCONNECT() {
$this->DATABASE();
mysql_query(“…..”);
}

}

class sample2 {

function DATABASE2() {
include(“db2.php”);

}

function ANOTHERCONNECT() {
$this->DATABASE2();
mysql_query(“…..”);
}

}

$firstclass = new sample;

$secondclass = new sample2;

$secondclass->ANOTHERCONNECT(); //讀取自DB2 的資料庫

$firstclass->FIRSTCONNECT(); //讀取自DB1 的資料庫

PHP DEBUG 筆記

最近在撰寫PHP程式的時候遇到了兩個花費我不少時間的問題.

第一個問題:

我們常常在設計表單的時候都會設計 新增, 刪除, 編輯的功能, 在完成這些功能之後, 我們習慣用 header(“Location: xx.php”); 回到瀏覽列表. 但有時候我們在編輯成功回到瀏覽列表後(沒有錯誤訊息), 但資料卻沒有被編輯修改成功. 最糟糕的是MYSQL_ERROR() 也帶不出到底問題出在哪裡. 這個時候就可以推斷是ID 沒有被送入MYSQL.

比如說: mysql_query(“UPDATE products SET title = ‘$title’ WHERE id = ‘$id'”) or die(mysql_error());

這個時候, 如果你的$id 變數值是 “” 也一樣會通過指令, MYSQL 不會告訴你有錯誤. 所以無論你怎麼試都還是發現指令明明就沒問題但怎樣就是沒辦法UPDATE成功.

第二個問題:

還有另一個可能性是出在一個天殺的錯誤:

<input type=”hidden” name=”id” values=”<?php echo $_GET[‘id’]; ?>” />

當我們想要用隱藏表單傳送ID值的時候, 會用以上的HTML來傳送, 你發現問題出在哪裡嗎?

答案很明顯, 就是 “values” ! values 是沒有 “s”的, 多了一個”s” 你的表單就送不出去ID這個值了.

正解: <input type=”hidden” name=”id” value=”<?php echo $_GET[‘id’]; ?>” />

若這個問題剛好與以上的問題碰在一起, 肯定會在DEBUG上花很時間.

表面上看起來很簡單的問題, 有時候會搞到我們抓狂都找不到BUG. 在這裡與大家分享經驗.

在 Dev C++ 安裝 glut 遇到的問題

1. 在Dev C+ 點選工具

2. 檢查更新版本 -> devpaks.org -> Check for updates -> 選擇glut 並下載安裝

3. 安裝成功後會發現 #include <GL/glut.h> 的程式都跑不起來

錯誤碼類似: redeclaration of C++ … short,

解決辦法:

網上搜尋下載 glut.dll 及 glut32.dll,
並將它們複製到跟你BUILD cpp程式的同一個資料夾,
再編譯一次看看, 應該就可以works了.

如果以上方法還是沒辦法解決,

記得在DEV C++ 的 專案 -> 專案選項 -> 參數 -> 連結器加入以下參數
“-lglut32 -lglu32 -lopengl32 -lwinmm -lgdi32”

才能夠編譯OPENGL的程式喔.

介面設計VS程式設計

介面設計:
1. 耗時間
2. 多數無法重複使用
3. 利潤一般, 通常與所花費時間不成正比
4. 給公眾看的介面設計很重要, 因為所有的專業素質就表現在介面上; 給公司內部人員看的就不用太重視介面美觀, 重點是User-Friendly

程式設計
1. 如果之前有寫過類似的專案, 則非常快速解決; 若沒有寫過, 則有可能想很久都想不出正解
2. 多數都可以重複使用, 因此寫的時候就儘量不要寫死
3. 如果都使用之前寫好的, 利潤相對就提高, 因為花費的時間其實不多.
4. 給公眾用的表現是在效能上, 越快越好; 對於公司內部人員的使用效能更是重要, 因為這樣才能提高工作人員的工作效率.

PHP return的迷思

最近使用function的時候, 一直發現在RUN的時候有個BUG,後來才知道原來是return的問題.

function GetProductSql()
{
     return mysql_query(“SELECT * FROM products”) or die(mysql_error());
}

這種情況下不能使用or die, 否則在compile的時候一定會有問題, 應該改成:

function GetProductSql()
{
     $sql = mysql_query(“SELECT * FROM products”) or die(mysql_error());
     return $sql; 
}

這樣才行.
以上是我使用PHP4的一些經驗, 但至今無法解釋原因.

Mix Taipei 2008參加心得

第二次參加微軟舉辦的研討會, 這次研討會的主角是SilverLight 2,
這個跨平台, 功能強大, 潛力高的網路展現層已經浩浩蕩蕩的進入市場了.
雖然目前酷炫的網站依然是以FLASH為主流,
但相信在不久的將來, 這個平台會有可能與FLASH旗鼓相當的.

SilverLight的特點:
1. 網站的設計不再侷限在HTML, JAVASCRIPT的規格, 你想到甚麼都可能變出來, 是Web Application的大突破.
2. 減輕SERVER端的負擔, 把工作量都放在CLIENT端, SERVER端只需負責資料傳輸.
3. 降低公司營運成本, 提高與使用者的互動.
4. 包裝Deep Zoom的演算法 (最酷的範例就是故宮博物院應用DeepZoom於清明上河圖)

IE8也是這次研討會的重點之一, 其講解重點是:
1. 支援標準 (跳脫IE 不遵守W3C規格的批評)
2. 更安全
3. 保護瀏覽歷程
4. 提供更快的查詢能力(字典, 地圖等等)

User-Experience 的選擇:
1. WPF 是為了不要浪費硬體的資源而產生的, 他不能完全取代WINFORM, 但可以做出酷炫的SmartClient App.
2. SilverLight 不像 WPF可以做出3D的效果, 主要是Browser-Based的應用.
3. WinForm還是有其特定的Control, 有些App不需要點綴, 使用Winform更符合經濟效益.

一些目前使用SilverLight技術的網站例子:
Yahoo Japan, Joinvest Academy, Taobao, Singtel, logi-craft, 聯銓資訊科技, HardRock 等等.

這次的研討會舉辦在臺北信義區HYATT酒店三樓, 參與人數將近500人以上.
這次研討會之後, 相信會加速SilverLight在臺灣地區的成長速度, 就讓我們拭目以待吧。

使用VISTA 64位元心得

自從購買新電腦之後, 牛頓就想要嘗試將XP升級成VISTA, 但不管是XP或VISTA, 只要是32位元版本都只能支援記憶體到3.x G, 這讓牛頓相當困擾, (因為的實際記憶體 有4G)於是就去尋找相關資料, 想嘗試VISTA 64位元, 這麼一來既可以支援所有的記憶體, 又可以逼自己去接觸VISTA, 不然我還是會一直咬著XP不放. 我使用的版本是VISTA ULTIMATE版.

值得一提的是, 微軟已經對外宣稱2008年6月30日就停產XP, 但延伸支援至10年後, 也就是說10年後, XP不再有重大更新, 微軟也不再支援有關XP服務. 既然微軟都這樣做了, 你還在考慮升級VISTA嗎?

說說一下使用VISTA 64位元的心得, 也可以破除一下一般人的迷思:

1. 很多32位元的軟體不支援?

A: 錯了, 其實再VISTA 32跑得動的軟體, 在VISTA 64 位元也一樣會模擬32位元的環境, 所以程式還是一樣跑得很順. 雖然有人說執行效率會降低, 但我感覺到的差別其實不大. 像我在VISTA 64 跑了Visual Studio 2008, Office 2007, Photoshop, Dreamweaver, Flash等等軟體都感覺很順暢.

2. UAC 很煩, 一直跳出來問你是否要繼續執行?

A: 套句曹哥的話, “你如果覺得回家打開門進去是很麻煩的一件事情, 那你就把門打掉, 你回去就很方便啦~~ 安全不能省略啦~”. 我現在都沒有裝防毒軟體, 核心也很安全, 所以用得滿開心的. 至少有個監護人會一直提醒你甚麼東西嘗試要進入你的系統, 不是很好嗎?

3. 電腦記憶體不斷升級, 32位元作業系統要怎麼完全使用他們?

A: 你可以使用Window Server 2003來當作你的個人作業系統, 但應該沒有多少人會用SERVER來做自己的桌電使用吧..而且他的安全機制很高, 有時候用IE逛網站會很麻煩. 未來的記憶體會不斷升級, 要運用3G以上的記憶體就是升級作業系統, 所以最值得推薦的就是使用64位元的作業系統. XP 64位元也停產了, 不妨試試看VISTA 64.

4. 想等Windows 7, 不要用VISTA?

在微軟舉辦的系統管理者日, 曹哥提到說未來Windows的作業系統也會以VISTA的核心為主, 一樣會有UAC,隨機記憶體等等機制, Windows 7 推出的確切日期連微軟內部的人都不清楚, 你確定還要等下去嗎?

我使用電腦主要是開發程式及網頁, 對於電動在VISTA 64位元是否支援, 這牛頓還不清楚呢,
就等各位電動好手測試過了再讓牛頓知道吧.

PHP MYSQL 亂碼問題

有時候我們用中文存取MYSQL資料庫資料的時候會出現亂碼,
又也許你在PHPMYADMIN看到的時候是明碼, 但用echo抓出來後卻是” ??? ” 的亂碼.
又或是在儲存的時候就已經是亂碼了, 要怎麼解決呢?

可以試試看以下的方法:

mysql_query("SET NAMEs 'utf8' ");
$sql = mysql_query("SELECT * FROM wp_posts where ID = 2");

不管INSERT 或是SELECT出來, 都在mysql_query前加入

 "SET NAMES 'utf8' " 

就可以確保資料庫存取時是以UTF-8的編碼儲存, 那在做資料轉換的過程應該就可以把編碼問題解決了~