2010年11月11日 星期四

PHP產生Word報表

要用PHP產生word報表,我知道的有兩種方式。第一種是利用外部呼叫VBScript的方式產生真正的word檔案,但是這樣做有幾個缺點:
1.執行時要呼叫外部程式容易導致memory leak。
2.執行PHP的Server上必須安裝Office,換句話說,Linux不適用。
3.程式的撰寫與維護也比較不容易。
附上VBScript範例以及word範本,有興趣的人請自行參考。
PHP呼叫的方式如下:
system("wscript /e:vbscript wordreplace.vbs \"$deptname\" \"$name\" \"$date\" \"$sno\" \"$fileno\" \"$revno\" \"$content\" \"$filename\" \"file.doc\"");
現在介紹的重點是第二種方式,這就要拜現在Office越來越強大之賜,Word或是Excel都支援HTML語法了,說不定PowerPoint也行,留給需要的人自己去測試囉!
言歸正傳,所以我們只要能產生出附檔名為DOC的HTML報表,就是一種變通的word報表了阿!

我的做法通常如下:
1.先用Office製作一個報表範本檔,儲存時存成HTML格式,但是附檔名用DOC。
2.寫PHP的程式將範本檔讀進來,然後把資料用str_replace替換掉。再存成自己要的檔案。
3.將檔案送出到瀏覽器給使用者:header("location:./$mywordfile.doc"); <-不是必要的!

一頁的表格通常這樣就沒問題了,若是不確定頁數的多頁報表,可以先把範本檔做個兩三頁,然後用文字編輯器(例如ultraedit、Editplus,當然你喜歡用記事本也行),把檔案切割成header、body、footer三個部分。PHP中寫檔的開始先把header寫進去,再利用迴圈寫上多頁的body,最後再把footer寫進去。記住body要在最後插入一個換頁的分隔符號,這樣做出來的報表跳頁時就不會有問題了。

以下為各個檔案的範例下載:
Header範本
Body範本
Footer範本
PHP範本 (請使用按滑鼠右鍵另存目標的方式即可正常下載)

2010年11月10日 星期三

PHP連接MS SQL Server的問題解決

PHP連接MS SQL Server常常會碰到一些問題,每次遇到問題就上網找資料,弄了半天才搞定。現在把幾個要點整理出來,以後遇到問題時希望可以快速的解決。

錯誤訊息為mssql_connect() / mssql_pconnect() undifined:

1.php.ini中extension=php_mssql.dll前面的;拿掉。Apache重新啟動。

2.將c:\appserv\php5目錄中的ntwdblib.dll、libeay32.dll、ssleay32.dll覆蓋到c:\windows\system32;c:\appserv\apache2.2\bin,再重啟Apache。

3.下載ntwdblib.dll覆蓋到c:\windows\system32;c:\appserv\apache2.2\bin;,再重啟Apache。

錯誤訊息為connect失敗的:

1.遠端連接請注意防火牆問題,SQL Server的1433 Port要打開。

2.MS SQL 2000版本有可能要下載MS SQL2000 SP4安裝。

3.MSSQL的認證必須為SQL server及Windows混合。
MS SQL 2000版本的設定在Enterprise Manager中要改變的主機上按右鍵選內容裡面的安全性選項。
MS SQL 2005版本的設定在SQL Server Management Studio Express中要改變的主機上按右鍵選屬性裡面的安全性選項。

4.使用TCP/IP跟具名通道。設定方法如下:
MS SQL 2005版本:






MS SQL 2000版本的忘記在哪了,最好安裝時就選好,未來找到在上來補充。
如果上面方法都不行,請確定帳號,密碼跟資料庫名稱是否都有設對,權限是否有開好等等。

2010年11月9日 星期二

Windows下的PHP環境架設懶人包

這邊介紹兩個非常好用的PHP環境架設懶人包:
一、Appserv:

        包含了Apache、Mysql、PHP、phpMyadmin。可以說是標準版的懶人包,包含了最基本的軟體在裡面。

包含了Zend optimizer的版本在此下載:
http://www.appservnetwork.com/modules.php?name=News&file=article&sid=35

二、Xampp:

        包含了Apache,MySQL,PHP,Perl,OpenSSL,phpMyAdmin,Mercury,FileZilla,SQLite。可以說是豪華版的懶人包,而且也內含了Zend optimizer。
       補充一下,Xampp還有Linux的版本可以下載,但是我沒試過,不知道是不是跟Windows的版本一樣容易!