2008年8月25日 星期一

讓ASP.NET也可以如PHP一樣include

  一般在寫ASP.NET時,總是會有一些部份的功能是要自己寫的,如果是要連DataBase那就要定義一些sqlconnection之類的東西,如果有很多的Page都要用到,那麼就會有一堆一樣的東西,若那天要移到別台SERVER或PC上時,一定又是一頁一頁的改,若把那些東西都寫在某一個File中,要用的時候在"建立"(new),並且引用,這樣一來不是方便多了!

先建立一個"類別"
For VB


Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.SqlClient

Public Class Class1
Public str As String = "Data Source=CUTE;Initial Catalog=C:\INETPUB\WWWROOT\PRACTICE\APP_DATA\STUDY.MDF;Integrated Security=True"
Public sqlcon As SqlConnection = New SqlConnection(str)
Public strsql As String
Public cmd As SqlCommand

End Class


For C#


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
///
/// Class1 的摘要描述
///

public class Class1
{
public OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\questionary\\App_Data\\qu_an.mdb");
public OleDbCommand cmd;
public OleDbDataReader dr;
public void constr()
{

}
}

2008年8月20日 星期三

如何設計問卷系統?

  其實問卷系統和大多數的系統,都有著大同小意的功能,所以在此就不貲述。
  問卷系統最難處理的就是DataBase,讓User設計問卷時,要如何處理選項是很重要的,當然,如果你把選項訂成有最大上限(例:10個),那這麼一來資料庫的選項欄位只要設10個就行,但這並不是一個好方法,如果今天User,有11的選項,那不就掛點了,所以,如果把同一題的選項做成String並以符號分開(例:","),這樣字串就會變成AAA,BBB,CCC,這樣就可以存在同一個欄位,然後每次在輸出到頁面時,只要依分隔符號將字串切開,就可以正常輸出了。
  小弟在此舉一個最簡單的例子:


(將"題目"和"選項"拆成兩個Table,並以"編號"做關聯)
ps.還有令一種做法,此法為Johnny.Net大大所提出(小弟覺得很特殊):
把選項以二進位方式表示並且儲存為整數或長整數, 然後再放到資料庫裡面去。舉個例子, 假設有一個題目如下:
(1) 請問 blah blah blah...
□ AAA, □ BBB, □ CCC, □ DDD, □ EEE, □ FFF, □ GGG, □ HHH, □ III, □ JJJ

假設獲得的回答是

□ AAA, ■ BBB, □ CCC, □ DDD, ■ EEE, □ FFF, □ GGG, ■ HHH, □ III, ■ JJJ

那麼你就把答案轉換成 0100100101B, 結果變成 125H 或 293。一個 int32 整數的最大值是 2147483647, 或是 7FFFFFFFH, 或是 1111111111111111111111111111111B; 換句話說, 一個問題最多可以儲存 31 個項目的回答 (我覺得應該不會有人願意回答超過 31 個選項的問卷吧? 如果真的有, 則可以採用 bigint/int64), 只會佔用一個整數, 而數值互換的運算速度也很快, 應該不會造成系統什麼負擔。
使用這種方法, 無論單選或複選都同樣適用, 邏輯也相同。
此外, 在針對資料庫中的答案做統計時, 只需要下指令計算該欄位數字除以 2 的 N 次方的餘數是 0 還是 1, 就知道某個項目有多少人勾選, 例如:

(
@pow int
)
AS
BEGIN
SELECT COUNT(*) AS totl
FROM tblMyDataBase
WHERE (fieldA % POWER(2, @pow) = 1)
END

資料來源:
http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3768982&SiteID=14

2008年8月18日 星期一

如何在Google Blog中用SyntaxHighlighter

  在網路上已有很多關於該 Tool 的教學,但小弟不才,看了好幾篇才做出來,在此也分享一下我的過程:
  在撰寫網誌時,若是有使用到程式碼,可能多半會遇到將程式碼貼到網誌時,版面是一團混亂,而 SyntaxHighlighter 這個免費的 Java Script 工具。這個是在客戶端的瀏覽器上執行,所以只要瀏覽器有支援,應該都可以正確顯示:
Step1. 先去 SyntaxHighlighter 下載檔案
Step2. 再將裡面相關的javascript檔案和css上傳到自己的網頁空間
(只要 Scripts 資料夾內的程式(*.js 與 *.swf) 及 Styles 資料夾內的 SyntaxHighlighter.css上傳即可)
Step3. 登入您的 Blogger
Step4. 點選[版面配置]\[範本]\[修改 HTML]
Step5. 將以下的範例,複製到</body></html>標籤的前面



<link href="http://你的網頁空間網址/SyntaxHighlighter.css" rel="stylesheet" type="text/css">
<script class="javascript" src="http://你的網頁空間網址/shCore.js"></script>
<script class="javascript" src="http://你的網頁空間網/shBrushCSharp.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushPhp.js"></script>
<script class="javascript" src="http://你的網頁空間網/shBrushJScript.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushJava.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushVb.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushSql.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushXml.js"></script>
<script class="javascript" src="http://你的網頁空間網/shBrushDelphi.js"></script>
<script class="javascript" src="http://你的網頁空間網/shBrushPython.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushRuby.js"></script> <script class="javascript" src="http://你的網頁空間網址/shBrushCss.js"></script>
<script class="javascript" src="http://你的網頁空間網址/shBrushCpp.js"></script>
<script class="javascript">
//<![CDATA[
dp.SyntaxHighlighter.ClipboardSwf = 'Scripts/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
//]]>
</script>

Step6. 測試是否 SyntaxHighlighter 與 BloggerMode 有正常運作
使用時加上如下的 Code:

<textarea name='code' class='language'>
程式碼
</textarea>
or
<pre name='code' class='language'>
程式碼
</pre>




其中 languages 部分,目前所支援有:


C++、C#、CSS、Delphi、Java、Java Script、PHP、Python、Ruby、Sql、VB、XML/HTML 等等。
請參考以下列表,將指定的語言之 Aliases 置換到 languages 的位置上。

Language Aliases
C++ cpp, c, c++
C# c#, c-sharp, csharp
CSS css
Delphi delphi, pascal
Java java
Java Script js, jscript, javascript
PHP php
Python py, python
Ruby rb, ruby, rails, ror
Sql sql
VB vb, vb.net
XML/HTML xml, html, xhtml, xslt

ps.建議若在<pre>...</pre>區塊中有"<"和">"時要將"<"轉成"& l t ;",">"轉成"& g t ;",這樣才不會錯(把空格去掉)
資料來源:
http://sharedderrick.blogspot.com/2007/12/blogger-syntaxhighlighter.html
http://yehhou.blogspot.com/2007/06/blogger-dpsyntaxhighlighter.html

2008年8月17日 星期日

如何讓DIV可以自動變大變小?

今天在寫PHP網頁時,因美功差,所以抓了免費的模版來用,由於都是用別人設定好的,所以很多都變的不可預期,今天用include_once()去引入其它的*.php,結果因為該頁的height比DIV所設的還大,結果使得它和其它內容重疊在一起,但後來發現只要不設定它的參數height就可以解決次問題:
[style.css]
...
#contenttext{float:right; height:300px; width:526px;}
...
只要把紅字delete即可:
[style.css]
...
#contenttext{float:right; width:526px;}
...