Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer
Artiklar > ASP

Skapa forum med kategorier - Del 4

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

I denna artikel kommer vi att göra följande:

  1. Skapa formuläret i ForumRead.asp som ska låta oss svara på den valda tråden
  2. Skapa ForumWrite.asp som ska hjälpa oss att skapa en helt ny tråd

Besvara tråden

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

Skapa en helt ny tråd

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.

Skapa tråden (ForumCreate.asp)

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)

Slutord

På bara 4 artiklar har vi skapat ett forumsystem som innehåller:

  • Kategorier
  • Underforum
  • Trådsvar och trådskapande sidor
  • Vi tog hänsyn till SQL-injection
  • Och mycket mer...

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)

Kommentarer

Ingen har kommenterat denna artikel än.

© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy