例子应用程序:高级反馈页

在你的站点上包含一个反馈页是个好主意。反馈页使用户能够提出问题,建议,和表示赞扬。你可以利用这些信息来改进你的站点,使它更加符合用户的要求。

建立反馈页的最简单的办法是使用HTML form把反馈信息传送给一个e_mail帐号。例如,下面的HTML页把输入form的信息传送给e_mail帐户webmaster@yoursite.com

 

<HTML>

<HEAD><TITLE>Feedback</TITLE></HEAD>

<BODY>

<H2>please enter any suggestions for improving

this web site in the form below:</H2>

<FORM ACTION=MAILTO:webmaster@yoursite.com>

<TEXTAREA NAME=Feedback COLS=30 ROWS=10 WRAP=VIRTUAL></TEXTAREA>

<P><INPUT TYPE=SUBMIT VALUE=Submit Feedbacd>

</FORM>

</BODY>

</HTML>

 

对小站点来说,这个反馈form将会工作得很好。所有的反馈信息都被发送到同一个e_mail帐户。但是,如果你站点有多个管理员,你希望所有的管理员都能看到反馈信息。而且,你希望存储反馈信息,以便将来取出这些信息并做分析。在这种情况下,你应该把用户反馈信息存储在数据库的表中。

这一节讲述如何使用ADO来保存和取出用户的反馈信息。你将学习如何建立一个高级反馈form。这个工程中用到了下列表和文件:

 

 

创建表Feedback

表Feedback有四个字段,分别用来存储e_mail地址,IP地址,反馈输入的时间,和反馈信息的内容。要创建这个表,从Microsoft SQL Sever程序组中启动ISQL/w。接下来,在查询窗口中输入以下的文本并执行它:

 

CREATE TABLE Feedback (Feed_Email VARCHAR(50),

Feed_IP VARCHAR(20),

Feed_Date DATETIME Default GetDATE()

Feed_Contents TEXT)

 

创建反馈网页

反馈网页是一个标准的HTML网页(见图24.1)。它有一个文本框和一个多行文本框,用户可以在文本框中输入他们的e_mail地址,在多行文本框中输入反馈信息。它还有一个用来提交反馈的提交按钮。当提交了反馈后,将显示接收网页。表24.1显示了网页Feedback的脚本。

 

表24.1 feedback.cfm

<HTML><HEAD><TITLE> Feedback </TITLE></HEAD><BODY BGCOLOR=#FFFFFF><H2> Please enter any suggestions for improvingthis web site in the form below: </H2><FORM METHOD="POST" ACTION="acknowledge.asp">Please enter your email address:<BR><INPUT NAME="Email" TYPE="TEXT" SIZE="30" MAXLENGTH="50"><P><TEXTAREA NAME="Contents" COLS=30 ROWS=10 WRAP=VIRTUAL></TEXTAREA><P><INPUT TYPE="SUBMIT" VALUE="Submit Feedback"></FORM></BODY></HTML>

图24.1 FeedBack页

 

创建接收网页

接收网页有两个作用。首先,它用来对用户提供反馈信息表示感谢(见图24.2)。第二,更重要的是,这个网页用来把反馈信息存储在表Feedback中。反馈信息的添加使用的是SQL INSERT语句,如表24.2所示。

 

 

表24.2 acknowledge.asp

<%' Retrieve form fields into variablesEmail=Replace(Request.Form("Email"),"'","''")Contents=Replace(Request.Form("Contents"),"'","''")

' Check for empty contentIF Email="" THEN Email="Unknown"IF Contents="" THEN Contents="None"

' Grab the user's IP addressUserIP=Request.ServerVariables("REMOTE_ADDR")

' Create the SQL command stringMySQL="INSERT Feedback (Feed_Email,Feed_IP,Feed_Contents) VALUES ('"&Email&"','"&UserIP&"','"&Contents&"')"

' Insert the form data into the Feedback tableSet MyConn=Server.CreateObject("ADODB.Connection")MyConn.Open "FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn"MyConn.Execute MySQL%><HTML><HEAD><TITLE> Thank You </TITLE></HEAD><BODY><H2> Thank you for your suggestions! </H2></BODY></HTML>

 

注意

注意这个脚本中如何使用VBScript函数Replace()。函数Replace()把所有的单引号替换为双引号。这对于防止SQL Sever认为已经到了SQL命令字符串的结尾是有必要的。如果没有使用函数Replace(),一个用户输入了包含单引号的反馈信息时,INSEET语句将会导致错误。

图24.2 Acknowledgement页

创建显示网页

显示网页用来显示用户输入的反馈信息(见图24.3)。反馈信息取自表Feedback。因为一个站点也许会收到几千个反馈信息,显示网页不显示表中的所有记录,而是只显示最后25个信息。这通过使用记录集对象的Maxrecords属性来实现。

 

图24.3 显示用户信息页

 

 

为了显示每个反馈信息的内容,使用了一个多行文本框。使用多行文本框的好处是它们有滚动条。如果有用户输入了相当长的反馈信息,它不会占满整个显示网页。表24.3是display.asp的脚本。

 

表24.3 display.asp

<%' Create ADO objectsSet MyConn=Server.CreateObject("ADODB.Connection")Set RS=Server.CreateObject("ADODB.RecordSet")MyConn.Open "FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn"

' Set the maximum number of records to returnRS.MaxRecords=25

' Retrieve the recordsRS.Open "SELECT * FROM Feedback ORDER BY Feed_Date DESC", MyConn%>

<HTML><HEAD><TITLE>Display Feedback</TITLE></HEAD><BODY><FORM><%' Display the recordsWHILE NOT RS.EOF%><BR><B>Date Entered:</B> <%=RS("Feed_Date")%><BR><B>Email:</B> <%=RS("Feed_Email")%><BR><B>IP Address: </B><%=RS("Feed_IP")%><BR><TEXTAREA COLS=30 ROWS=10><%=RS("Feed_Contents")%></TEXTAREA><HR><%RS.MoveNextWEND%>

</FORM></BODY>

</HTML>

<%' Close the Recordset and ConnectionRS.CloseMyConn.Close%>