Hej igen!
Nu har vi kommit till den "sista" delen av denna serie. Självklart är detta inte alla man kan göra, utan det finns mycket mer, men det överlåter jag till er själva. Man kan t.ex. göra att man kan redigera trådarna, radera dem, låsa dem och mycket mer. Men jag gör dessa skript för att lära er principen, sen får ni låta fantasin flöda :)
I denna artikel kommer vi att göra följande:
Självklart måste vi kunna svara på en tråd, eller hur? Längst ned (eller var du nu vill ha formuläret) på ForumRead.asp kommer vi att skapa följande formulär:
<form name="ans" id="ans" method="post" action="?id=<%=intID%>&action=answer">
<textarea name="msg" id="msg" rows="5" cols="40"></textarea><br />
<input type="submit" name="submit" id="submit" value="Svara" />
</form>
Och nu ska vi skapa funktionen som sparar svaret. Den är bäst att placera högst upp på sidan, eller innan alla svar hämtas iallfall, men efter att trådkontrollen har gjorts (den som kollar att tråden existerar). Du kan också välja att ha denna kod i en helt egen fil, men då får du ändra sökvägen i action i formuläret.
Kom ihåg att göra en kontroll själv som kontrollerar att användaren är online, om du vill det dvs. Jag utgår från att du har användarens ID sparat någonstans, t.ex. i en Session, så jag kommer att använda Session("id") som värde för användarens ID.
If Request.QueryString("action") = "answer" Then
strMsg = strRegExp(Request.Form("msg"),5)
If Len(strMsg) < 2 Then
Response.Write("Ditt svar måste vara minst 2 tecken långt")
Else
Call funcConnect()
Connect.Execute("INSERT INTO tblForumsPosts(frpText,frpCreated,frpPostID,frpUserID) VALUES('"&strMsg&"','"&Now()&"',"&intID&","&Session("id")&")")
Call funcDisconnect(1)
Response.Write("Ditt svar har skickats")
End If
End If
För att göra det behöver vi en helt ny sida som vi kallar för ForumWrite.asp. Först skapar vi formuläret och loopar ut alla forum som ska användas.
<form name="create" id="create" action="ForumCreate.asp" method="post">
<input type="text" name="topic" id="topic" /> Rubriken<br />
<select name="forum" id="forum">
<%
Call funcConnect()
Set RecSet = Connect.Execute("SELECT * FROM tblForums WHERE frmMaster = 0 ORDER BY frmOrder ASC")
If RecSet.EOF Then
Call funcDisconnect(3)
Response.Write("<option value=""0"" selected=""selected"">Inga forum hittades</option>")
Else
arrForums = RecSet.GetRows()
Call funcDisconnect(3)
For i = 0 To Ubound(arrForums,2) Step 1
Response.Write("<option value="""&arrForums(0,i)&""">"&arrForums(1,i)&"</option>")
Next
</select>
<textarea name="msg" id="msg" rows="5" cols="40"></textarea><br />
<input type="submit" name="submit" id="submit" value="skapa" />
</form>
%>
Som du märker så har jag rålistat alla forum ovan, du kan göra som vi gjort på AspKoll.se och dela upp de under kategorier. Det är upp till dig.
Nu är det dags att skapa tråden. Först och främst kontrollerar vi att det valda forumet existerar och att längden på rubriken och meddelandet är tillräckligt långt.
strSubject = strRegExp(Request.QueryString("subject"),5)
strMsg = strRegExp(Request.QueryString("msg"),5)
strForum = strRegExp(Request.QueryString("forum"),1)
If isNumeric(strForum) Then
Call funcConnect()
Set RecSet = Connect.Execute("SELECT frmName FROM tblForums WHERE frm ID = "&strForum)
If RecSet.EOF Then
Call funcDisconnect(3)
Response.Redirect("ForumWrite.asp")
Else
Call funcDisconnect(3)
End If
End If
If Len(strSubject) < 5 Or Len(strMsg) < 10 Then
Response.Redirect("ForumWrite.asp")
End If
Call funcConnect()
Connect.Execute("INSERT INTO tblForumsPosts(frpTopic,frpText,frpCreated,frpFirstPost,frpUserID,frpForumID) VALUES('"&strTopic&"','"&strMsg&"','"&Now()&"',1,"&Session("id")&","&strForum&")
.....KODEN FORTSÄTTER NEDAN, JAG SKA BARA FÖRKLARA EN GREJ....
Varför tar jag en paus nu från koden? Jo för att förklara koden jag ska fortsätta med nedan.
Nu när vi har skapat tråden så måste vi uppdatera den och ta reda på det ID som den tilldelades, detta för att hela vårt skript/forum ska kunna fungera ordentligt.
Set RecSet = Connect.Execute("SELECT @@IDENTITY AS NewID")
newID = RecSet.Fields("NewID").value
Call funcDisconnect(2) Och nu uppdaterar vi tråden:
Connect.Execute("UPDATE tblForumsPosts SET frpPostID = "&newID&" WHERE frpID = "&newID)
Call funcDisconnect(3)Och sen skickar vi användaren till tråden:
Response.Redirect("ForumRead.asp?id="&newID)På bara 4 artiklar har vi skapat ett forumsystem som innehåller:
Det enda som saknas är att du ska anpassa detta efter din egen sida, både design och uppläggmässigt. Hoppas dessa artiklar har hjälpt dig lite grann.
Observera att felstavningar kan förekomma.
Skapades: 2007-08-01 15:44:38
Skribent: Shadi
Lästs 738 gånger
Betyg: 0 (artikeln har endast 2 röster, det krävs minst 5 för ett betyg)
Ingen har kommenterat denna artikel än.