webForumDet fria alternativet

Nytt Script på wF Script!

95 svar · 768 visningar · startad av PatrikB · sida 4 av 5

LukaspojkenMedlem sedan maj 20011 312 inlägg
#61

Jo, men du hämtar hela tabellen med getrow. Det jag menar är att en funktion ska användas för att göra SQL-satsen effektivare dvs

Select TOP " & intervall & "blabla

Tex.
intervall = 50 (som är page 1)
intervall = 50-100 (som är page 2)
intervall = 100-150 (som är page 3)
etc.

Men för att göra detta så krävs det att man kör en count på antal poster i tabellen, och det gick väl inte?

------------------
Alltid lär man sig något nytt varje dag...

PatrikBMedlem sedan mars 20002 836 inlägg
#62

Som jag sade, du kan göra det med en subquery i din sql-sats, fast mot access2k db-filen så var det ingen höjdare prestandamässigt.
På något annat sätt kan du inte veta vilket id som sida 3 börjar med om du inte "hämtar alla id'n" och sedan räknar ut vilka id'n som varje sida börjar med.

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

PatrikBMedlem sedan mars 20002 836 inlägg
#63

med denna kod kan du göra listningen:

intPage = Request.QueryString("page")
If intPage = "" Then intPage = 1

intPageSize = 20

intSelectTop = intPage x intPageSize

strSQL = "SELECT TOP " & intSelectTop & " FLD_FIELD_ID, FLD_FIELD_VALUE " & _
	"FROM TBL_TABLE_NAME "

	If Clng(intPage) > 1 Then
		strSQL = strSQL & "WHERE NOT FLD_FEILD_ID IN (" & _ 
	    		"SELECT TOP " & intSelectTop & " FLD_FIELD_ID " & _
	   		 	"FROM TBL_TABLE_NAME " & _
	    			"ORDER BY FLD_FIELD_VALUE DESC) "
	End If

strSQL = strSQL & "ORDER BY FLD_FIELD_VALUE DESC"

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

RinaldoMedlem sedan mars 20014 214 inlägg
#64

hmm, fattar inte hur man ska byta stil på länkarna. Har en länkmodell som heter blacklink.
Hur lägger man in den stilen.
Detta funkar inte:

	'## -- skriv ut en länk till föregående sida --
	If CInt(WichPage) > 1 Then
		Response.Write "<A class="blacklink" href='" & strScriptName & "?" & _
			"page=" & WichPage - 1 & "'><< Föregående</A> "
	Else
		Response.Write "<< Föregående "
	End If

------------------
Man kan ta den säkra vägen: Göra en stilren sida, snygg men lätt.
Eller så kan man ta den svåra: Mycket grafik och flashiga ting, och riskera att mislyckas.

PatrikBMedlem sedan mars 20002 836 inlägg
#65

testa detta:

'## -- skriv ut en länk till föregående sida --
If CInt(WichPage) > 1 Then
Response.Write "<A class=""blacklink"" href='" & strScriptName & "?" & _
"page=" & WichPage - 1 & "'><< Föregående</A> "
Else
Response.Write "<< Föregående "
End If

Du ser att jag lagt till extra dubbelfnuttar vid css-namnet.

cya,
patrikB

------------------
*Det tar sig sa han som hade eld i håret*

RinaldoMedlem sedan mars 20014 214 inlägg
#66

tack, det funkade utmärkt

------------------
Man kan ta den säkra vägen: Göra en stilren sida, snygg men lätt.
Eller så kan man ta den svåra: Mycket grafik och flashiga ting, och riskera att mislyckas.

RinaldoMedlem sedan mars 20014 214 inlägg
#67

tack, det funkade utmärkt

------------------
Man kan ta den säkra vägen: Göra en stilren sida, snygg men lätt.
Eller så kan man ta den svåra: Mycket grafik och flashiga ting, och riskera att mislyckas.

RinaldoMedlem sedan mars 20014 214 inlägg
#68

tack, det funkade utmärkt

------------------
Man kan ta den säkra vägen: Göra en stilren sida, snygg men lätt.
Eller så kan man ta den svåra: Mycket grafik och flashiga ting, och riskera att mislyckas.

LukaspojkenMedlem sedan maj 20011 312 inlägg
#69

Hej Patrik!
Jag kör ditt script och det fungerar bra men nu har jag 228 inlägg. 50 inlägg per sida. Det borde bli 5 sidor men det blir 4. De 28 sista sidorna kan man inte se?

(Jag har också laggt in din buggfix)

------------------
Alltid lär man sig något nytt varje dag...

PatrikBMedlem sedan mars 20002 836 inlägg
#70

Om du postar hur din kod ser ut så kan vi ta det därifrån.

Omöjligt att säga något om vad det kan vara utan att se koden.

cya,
PatrikB

------------------
*ordning och reda!, pengar på fredag.*

LukaspojkenMedlem sedan maj 20011 312 inlägg
#71

Här är koden:

'## -- hämta alla poster --
	Function getRecords

		DB_koppling

		strSQL = "SELECT ff.msgId, ff.msgFrom, ff.msgTopic, ff.msgRead, ffup.msgUpdate, ffup.msgAntal FROM forum AS ff INNER JOIN forumUpdate AS ffup ON ff.msgID = ffup.msgID " & _
			"WHERE ff.Thread_ID=0 AND ff.forumCategoryID=" & forumCategoryID & " ORDER BY ffup.msgUpdate DESC"
			
			Set RecSet = Connect.Execute(strSQL)
			
			IF NOT RecSet.EOF THEN
				arrRecords = RecSet.GetRows
				getRecords = arrRecords
			End If
				
		RecSet.Close
		Set RecSet = Nothing
		Connect.Close
		Set Connect = Nothing

	End Function

	'## -- skriver ut sidnavigeringen --
	'## -- skriv ut föregående sida --
	Sub PrevPage(ByVal WichPage)
		Dim strScriptName
		strScriptName = Request.ServerVariables("SCRIPT_NAME")

		'## -- skriv ut en länk till föregående sida --
		If CInt(WichPage) > 1 Then
			Response.Write "<A href='" & strScriptName & "?alt=huvud&forumCategoryID=" & forumCategoryID & "&forumName=" & forumName & "&" & _
				"page=" & WichPage - 1 & "' class=minilink>Föregående</A> - "
		Else
			Response.Write "<a href='forum.asp?alt=huvud&forumCategoryID=" & forumCategoryID & "&forumName=" & forumName & "' class=minilink>Föregående</a> - "
		End If
	End Sub

	'## -- skriv ut nästa sida --
	Sub NextPage(ByVal HowManyPages, ByVal WichPage)
		Dim strScriptName
		strScriptName = Request.ServerVariables("SCRIPT_NAME")
	
		'## -- skriv ut en länk till nästa sida --
		If CInt(WichPage) < CInt(HowManyPages) Then
			Response.Write "<A href='" & strScriptName & "?alt=huvud&forumCategoryID=" & forumCategoryID & "&forumName=" & forumName & "&" & _
				"page=" & WichPage + 1 & "' class=minilink>Nästa</A>"
		Else
			Response.Write " <a href='forum.asp?alt=huvud&forumCategoryID=" & forumCategoryID & "&forumName=" & forumName & "&page" & wichPage & "' class=minilink>Nästa</a>"
		End If

	End Sub

	'## -- skriv ut sidnummer navigeringen --
	Sub PageNumbers(ByVal HowManyPages, WichPage)
		Dim strScriptName
		Dim I
	
		'## -- kolla om det finns några sidor --
		If HowManyPages = 0 Then
			Response.Write "0"
			Exit Sub
		End If
	
		strScriptName = Request.ServerVariables("SCRIPT_NAME")

		'## -- skriv ut länkar till sid nummer n. 
		'##    Den sida som visas ska ej vara länkad --
		For I = 1 To HowManyPages
			If CInt(I) <> CInt(WichPage) Then
				Response.Write "<A href='" & strScriptName & "?alt=huvud&forumCategoryID=" & forumCategoryID & "&forumName=" & forumName & "&" & _
					"page=" & I & "' class=minilink>" & I & "</A> - "
			Else
				Response.Write "<B>" & I & "</B> - "
			End If
		Next

	End Sub

	'## -- vilken post ska pagingen börja på --
	Function getStartID(ByVal PageSize, ByVal ViewPage) ' As Integer
		Dim m_intStart
		m_intStart = ((PageSize * ViewPage) - PageSize)
		getStartID = m_intStart
	End Function

	Function countPages(ByVal HowManyRecords, ByVal PageSize)
		Dim m_intTotalPages, m_intRest

		m_intTotalPages = HowManyRecords / PageSize

		If m_intTotalPages < 1 Then
			m_intTotalPages = 1
		Else
			m_intRest = m_intTotalPages - CLng(m_intTotalPages)
		
			If m_intRest > 0 AND m_intRest < 0.5 Then
				m_intTotalPages = CLng(m_intTotalPages) + 1
			Else
				m_intTotalPages = CLng(m_intTotalPages)
			End If
		End If

		'## -- return how many pages --
		countPages = m_intTotalPages
	End Function

	'##***********************************************************************************

	Dim intPageSize
	Dim intPage
	Dim intStartID
	Dim color
	Dim counter
	Dim intTotalPages
	Dim intTotalRecords
	Dim u

	'## -- vilken sida ska visas --
	intPage = Request.QueryString("page")
	If intPage = "" Then intPage = 1

	'## -- hur många poster ska visas per sida --
	intPageSize = 50

	'## -- hämta alla records, hämtas med metoden getrows och returneras 
	'##    som en array. --
	arrRecords = getRecords

	'## -- vilken post är den första --
	intStartID = getStartID(intPageSize, intPage)

	'## -- printa ut sidan som ska visas
	'##    alla poster finns i arrayen arrRecords som
	'##    kommer från funktionen getRecords --
	IF IsArray(arrRecords) THEN
		'Response.Write "E ju en array<BR>"
		'## -- hur många records finns det totalt --
		intTotalRecords = UBound(arrRecords,2) + 1
	
		'## -- hur många sidor finns det i recordsetet --
		intTotalPages = countPages(intTotalRecords, intPageSize)			

			'## -- skriv ut sidnavigerings menyn --

			response.write "HTML"

			Call PrevPage(intPage)

			Call PageNumbers(intTotalPages,intPage)

			Call NextPage(intTotalPages,intPage)

			response.write "HTML"

	For I = intStartID To ((intStartID + intPageSize) -1)

		response.write "HTML"

		IF I = UBound(arrRecords,2) THEN Exit For
	Next

Det underliga är att det fungerar nu. Men nu är det 229 inlägg istället för 228?

------------------
Alltid lär man sig något nytt varje dag...

PatrikBMedlem sedan mars 20002 836 inlägg
#72

Kan inte se något fel så här på rak arm.

Om du nu tar bort ett inlägg så att du får 228 st inlägg igen, funkar det då eller får du samma fel igen?

Det jag kan tänka mig är att själva sidräkningen inte funkar, dvs funktionen countPages returnerar fel antal sidor. Men när jag testkör den funktionen med 228 records och 50 records per sida så returnerar den 5 sidor.

cya,
PatrikB

------------------
*ordning och reda!, pengar på fredag.*

svenMedlem sedan aug. 2001383 inlägg
#73

Skulle bara säga... Testade och fick scriptet att funka, dock efter en del gråa hår. Eftersom jag egentligen inte vet vad skriptet gör (i alla fall inte allt *L*). Men skam den som ger sig.

Men mitt i allt hårslitande sökte jag också hjälp på andra håll. Hittade då detta. Kan kanske vara bra för andra. PagingGenerator Jag testade och fick det att funka på en gång. Även om färgerna kanske inte var så görsnygga...

------------------
/Sven

jimpaMedlem sedan jan. 2001361 inlägg
#74

Hej,

Om jag har 2st tabeller i db
Forum och Forum_svar
Med paging-scriptet listar jag alla svar

SQL = "Select * From [Forum_svar] Where SvarID= " & [ID] & " Order by dte DESC"

Alla inlägg som medlemmarna postar räknas separat d.v.s en räknare i tabellen Forum och en i Forum_svar. För att kunna räkna ut den totala summan inlägg/medlem så måste jag samtidigt i lopen få med värdet från räknaren i tabellen Forum går det?
I så fall hur?!

mvh Jimpa

jimpaMedlem sedan jan. 2001361 inlägg
#75

Hello

Är det ingen som kan eller är min förklaring så dålig, så att ingen förstår?!

Mvh

LarsGMedlem sedan dec. 200012 464 inlägg
#76

Jag hade lite svårt att förstå. Vad har antal inlägg per medlem med saken att göra?

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

jorgenMedlem sedan feb. 20012 412 inlägg
#77

Hej!

Detta har ju inte med pagingen att göra. Men det enklaste för att slippa en massa joinar och extra SQL-frågor är att du har ett fält i tabellen för medlemmarna som du adderar med 1 varje gång en medlem gör ett inlägg. Eftersom jag antar att du vill visa vem som gjort inlägget får du ändå göra en join och då kan du lika gärna hämta det fältet också.

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

jimpaMedlem sedan jan. 2001361 inlägg
#78

Hej

En join!
Hur gör man då?

Det jag måste få med i min SQL är
Fältet Count i Tabellen Forum

Just nu ser min SQL-sats ut så här:

SQL = "Select * From [Forum_svar] Where SvarID= " & [ID] & " Order by dte DESC"

Mvh

[Redigerat av jimpa den 04 nov 2001]

[Redigerat av jimpa den 04 nov 2001]

jorgenMedlem sedan feb. 20012 412 inlägg
#79

Hej!

Hur ser dina tabeller ut?
och vad vill du presentera för data?

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

jimpaMedlem sedan jan. 2001361 inlägg
#80

Hej

Det jag måste få med i min SQL är
Fältet Count i Tabellen Forum

Just nu ser min SQL-sats ut så här:

SQL = "Select * From [Forum_svar] Where SvarID= " & [ID] & " Order by dte DESC"

Mvh

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)