webForumDet fria alternativet

BOF/EOF-fel

ASP

6 svar · 250 visningar · startad av bassebhu

Medlem sedan nov. 20016 480 inlägg
Frågan#1

Hej!

Jag försöker köra den bifogade koden.
Men det går inte som jag vill.
Det är tänkt att man ska loopa ut kategorier och forum från en kategoritabell. Sedan ska man skriva ut senast uppdaterade post i en annan tabell som heter forum. denna forumtabell är kopplad till kategoritabellen med gemensamma "cat" och "forum".

jag försöker hämta senaste uppdaterade med top 1. men om den inte hittar något inlägg i en kategori/forum så vägrar den fortsätta söka i nästa av nån anledning.

för att få fram senaste inläggen måste jag därför skriva ett inlägg i varje forum/kategori.

varför blir det så? det funkar om jag väljer att bara hämta från en enda kategori av nån annan skum anledning...

en sista sak:
om jag tar bort
If RecSet2.Eof Then
noposts = "yes"
osv
så får jag

"Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record."

rätt självklart eftersom jag inte har några poster i alla forum/kategorier.

kort sagt: han vägrar fortsätta leta efter senaste inlägg om han stöter på ett tomt recordset...

ni får gärna hjälpa mig att snygga till koden också ;)

					  <%SQL = "SELECT * FROM categories ORDER BY cat, forum"
	RecSet.Open SQL, Connect, 3,3
	If RecSet.EOF Then%>
					Inga forum skapade
	<%Else
	Do until RecSet.EOF
	
	forume = RecSet("forum")
	cate = RecSet("cat")
	
	SQL2 = "SELECT Top 1 * From forum Where forum = '"&forume&"' And cat = '"&cate&"' Order by date desc"
	Set RecSet2 = Connect.Execute(SQL2)
	
	If RecSet2.Eof Then
	noposts = "yes"
	Else
	threadid = RecSet2("extra1")
	lastpostid = RecSet2("id")
	lastwriter = RecSet2("from")
	lastpostdate = RecSet2("date")
	End If
	
	
	SQL4 = "SELECT Count(*) From forum Where forum = '"&forume&"' And cat = '"&cate&"' And NOT visible = 'hidden' And extra1 = 'thread'"
	Set RecSet4 = Connect.Execute(SQL4)
	threads = RecSet4.Fields(0)
	SQL3 = "SELECT Count(*) From forum Where forum = '"&forume&"' And cat = '"&cate&"' And NOT visible = 'hidden' And NOT extra1 = 'thread'"
	Set RecSet3 = Connect.Execute(SQL3)
	answers = RecSet3.Fields(0)
	
	
	used_cat = cat
	cat = RecSet("cat")
	If NOT cat = used_cat Then%>
					<a href="cat.asp?cat=<%=RecSet("cat")%>"><%=RecSet("cat")%></a>
	<%End If%>
<%
					If noposts = "yes" Then
					Response.Write "-"
					Else
					Response.Write "<font color=""#666666"">"&left(lastpostdate, 10)&"</font> "&right(lastpostdate, 8)&"<br>av "
						  Response.Write "<a href=""profile.asp?user="&lastwriter&""">"&lastwriter&"</a> "&"<a href=""thread.asp?cat="&RecSet("cat")&"&forum="&RecSet("forum")&"&threadid="&threadid&"#"&lastpostid&""">»</a>"
					End If 
RecSet.MoveNext
	Loop
	End If
	RecSet.Close%>
Medlem sedan nov. 20016 480 inlägg
#2

tillägga: som det ser ut nu så skriver den bara ut "-" från noposts på alla ställen

Medlem sedan dec. 200012 464 inlägg
#3

Varför har du med kolumnen forum i tabellen categories?

Beskriv hur tabellerna är definierade.

Medlem sedan nov. 20016 480 inlägg
#4

i categories har jag främst:
id (räknare)
cat (kategori)
forum (forum)
info (info)

jag har med forum för att jag skapar forum/kategorier i den tabellen.

när jag sedan skapar ett inlägg i forumtabellen så sparar jag att den ska hamna i t.ex. kategorin A och forumet A

Medlem sedan nov. 20016 480 inlägg
#5

alltså jag får allt att funka om jag skapar ett inlägg som hämtas till varje kategori, men han vägrar hämta senast postade inlägg i en kategori om han misslyckats att hämta från en tom först...

Medlem sedan dec. 200012 464 inlägg
#6

Jag skulle dela upp det i flera tabeller

categories

forums

threads

posts

Men det är jag det. Jag skulle heller inte döpa någon kolumn till from eller date.

Vilken databashanterare gäller det?

Nedanstående fråga skulle kunna användas för att hämta allt i ett

select c.forum,c.cate, forum.id,extra1,[from],[date], 
    (select count(*) from forum 
      where forum = c.forume
        And cat = c.cat
        And visible <> 'hidden' 
        And extra1 = 'thread'),
    (select count(*) from forum 
      where forum = c.forume
        And cat = c.cat
        And visible <> 'hidden' 
        And extra1 <> 'thread')
 from cate c inner join forum f
   on c.cate = f.cate 
   and c.forum = c.forum
 where f.date in (
   select max([date] from forum
    where forum = f.forum
      and cate = f.cate)
union
select forum,cate, 0,'','',null, 0,0
   from cate c 
 where not exists (select * 
 from forum 
 where forum = c.forum
  and cate = c.cate
Medlem sedan nov. 20016 480 inlägg
#7

neat! ska fundera

fick hjälp på annat håll också. det jag missat var att jag inte tömt variabeln noposts mellan varje check! tack ändå...!

253 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)