du skapar en tabell som heter kommentarer och har ett fält som heter typ nyhets_id ..
behöver du mer förklarning?
------------------
-------------------
Andreas Lännerberg
Jag hör till dom som betalar mina räkningar med glädje, men dom vill hellre ha betalt i pengar.
(jag säger härmed inte att denna applikationen är "bäst", så bespara inlägg i den tonen)
[stort r] Kommer på i efterhand att XcNews inte alls har någon sådan funktion, utan jag syftade på NewsSystem på http://www.episodex.de/ (nåja, X var ju med i båda namnen i alla fall...)
Alltså detta är inte ett inlägg i den "tonen", hoppas det inte uppfattas så. Men det mest intressanta med att göra asp lösningar enligt mig är att sitta och skissa på hur du ska lösa ett problem. Hur man ska utföra det hela, och sen genomföra det i ASP.
Jag hade gjort såhär:
två tabeller
- nyheter
- kommentarer
Det kvittar hur nyheter ser ut bara man har unikt ID på varje nyhet.
Sen i kommentarer har du typ fälten ID, Nyhets_ID, Kommentar (och eventuella mer fält du vill ha). Sen bara skriver du i ASP, inte så himla svårt =)
Kanske inte den bästa lösningen, tror dock att det är den enklaste.
Ha d gutt!
Jymdis
------------------
-------------------
Andreas Lännerberg
Jag hör till dom som betalar mina räkningar med glädje, men dom vill hellre ha betalt i pengar.
hmm har ett problem, när man ska kommentara en nyhet vill jag att man ska se hur många som redan kommenterat, aldrig använt detta förut men förstått att det ska vara ngt i stil med detta:
SELECT COUNT(*) FROM tab2 WHERE NewsID=31
men hur använder jag detta så att siffran skrivs ut?
hmm förstår ändå inte riktigt hur jag använder det.. ska det lixom ingå i loopen som loopar ut allting? eftersom satsen blir ju olika för varje nyhet som finns... e fdt kass på detta =/
såhär ser min sida ut som jag ska använda det på
session.lcid=1053
mypage = Request("whichpage")
If mypage = "" then
mypage = 1
End If
mypagesize = 5
SQL = "Select * From tab1 Order by NewsID desc"
Set rstemp = Server.Createobject("ADODB.Recordset")
rstemp.cursorlocation = 3
rstemp.cachesize = 5
MdbFilePath = Server.MapPath("\marsey\db\tdnews.mdb")
rstemp.open SQL, "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
If rstemp.EOF then
Response.write "Där fanns det ju inget... " & sok
Else
rstemp.movefirst
rstemp.pagesize = mypagesize
maxcount = Cint(rstemp.pagecount)
rstemp.absolutepage = mypage
howmanyrecs = 0
howmanyfields = rstemp.fields.count -1
Do While Not RStemp.EOF AND howmanyrecs < rstemp.pagesize
counter = counter + 1
If counter mod 2 = 0 then
color = "CCCC99"
Else
color = "CCCC66"
End If
[b]Response.write "<TR><TD WIDTH='375'><TABLE BORDER='0'><TR><TD WIDTH='375' BGCOLOR='#f6f7e5' background='bgpattern.jpg'><font size='1' face='verdana'>" & RStemp("datumet") & ": <B>" & RStemp("Rubrik") & "</B>-<a href='mailto:" & RStemp("Email") & "'>" & RStemp("Nick") & "</a></TD></TR><TR><TD WIDTH='375' BGCOLOR='DFDFC0'><font size='1' face='verdana'>" & RStemp("Nyhets") & "</TD></TR><TR><TD WIDTH='375' BGCOLOR='DFDFC0'><font size='1' face='verdana'><a href='view.asp?newsID=" & RStemp("newsID") & "'>Kommentera (<font color='FFFFFF'>5</font> )</a></TD></TR></TABLE>"[/b]
rstemp.movenext
howmanyrecs = howmanyrecs + 1
Loop
rstemp.close
Set rstemp = nothing
%>
<tr><td><center><font size="1" face="verdana">
<%
If maxcount <> 0 then
response.write "sida " & mypage & " av " & maxcount & "<br>" & sidor:
pad = " "
scriptname = request.Servervariables("script_name")
for counter = 1 to maxcount
If counter >= 5 then
pad = ""
End If
%><%
ref = " <a href='" & scriptname & "?whichpage=" & counter & "&pagesize=" & mypagesize & "'>" & pad & counter & "</a> "
response.write ref & " "
if counter mod 5 = 0 then
response.write ""
End If
Next
End If
End If
markerat där jag vill ha det utskrivet.. hur lägger jag in det så?
har ju redan något som heter "SQL = blabla" å ett rs.. kan man ha dem i varandra?:)
doh redan ett nytt problem..
kan man inte göra såhär?
SELECT * FROM tab1 WHERE newsID ='Request.QueryString('newsID')
felmeddelande:
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'newsID = 'Request.QueryString('newsID')''.
oh.. tnx
fixat allt nu å det funkar :>
men hur får jag så att det står i kommentarerna vikket nummer det är.
altså så att den femte kommentaren på en nyhet får #5, har 2 tabeller nu å 2 sorters ID, ComID å NewsID ...
Du får nog ha en egen räknare som håller reda på kommentarsnummer.
oldNewsId = 0
while not rstemp.eof
if clng(oldNewsId) <> clng(rstemp("newsId")) then
comNo = 1
oldNewsId = clng(rstemp("newsId"))
else
comNo = clng(comNo) + 1
end if
'skriv ut saker och ting
'
rstemp.movenext
wend
------------------ essentitia preter non sans multiplicandum
Det är väl inte så mycket att förklara. För varje ny post som hämtas från databasen så kollar jag om det var samma nyhetsid som föregående post. Om det är samma så räknar jag upp comNo med ett annars så återställer jag den till ett. I och med att jag sätter newsId till 0 utanför loopen så kommer comNO att sättas till 1 för första posten då det inte finns någon post som har newsId 0.
Det här fungerar då det ligger en order by newsID desc med i select-satsen så att alla poster med samma newsID kommer samlat.
5 rader kod säger mer än 1000 bytes ;)
------------------ essentitia preter non sans multiplicandum
254 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e