MethodMedlem sedan apr. 2001357 inlägg Jag använder mig av Patrik B paging script, jag visra fyra poster per sida men på ett kontor där jag har fyra kontaktpersoner blir det fel den säger att det finns två sidor men klickar man på nästa så hittar den inte sidan.
Det finns bara 4 kontaktpersoner på Stockholm i databasen.
Hur kommer det sig att pagingscriptet tror att det är 2 sidor???
Ni kan kolla närmare på problemet på denna adressen :
http://www1.bengtdahlgren.se/kontakt/kontaktpers.asp?Kontor=Stockholm
tack på förhand
Jonas
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar!
Med ett hugg faller inget träd
[Redigerat av Method den 28 jun 2001]
PatrikBMedlem sedan mars 20002 836 inlägg Hur ser din kod ut nu??
cya,
ParikB
------------------
*Det tar sig sa han som hade eld i håret*
MethodMedlem sedan apr. 2001357 inlägg så här:
<%
Dim kontor
kontor = Request.Querystring("kontor")
'## -- hämta alla poster --
Function getRecords
Dim m_objConn
Dim m_strConnString
Dim m_strSQL
Dim m_objRS
Dim m_arrRecords
Dim MinCon
m_strConnString = "provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("../../databas/bdab1.mdb")
'## -- skapa connection object och öppna upp databasen --
Set m_objConn = Server.CreateObject("ADODB.Connection")
m_objConn.Open m_strConnString
'## -- sql-fråga för att hämta alla poster --
'## -- denna ska du ändra så att den stämmer
'## med det som du vill hämta --
m_strSQL = "select * from kontaktpersoner, kontor where kontaktpersoner.kontor = kontor.kontor AND kontaktpersoner.kontor = '" & kontor & "' Order By Namn ASC"
'## -- recordset för att hämta alla poster --
Set m_objRS = m_objConn.Execute(m_strSQL)
If Not m_objRS.EOF Then
m_arrRecords = m_objRS.GetRows
getRecords = m_arrRecords
End If
'## -- clean up --
m_objRS.Close
Set m_objRS = Nothing
m_objConn.Close
Set m_objConn = Nothing
End Function
'## -- 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 & "?" & "kontor=" & Server.URLEncode((kontor)) & _
"&page=" & I & "'>" & I & "</A> "
Else
Response.Write "" & I & " "
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_intTotalPages = CInt((HowManyRecords / PageSize) + 0.5)
'm_intTotalPages = CInt(((HowManyRecords / PageSize) + 1) - 1)
countPages = m_intTotalPages
End Function
'##***********************************************************************************
Dim arrRecords
Dim intPageSize
Dim intPage
Dim intStartID
Dim I
Dim intId
Dim Namn
Dim tel
Dim intTotalPages
Dim intTotalRecords
Dim avd
Dim bild
Dim mob
Dim email
Dim intCounter
Dim img
Dim kont
'## -- vilken sida ska visas --
intPage = Request.QueryString("page")
If intPage = "" Then intPage = 1
'## -- hur många poster ska visas per sida --
intPageSize = 4
'## -- 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)
'## -- startar tabellen utanför loopen --
Response.Write "<table border=""0"" cellpadding=""0"" cellspacing=""8"" width=""680"">"
'## -- skriv ut sidnavigerings menyn --
Response.Write "<tr>"
Response.Write "<td align=""left"" colspan=""2"" valign=""top""><span class=""h2"">Kontaktpersoner i " & kontor & "</span></td>"
Response.Write "<td align=""right"" colspan=""2"" valign=""bottom"">Sida: "
Call PageNumbers(intTotalPages,intPage)
Response.Write "</td>"
Response.Write "</tr>"
Response.Write "<tr>"
Response.Write "<td colspan=""4""><hr size=""1"" color=""#000099""></td>"
Response.Write "</tr>"
Response.Write "<tr>"
'## Loopen börjar
For I = intStartID To ((intStartID + intPageSize) -1)
intCounter = intCounter + 1
intId = arrRecords(0,I)
Namn = arrRecords(1,I)
tel = arrRecords(4,I)
avd = arrRecords(3,I)
bild = arrRecords(6,I)
mob = arrRecords(5,I)
email = arrRecords(8,I)
kont = arrRecords(9,I)
If Len(bild) > 0 Then
img ="<img src=""" & bild & """>"
Else
img = ""
End If
Response.Write "<td width=""120"">" & img & "<br><br></td>" & _
"<td valign=""top""><span class=""h2""><br>" & Namn & "</span><br>" & _
"<span class=""bold"">"& avd & "</span><br><br><br><span class=""bold"">Tel: </span>" & tel & "<br><span class=""bold"">Mob: </span>" & mob & "<br><br><br>" & _
"<span class=""bold"">E-mail: </span><br><a href=""mailto:" & email & """>" & email & "</a>" & _
"</td>"
If intCounter mod 2 = 0 Then Response.Write "</tr><tr>"
If I = UBound(arrRecords,2) Then Exit For
Next
'## -- stänger tabellen efter loopen --
If intCounter mod 2 <> 0 Then
Do Until intCounter mod 2 = 0
Response.Write "<td> </td><td></td>"
intCounter = intCounter + 1
Loop
End If
Response.Write "</tr></table><br>"
'## -- skriv ut sidnavigerings menyn --
Call PrevPage(intPage)
Response.Write" "
Call NextPage(intTotalPages,intPage)
'## -- skriver ut sidnavigeringen --
'## -- skriv ut föregående sida --
Sub PrevPage(ByVal WichPage)
Dim strScriptName
strScriptName = Request.ServerVariables("SCRIPT_NAME")
Response.Write "<table border=""0"" cellpadding=""0"" cellspacing=""8"" width=""680"">"
'## -- skriv ut en länk till föregående sida --
If CInt(WichPage) > 1 Then
Response.Write "<tr><td align=""left""><a href='" & strScriptName & "?" & "kontor=" & Server.URLEncode((kontor)) & "&page=" & WichPage - 1 & "'><img border=""0"" src=""../../bilder/pilar/left.gif""> Föregående</a></td>"
Else
Response.Write "<td align=""left""></td>"
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 "<td align=""right""><a href='" & strScriptName & "?" & "kontor=" & Server.URLEncode((kontor)) & "&page=" & WichPage + 1 & "'>Nästa <img border=""0"" src=""../../bilder/pilar/right.gif""></a></td></tr></table>"
Else
Response.Write "<td align=""right""></td></tr></table>"
End If
End Sub
Else
'## -- inga poster fanns i db --
intPage = 0
intTotalRecords = 0
intTotalPages = 0
'## -- skriv ut att inga poster hittades --
Response.Write "<P>Inget hittades i databasen.</P>"
End If
%>
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar!
Med ett hugg faller inget träd
jepsOMedlem sedan mars 2001484 inlägg Jag orkar inte kontrollera hela koden, men den verkar inte gilla &page=2. Skriver du t.ex. &sida=2 är det inga problem.
Testa att byta ut &page= mot &sida= och göra en response.write på antalet poster den hittar, samt HowManyPages-variabeln.
------------------
/ jeps0
MethodMedlem sedan apr. 2001357 inlägg "Testa att byta ut &page= mot &sida= och göra en response.write på antalet poster den hittar, samt HowManyPages-variabeln."
Kan du förklara detta lite närmare.
*vet inte riktigt vad jag skall ändra i koden, vill helst slippa att schabbla till det.. :)*
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar!
Med ett hugg faller inget träd
PatrikBMedlem sedan mars 20002 836 inlägg Du kan inte byta ut page mot sida ... eftersom det är page som styr hela klabbet.
vAd är det som står på rad 198 på urlen du postade ovan?
cya,
PatrikB
------------------
*Det tar sig sa han som hade eld i håret*
MethodMedlem sedan apr. 2001357 inlägg PatrikB, har du nåt föslag på vad det e som e fel..
Är hemskt tacksam för hjälp.
MVH
Jonas
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar!
Med ett hugg faller inget träd
MethodMedlem sedan apr. 2001357 inlägg Det är i denna funktion det blir fel
Function countPages(ByVal HowManyRecords, ByVal PageSize)
Dim m_intTotalPages
m_intTotalPages = CInt((HowManyRecords / PageSize) + 0.5)
'm_intTotalPages = CInt(((HowManyRecords / PageSize) + 1) - 1)
countPages = m_intTotalPages
End Function
När jag använder den övre m_intTotalPages blir det en sida för mycket om antalet records som finns är lika som det antalet som skall visas.
Om jag använder den nedre m_intTotalPages blir det en sida för lite när det är fler records än det antal som skall visas på en sida (alltså fler än en sida).
Någon som kan hjälpa mig.
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar!
Med ett hugg faller inget träd
PatrikBMedlem sedan mars 20002 836 inlägg Om du går till den urlen som du hänvisade till här ovan så får du ett fel på rad 198 .... jag skulle vilja veta vad det är som står på denna rad ... skicka gärna med hela koden och markera vilken som är rad 198.
cya,
PatrikB
------------------
*Det tar sig sa han som hade eld i håret*