webForumDet fria alternativet

Nyheter med kommentarfunktion?

ASP

16 svar · 241 visningar · startad av MaRseY

Medlem sedan maj 2001178 inlägg
Frågan#1

tänkte försöka avancera mitt nyhetsscript lite så att man kan lägga in kommentarer till varje nyhet.

Hur bygger man upp det å vad använder man? vet inte alls hur jag ska göra..

så skulle behöva nån slags mall att följa :)

------------------
/MaRseY

Medlem sedan mars 20016 260 inlägg
#2

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.

Medlem sedan juni 20019 024 inlägg
#3

Se och lär av XcNews på
http://www.xcent.com/scripts/download.asp?file=xcnews16.zip

(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...)

------------------
Peter D

[Redigerat av Pace den 26 aug 2001]

Medlem sedan mars 20016 260 inlägg
#4

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.

Medlem sedan maj 2001178 inlägg
#5

ne tror jag hajjar.. får väl försöka sätta mig in i det nurå :)

------------------
/MaRseY

Medlem sedan maj 2001178 inlägg
#6

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?

------------------
/MaRseY

Medlem sedan dec. 200012 464 inlägg
#7
sql = "SELECT COUNT(*) as antal FROM tab2 WHERE NewsID=31"
set rs = connect.execute(sql)

response.write rs("antal")

är ett sätt.

sql = "SELECT COUNT(*) FROM tab2 WHERE NewsID=31"
set rs = connect.execute(sql)

response.write rs(0)

är ett annat.

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#8

Ett snabbare sätt om jag får tillägga. :)

------------------
Peter D

Medlem sedan maj 2001178 inlägg
#9

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") & ":&nbsp;&nbsp;<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 = "&nbsp;"
   scriptname = request.Servervariables("script_name")
   for counter = 1 to maxcount
   If counter >= 5 then
      pad = ""
   End If
%><%

   ref = "&nbsp;<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?:)

------------------
/MaRseY

Medlem sedan dec. 200012 464 inlägg
#10

Okej, om du använder denna SQL-sats

SQL = "Select tab1.*,(select count(*) from tab2 " & _
" where tab2.newsID = tab1.newsID) as antal From tab1 " & _ 
" Order by NewsID desc"

i stället för den som du har nu så borde du komma åt antalet kommentarer med


response.write rstemp("antal")

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 2001178 inlägg
#11

oh, tnx a lot, funka nu!:)
fast skrev då

" & RStemp("antal") & "

inuti den respons.write jag redan hade.

tnx tnx

------------------
/MaRseY

Medlem sedan maj 2001178 inlägg
#12

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')''.

/marsey/tdnews/view.asp, rad 35

------------------
/MaRseY

Medlem sedan dec. 200012 464 inlägg
#13

Nej, det kan man verkligen inte. Hur skulle det bli?

sql = "SELECT * FROM tab1 " & _
" WHERE newsID = " & Request.QueryString("newsID")

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 2001178 inlägg
#14

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 ...

------------------
/MaRseY

Medlem sedan dec. 200012 464 inlägg
#15

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

Medlem sedan maj 2001178 inlägg
#16

oki... skulle du kunna förklara lite vad koden gör oxå? så man lär sig ngt ;)

------------------
/MaRseY

Medlem sedan dec. 200012 464 inlägg
#17

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
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)