1. Trang chủ
  2. » Công Nghệ Thông Tin

hướng dẫn tạo lập forum đơn giản trên website

25 414 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 69,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

hướng dẫn tạo lập forum đơn giản trên website tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tấ...

Trang 1

Hướng dẫn tạo lập forum đơn giản trên website

Yêu cầu: Cần phải biết một chút về các vấn đề sau:

- HTML

- JavaScript

- VbScript

- ASP

- Cơ sở dữ liệu Access

- IIS (Internet Infromation Service)

Nội dung tổng quát:

- Tạo folder làm việc

- Tạo cơ sở dữ liệu

- Kết nối cơ sở dữ liệu Access với ASP

- Viết các chương trình

- Chia sẻ / share thư mục thành web

- Chạy và kiểm duyệt, chỉnh sửa form nếu cần

I Tạo cơ sở dữ liệu bằng Access

- Có thể dùng Access 2000, 2002, hoặc 97 đều được

- Tạo 1 foleder riêng cho ứng dụng Forum, ví dụ ForumDiscussion chẳng hạn

- Tạo 1 cơ sở dữ liệu Access, chẳng hạn lấy tên CSDL là Forum.MDB, chú ý cần đặt chính xác vào thư mục tạo ở trên Vì sau này đường dẫn sẽ dùng cho lập trình

- Trong CSDL này tạo một bảng (chẳng hạn lấy tên là: Forum_Message), bảng này có cấu trúc như sau:

Fielde Name Data Type Data Length, Format Description

(không bắt buộc) Các yêu cầu khác

(nếu có)

ParentMessage Number Long Integer Số thứ tự tin nhắn chính

ThreadParent Number Long Integer Số thứ tự tin nhắn phụ

AuthorName Text 100 Tác giả đưa tin

AuthorEmail Text 100 Hòm thư tác giả đưa tin

Comments Memo Nội dung tin nhắn

Topic Text 200 Chủ đề tin nhắn

ReplyCount Number Long Integer Số lần tin nhắn được thảo luận

LastThreadPost Date/Time Default: now() Lần xem gần đây nhất

DatePosted Date/Time Default: now() Ngày đưa tin nhắn lên

ID AutoNumber Long Integer Chỉ số tin nhắn Không trùng nhau

Tên các trường sẽ được dùng trong lập trình Tốt nhất người lập trình cần phải ghi chú những tên trường này ra giấy để sử dụng cho lập trình thuận tiện

Tạo xong, nhập thử vào một vài bản ghi

II Tiến hành lập trình

Trước tiên cần chú ý rằng toàn bộ code phải đặt trong thư mục DiscussionForum tạo ở trên

1 Thiết kế file Database.inc

- Nhiệm vụ của file này là mở cơ sở dữ liệu Access ra và khai báo biến dữ liệu dùng cho chương trình Cần quan tâm đến biến bản ghi rs và cmd Trong đó rs là biến bản ghi, biến cmd biến thực hiện 1 câu lệnh trong CSDL

Trang 2

- Có thể dùng trình NodePad để soạn thảo nội dung file này Nội dung file này không phải là fileWEB mà chỉ là 1 đoạn ASP dùng cho việc chạy kèm 1 file web khác mà thôi.

<%

sFile = request.ServerVariables("PATH_TRANSLATED")

sSplit = split(sFile, "\")

for iCtr = 0 to uBound(sSplit) - 1

sDir = sDir & sSplit(ictr) & "\"

next

sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDir & "forum.mdb"

set conn = Server.CreateObject("ADODB.Connection")

2 Thiết kế file foot.inc

- Mỗi file web trong Forum thường có ở dưới đáy một lời nhắc HyperLink mà bấm vào đó để quay về diễn đàn chính Do vậy để có thể dùng kèm các lệnh này ở các file khác nhau thì phải thiết kế 1 file riêng Làm cho Web sáng sủa hơn, ngắn gọn và dễ đọc hơn

- Nội dung của file này chỉ 1 dòng duy nhất như sau:

<P><B><A HREF = 'default.asp'>Quay lai Dien Dan chinh</A>

3 Thiết kế file database_cleanup.inc

- Nhiệm vụ của file này là đóng dữ liệu đã mở lại Tức là làm sạch các biến dữ liệu đã mở ra trước đó như biến rs, cmd

- Nội dung của file này bao gồm các lệnh như sau:

4 Thiết kế file default.asp

- Đây là file mặc định sẽ sử dụng khi forum bắt đầu làm việc Đầu file sẽ kích hoạt việc mở dữ liệu, cuối cùng sẽ đóng dữ liệu

- Trong chương trình sẽ có việc phân trang hiện thông tin, mỗi trang chỉ có 20 dòng Nếu số lượng tin giao dịch trong toàn bộ sẽ được phân thành các trang

- Việc lọc ra thông tin của một loại chủ đề nào đó chỉ cần đưa tên loại chủ đề ở đầu form và bấnEnter

Trang 3

<! #include file = "database.inc" >

<TITLE>Dien Dan Tin hoc DONGDO</TITLE>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">

</HEAD>

<body bgcolor="#FFFFFF">

<CENTER><FORM ACTION = 'forum_search.asp'><b>Chon Forum:</b>

<input type="text" name="search" size="25">

<input type="submit" value="Chon" name="searchbutton">

iTotalPages = int(lTotalRecords / iPageSize)

if lTotalRecords MOD iPageSize <> 0 then iTotalPages = iTotalPages + 1

Trang 4

if lTotalRecords <= iPageSize then

lPageStart = ((iPage - 1) * iPageSize) + 1

lPageEnd = lPageStart + (iPageSize - 1)

if lPageEnd >= lTotalRecords Then

if not bNoRecords then

response.write "<P><B>Trang " & iPage & " / " & iTotalPages & "</B><P>"

end if

%>

<TABLE WIDTH = 100%>

<TR>

<TD><B><FONT COLOR = "RED">Chu de</FONT></B></TD>

<TD><B><FONT COLOR = "RED">Nguoi Gui/Hoi </FONT></B></TD>

<TD ALIGN = CENTER><B><FONT COLOR = "RED">Dap tra lai</FONT></B></TD>

<TD><B><FONT COLOR = "RED">Thoi gian</FONT></B></TD></TR>

Trang 5

response.write "<TD><A HREF='ShowMessage.asp?ID=" & rs("ID") & "'>" & rs("Topic") &

"</A></FONT></TD>"

response.write " <TD>"

response.write "<A HREF = 'mailto:" & rs("AuthorEmail") & "'>" & rs("AuthorName") & "</A>" response.write "</FONT></TD>"

response.write "</TD><TD ALIGN = CENTER>" & rs("ReplyCount") & "</FONT></TD>"

response.write "</TD><TD>" & rs("LastThreadPost") & "</FONT></TD></TR>"

rs.movenext

Next

end if

response.write "</TABLE>"

if bOnePage = false and bNoRecords = false then

response.write "<TABLE WIDTH = '100%'><TR><TD>&nbsp;</TD></TR><TR><TD WIDTH

= '10%'>&nbsp;</TD><TD WIDTH = '60%'>"

if iPage > 1 then

sPrevQuery = "Page=" & iPage - 1

response.write "<A HREF = 'default.asp?" & sPrevQuery & "'><B><< Trang truoc</B></A>"else

response.write "&nbsp;"

end if

response.write "</TD><TD VALIGN = TOP NOWRAP>"

if bLastPage = false then

sNextQuery = "Page=" & iPage + 1

response.write "<A HREF = 'default.asp?" & sNextQuery & "'><B>Trang tiep >></B></A>"else

response.write "&nbsp;"

end if

response.write "<TD WIDTH = '10%'>&nbsp;</TD>"

response.write "</TD></TR></TABLE>"

response.write "<P><CENTER><FONT SIZE =-1>"

for iCtr = 1 to iTotalPages

sPageQuery = "Page=" & iCtr & sQuery

if iCtr <> iPage then

response.write "<A HREF = 'default.asp?" & sPageQuery & "'>"

Trang 6

if iCtr < iTotalPages then response.write "&nbsp;&nbsp;|&nbsp;&nbsp;"

-5 Thiết kế file new_post.asp

- Nhiệm vụ của file này là sẽ tạo ra 1 form giao diện người dùng, để người dùng đưa tin lên diễnđàn

- Code của file này được đề xuất viết như sau:

Trang 7

<HTML>

<HEAD>

<! #include file = "Validate.inc" >

<TITLE>FORUM THAO LUAN DONGDO: GUI TIN MOI LEN DIEN DAN</TITLE>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">

<INPUT TYPE = "Hidden" NAME = "MessageType" VALUE = "NEW">

<TR><TD><B>Ten :</B></TD><TD><INPUT TYPE = "TEXT" NAME="Name" SIZE="50 MAXLENGTH = "100"></TD></TR>

<TR><TD><B>Email:</B></TD><TD><INPUT TYPE = "TEXT" NAME="Email" SIZE="50 MAXLENGTH = "100"></TD></TR>

<TR><TD><B>Chu de:</B></TD>

<TD><INPUT TYPE = TEXT SIZE=50 MAXLENGTH="100" NAME = "Topic"></INPUT></TD></TR>

<TR><TD VALIGN = TOP><B>Noi dung:</B></TD>

<TD VALIGN = TOP><TEXTAREA ROWS = 8 COLS = 50 NAME = "MESSAGE"></TEXTAREA></TD></TR>

Trang 8

//check to see that at least one char in author is non-blank

var bOK = false

var bAmp = false

var bPeriod = false

Trang 9

if(bOK == false || bAmp == false || bPeriod == false) {

alert("The e-mail address you entered is not valid")

Trang 10

sAns = replace(sInput, " ", "&nbsp; ")

sAns = replace(sAns, chr(34), "&quot;")

sAns = replace(sAns, "<! ", "&lt;! ")

sAns = replace(sAns, " >", " &gt;")

ReplaceComments = sAns

end function

function HTMLFormat(sInput)

dim sAns

sAns = replace(sInput, " ", "&nbsp; ")

sAns = replace(sAns, chr(34), "&quot;")

sAns = replace(sAns, ">", "&gt;")

sAns = replace(sAns, "<", "&lt;")

sAns = replace(sAns, vbcrlf, "<BR>")

HTMLFormat = sAns

Trang 11

end function

if Request("SubmitMessage") <> "" then bNew = true

if request("SubmitReply") <> "" or request("Reply") <> "" then bReply = true

if request("ApplyMessage") <> "" then bApply = true

bValid = bNew or bReply or bApply

sTopic = prepStringForSQL(Request("Topic")) & ","

sName = prepStringForSQL(sName) & ","

sEmail= prepStringForSQL(sEmail) & ","

sName = prepStringForSQL(sName) & ","

sEmail= prepStringForSQL(sEmail) & ","

sTopic = prepStringForSQL(Request("Topic")) & ","

sComments = prepStringForSQL(Request("Message"))

if iThread = 0 then iThread = iParent

sSQL = "INSERT INTO FORUM_MESSAGES

(PARENTMESSAGE,THREADPARENT,AUTHORNAME,AUTHOREMAIL,TOPIC,COMMENTS) VALUES (" & iParent & "," & iThread & "," & sName & sEmail & sTopic & sComments & ")"

conn.execute sSQL

cmd.CommandText = "LASTMESSAGE"

cmd.CommandType = 4

set rs = cmd.Execute

Trang 12

sID = rs("ID")

rs.close

sSQL = "UPDATE FORUM_MESSAGES SET REPLYCOUNT = REPLYCOUNT + 1, LASTTHREADPOST

= NOW() WHERE ID = " & iThread

<TITLE>DISCUSSON FORUM: PREVIEW MESSAGE</TITLE>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">

</HEAD>

<BODY BGCOLOR = "#FFFFFF">

<%

if not bValid then

response.write "You cannot navigate to this page without entering a forum message Please "response.write "return to the <A HREF = 'default.asp'>forum index</A> and try again."

Please review your post If everything is OK, click Submit below Otherwise,

click the Back button on your browser to make corrections.<P>

<FORM ACTION = "PreviewMessage.asp" METHOD = "POST">

<% if bReply Then %>

<INPUT TYPE="HIDDEN" NAME="ParentID" VALUE="<%= ParentID %>">

<INPUT TYPE="HIDDEN" NAME="ThreadID" VALUE="<%= ThreadID %>">

<INPUT TYPE="HIDDEN" NAME="OrigAuthor" VALUE="<%= sOrigAuthor %>">

Trang 13

<% end if %>

<INPUT TYPE="HIDDEN" NAME="Topic" VALUE="<%= sTopic %>">

<INPUT TYPE="HIDDEN" NAME="Message" VALUE="<%= sOrigMessage %>">

<INPUT TYPE="HIDDEN" NAME="AuthorName" VALUE="<%= Request("Name") %>">

<INPUT TYPE="HIDDEN" NAME="AuthorEmail" VALUE="<%= Request("Email") %>">

<INPUT TYPE = "HIDDEN" NAME = "MessageType"

<CENTER><INPUT TYPE="Submit" NAME = "ApplyMessage" VALUE = "Submit"></CENTER>

<! #include file = "footer.inc" >

</FORM>

<%

if bIllegal then %>

<FONT COLOR = "RED" SIZE = = -1>Your message was altered to delete the ASP delimiters

&lt;<%= chr(37) %> and <%= chr(37) %>&gt;

</FONT><P>

<% end if %>

<! #include file = "database_cleanup.inc" >

</HTML>

6 Xem tin nhắn trong diễn đàn File ShowMessage.asp

File này sẽ được gọi thực hiện khi đang ở mục danh mục diễn đàn, người dùng bấm vào tên chủ

để Thì nội dung của chủ đề sẽ được thực hiện và hiện lên như trên Tại đây người dùng sẽ có hai lựa chọn Nếu nhấn nút DapLai tức là người dùng bấm vào khu vực trả lời và thảo luận vấn

đề trên Nếu nhấn nút Quay lai Dien Dan chinh thì người dùng đã quay lại diễn đàn trước đó Code của file này được đề nghị như sau:

Trang 14

<! #include file = "database.inc" >

<%

sCaption = request.QueryString("Caption")

function HTMLFormat(sInput)

dim sAns

sAns = replace(sInput, " ", "&nbsp; ")

sAns = replace(sAns, chr(34), "&quot;")

sAns = replace(sAns, "<! ", "&lt;! ")

sAns = replace(sAns, " >", " &gt;")

HTMLFormat = sAns

end function

Function MessageChildren(ID, IndentLevel, iCurrentMessage)

dim oRs, oCmd, sSQL, sAns

'FIRST GET MESSAGE, TEXT, CLOSE

dim oParam

set oCmd = Server.CreateObject("ADODB.Command")

set oCmd.ActiveConnection = conn

set oRs = oCmd.execute

set oParam = nothing

iIndent = IndentLevel

set oRs = oCmd.execute

if oRs.eof then

oRs.close

set oRs = Nothing

set oCmd = nothing

if oRs("ID") <> cLng(iCurrentMessage) then

sAns = sAns & "<A HREF='ShowMessage.asp?ID=" & oRs("ID") & "'>" 'response.write "CurMsg=" & iCurrentMessage & " ID = " & oRs("ID") sAns = sAns & oRs("Topic") & "</A>"

Trang 15

sAns = sAns & "<TD>" _

& oRs("AuthorName") & "</TD></TR>"

oRs.close

sSQL = "SELECT ID FROM FORUM_MESSAGES WHERE PARENTMESSAGE = " & IDoCmd.CommandText = sSQL

oCmd.CommandType = 1

set oRs = oCmd.execute

if ors.eof and iIndent = 0 then

sAns = ""

else

do while not oRs.eof

sAns = sAns & MessageChildren(oRs("ID"), iIndent + 1, iCurrentMessage)

oRs.MoveNext

Loop

end if

oRs.Close

set oRs = nothing

set oCmd = nothing

Trang 16

set Param = cmd.CreateParameter("MESSAGEID", 3, 1)

<TITLE>FORUM THAO LUAN DONG DO></TITLE>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">

</HEAD>

<BODY BGCOLOR = "#FFFFFF">

<CENTER><H2>Dien dan DONGDO </H2></CENTER>

<%

if not bValid then

response.write "You cannot navigate to this page without selecting a forum message Please "response.write "return to the <A HREF = 'default.asp'>forum index</A> and try again."

Trang 17

<INPUT TYPE="HIDDEN" NAME="MessageID" VALUE="<%= iMessageID %>">

<INPUT TYPE="HIDDEN" NAME="ThreadID" VALUE="<%= iThreadParent %>">

<INPUT TYPE="HIDDEN" NAME="Topic" VALUE="<%= rs("Topic") %>">

<INPUT TYPE="HIDDEN" NAME="OrigAuthor" VALUE="<%= rs("AuthorName") %>">

response.write "<HR HEIGHT = 1 NOSHADE><CENTER><B>Entire Thread</B><P>"

response.write "<TABLE WIDTH = '100%'>"

response.write "<TR><TD><B><FONT COLOR = 'RED'>Chu de</FONT></TD>"

response.write "<TD><B><FONT COLOR = 'RED'>Ngay gui len</FONT></B></TD>"

response.write "<TD><B><FONT COLOR = 'RED'>Viet boi</FONT></B></TD></TR>"

response.write sThread

end if

%>

</TABLE>

<! #include file = "footer.inc" >

<! #include file = "database_cleanup.inc" >

</body>

</HTML>

7 Gửi tin nhắn thảo luận một chủ đề đã có trong diễn đàn File reply.asp

- File này sẽ được kích hoạt khi người dùng xem 1 tin nhắn, một loại chủ đề nào đó trong diễn đàn và nhấn vào nút reply người dùng cũng cần phải điền đủ các thông tin như tên đăng nhập,hòm thư đầy đủ, riêng phần chủ đề là có sẵn: RE:……

Trong xử lý CSDL Giả sử một trang màn hình cho hiện 20 kết quả Khi số lượng bản ghi tìm được nhiều hơn 20 kết quả thì việc phân trang được đặt ra

Kỹ thuật này được minh hoạ trong file default.asp, mình muốn mọi người vọc file này thành một thuật toán (giả lệnh), sau đó post lên để các thành viên chúng ta tìm hiểu nhé?!

Ví dụ bắt đầu như sau:

Một số các biến:

Ngày đăng: 10/07/2014, 09:16

TỪ KHÓA LIÊN QUAN

w