Skapa ett enkelt forum
Förord
Ett enkelt forum fungerar ungefär som en gästbok, dock med lite skillnader. Just detta forumet ger dig möjlighet att skapa ett diskussionsämne och sedan låta folk svara inom detta. Inget avancerat alls, men man får en liten uppfattning och grunden till hur man fortbygger sitt forum till ett större och mer avancerat sådant. Låt oss starta!
Databasen
Databasen är en access-databas. Vi ska ha två tabeller, meddelande och svar. Meddelande ska se ut såhär: Det ska finnas fem fält, dessa är SvarID(Räknare), Titel(Text), namn(Text), Epost(text), Meddelande(PM). Svar-tabellen ser då ut sähär: Här gäller 4 fält, SvarID(Tal), Namn(Text), Email(Text), Meddelande(PM).
Filen Default.asp
Nu har det blivit dags att gå igenom filerna, och vi startar med Default.asp.
<%
set connection = Server.createobject("adodb.connection")
set rs = server.createobject("adodb.recordset")
sql = "select * from meddelande"
connection.open strconn, 1, 2
rs.open sql, connection
if rs.eof <> "" then
do until rs.eof
%>
<%
ID = rs("svarid")
%>
<%=rs("titel")%>
<%
response.write "Inlagt av " & rs("namn") & "
"
rs.movenext
loop
end if
%>
Vill Du själv skapa ett ämne att diskutera? Klicka då Här
Denna filen ska nog inte innebära några problem för er. Det den gör är att titta i config.asp efter koppling till databasen, koppla sig och sedan ta fram den data som finns i tabellen meddelande. Det som sedan sker är att det skapas en länk till meddelandet med det SvarID som gäller. Sidan ger även möjlighet till att skapa eget diskussionsämne.
Filen Config.asp
Filen med det viktigaste i formut. Denna lilla rad håller kontakt med databasen, och i och med att vi bara har kopplingen i denna filen slipper man skriva om allting varje gång man behöver något i databasen.
<%
strConn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath("forum.mdb") & ";"
%>
Filen skapa.asp
Som vi såg på default-sidan så fanns det en länk till skapa.asp. Denna sida ger en möjlighet att skapa ett eget ämne att prata om.
Filen Skapat.asp
Som det låter på filnamnet så är det här meddelandet skapas i databasen.
<%
if NOT request.querystring("txtnamn") = "" AND NOT request.querystring("titel") = "" AND NOT request.querystring("meddelande") = "" then
dim namn
dim titel
dim epost
dim meddelande
namn = request.querystring("txtnamn")
titel = request.querystring("titel")
epost = request.querystring("txtEpost")
meddelande = request.querystring("meddelande")
set connection = Server.createobject("ADODB.Connection")
set rs = Server.Createobject("ADODB.Recordset")
connection.open strconn
rs.open "meddelande", strconn, adopendynamic, adlockpessimistic
rs.AddNew
rs("namn") = namn
rs("titel") = titel
rs("epost") = epost
rs("meddelande") = meddelande
rs.update
response.redirect "default.asp"
else
response.write "Du måste fylla i namn, titel och meddelande för att kunna posta något"
end if
%>
Vi ser även att om man i det tidigare skriptet Skapa.asp glömde fylla i namn, titel eller meddelande så får man istället upp ett felmeddelande.
Filen Meddelande.asp
Här ser vi meddelandet som den förste personen skapade, och sedan alla dess svar, mycket enkelt, men endock ett fungerande forum.
<%
set connection = server.createobject("Adodb.connection")
set rs = server.createobject("adodb.recordset")
set rs1 = server.createobject("adodb.recordset")
sql = "select * from svar where svarid = " & request.querystring("fid")
sql1 = "select * from meddelande where svarid= " & request.querystring("fid")
connection.open strconn
rs.open sql, strconn
rs1.open sql1, strconn
%>
<%
response.write "HUVUDMEDDELANDE START
"
response.write "Namn " &rs1("namn") & "
"
response.write "Titel : " &rs1("Titel") & "
"
response.write "Epost : " & rs1("epost") & "
"
response.write "Meddelande: "&rs1("meddelande") & "
"
response.write "HUVUDMEDDELANDE SLUT
"
if rs.eof <> "" then
do until rs.eof
%>
<%
%>
svar <%=antal%>
Namn
<%=rs("namn")%>
Epost
<%=rs("email")%>
Meddelande
<%=rs("meddelande")%>
<%
rs.movenext
loop
end if
%>
Svara på detta meddelande
Filen Svara.asp
Då var vi framme vid den sista filen, och även en bland de viktigaste.
<%
if NOT request.form("txtname") = "" AND NOT request.form("txtmeddelande") = "" then
set connection = server.createobject("Adodb.connection")
set rs = server.createobject("adodb.recordset")
connection.open strconn
rs.open "svar", strconn, adopendynamic, adlockpessimistic
svarID = request.Querystring("fid")
namn = request.form("txtName")
epost =request.form("txtEpost")
meddelande = request.form("txtmeddelande")
rs.addnew
rs("svarid") = svarID
rs("namn") = namn
rs("email") = epost
rs("meddelande") = meddelande
rs.update
rs.close
connection.close
response.redirect request.servervariables("HTTP_REFERER")
else
response.write "Du måste fylla i namn och meddelande för att det ska bli sparat."
end if
%>
Om alla fälten var ifyllda, så startas kopplingen till databasen, den sparar först ID-numret som den sedan använder för att hålla kontakten mellan det första meddelandet, och svaret. Så fort allt har lagrats förs man tillbaks till sidan med det första meddelandet.
Sammanfattning
Nu har du skrivit ditt första Forum. Som du säket märkte var det mycket simpelt, men med lite fantasi kan man lätt bygga ut det och ge det många möjligheter. Exempel på saker man kan lägga till är t.ex. vilket datum meddelandet postades, hur många svar det finns och när det senaste postades. Dock hoppas jag att detta har givit er en inblick och att ni nu förstår uppbyggnaden hos ett enkelt forum.
Fil att tanka
Fil: miniforum.zip
Var denna artikeln användbar?
Om du gör någon intressant (eller kanske något konstigt fel) på grund av detta material så skicka gärna det med ett mail eller bifoga en länk till mig så presenterar jag detta som ytterligare exempelfiler för kursen. Om detta innehållet är felaktigt eller du lärt dig fler finesser så skriv gärna en rad eller varför inte en egen kurs baserat på dina erfarenheter. Sänd gärna in dina tips till denna kurs./Michael Karlsson
0 Kommentarer