Längst upp anger du att variabeln intPage skall innehålla sidonummret, sedan försöker du att använda WichPage längre ned.
Mvh, Vide
11 svar · 407 visningar · startad av Ivar
Hej kan någon se vad är felet går ej att bläddra till sida 2, sida 3, osv.
<%
Dim connect, classifieds, whereclause, query, item
Dim descript, category, stad, pricefrom, priceto
Dim noresults
'## -- hur många inlägg ska visas per sida --
intPageSize = 25
'## -- vilken sida ska visas --
intPage = Request.QueryString("page")
'## -- om ingen querystring med sidvärde hittas, visa då första sidan --
If intPage = "" Then intPage = 1
set connect = server.createobject("ADODB.connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/annonser.mdb") & ";pwd=;"
Set senaste = Server.CreateObject("ADODB.Recordset")
item = trim(request("item"))
category = trim(request("category"))
stad = trim(request("stad"))
priceto = trim(request("priceto"))
pricefrom = trim(request("pricefrom"))
If item = "" and descript = "" and category <> "" and _
stad = "" and pricefrom = "" and priceto = "" then
response.redirect "category.asp?category=" & category
end if
whereclause = "where "
if item <> "" then
whereclause = whereclause & "instr(item,'" & _
item & "')>0 and "
end if
if descript <> "" then
whereclause = whereclause & "instr(description,'" & _
descript & "')>0 and "
end if
if category <> "" then
whereclause = whereclause & "category = '" & _
category & "' and "
end if
if stad <> "" then
whereclause = whereclause & "stad = '" & _
stad & "' and "
end if
if pricefrom = "" and priceto <> "" then
pricefrom = "0"
elseif pricefrom <> "" and priceto = "" then
priceto = "99999999"
end if
if pricefrom <> "" and priceto <> "" then
whereclause = whereclause & "price >= " & _
pricefrom & " and price <= " & _
priceto & " and "
end if
If right(whereclause,4) = "and " then
whereclause = left(whereclause, len(whereclause) -4)
query = "SELECT * FROM items " & whereclause
'## -- hur många poster ska visas per sida --
senaste.PageSize = intPageSize
'## -- öppna och hämta alla records --
senaste.Open query, Connect, 1, 3
If senaste.EOF Then
Response.Write "Det finns inga inlägg."
Else
'## -- vilken sida i recordset uppdelningen ska visas --
senaste.AbsolutePage = intPage
'## -- hur många sidor finns i recordset uppdelningen --
intTotalPages = senaste.PageCount
'## -- lista alla inlägg som finns i db --
Do Until senaste.EOF or intRecordCount >= intPageSize
intRecordCount = intRecordCount + 1
Response.Write "<tr><td><img src=""bilder/" & senaste("fileName") & """ height='10' width='10'>"
response.write "<td><font size='2'><a href=""detail.asp?item=" & senaste("id") & """>" & senaste("item") & "</a>"
response.write "<td><font size='2'> Kategori:"
Response.write eval(senaste("category"))
response.write "<td><td><font size='2'>Datum:" & senaste("datecreated") & ""
response.write "<td><font size='2'>Stad:" & senaste("stad") & ""
response.write "<td><font size='2'color=#FF0000>Pris:</font>" & senaste("price") & " Kr </td></font></tr> "
senaste.MoveNext
Loop
End If
'## -- clean up --
senaste.Close
Set senaste= Nothing
Connect.Close
Set Connect= Nothing
'## -- visa sidnavigeringen --
'## -- intPage = vilken sida som ska visas --
'## -- intTotalPages = hur många sidor som recordsetet är uppdelat i --
Call PageNavigation(intPage, intTotalPages)
'## -- skapa sid-navigering --
Sub PageNavigation(ByVal WichPage, ByVal HowManyPages)
Dim strScriptName
'## -- vilken sida ska navigeringen länka till --
strScriptName = Request.ServerVariables("SCRIPT_NAME")
'## -- visa föregående, länkat eller olänkat beroende på vilken sida som visas --
If CInt(WichPage) > 1 Then
Response.Write "<A href='" & strScriptName & "?" & _
"page=" & WichPage - 1 & "'><< Föregående</A> "
Else
Response.Write "<< Föregående "
End If
'## -- lista ut alla sidnummer --
For I = 1 To HowManyPages
If CInt(WichPage) <> I Then
Response.Write "<A href='" & strScriptName & "?" & _
"page=" & I & "'>" & I & "</A> "
Else
Response.Write "[ <B>" & I & "</B> ]"
End If
Next
'## -- visa Nästa, länkad eller olänkad beroende på vilken sida som visas --
If CInt(WichPage) < CInt(HowManyPages) Then
Response.Write "<A href='" & strScriptName & "?" & _
"page=" & WichPage + 1 & "'>Nästa >>"
Else
Response.Write "Nästa >>"
End If
End Sub
%>
Längst upp anger du att variabeln intPage skall innehålla sidonummret, sedan försöker du att använda WichPage längre ned.
Mvh, Vide
Vad jag kan se av koden så är det någon typ av sökning som ska genomföras. Beroende på vad som postas till sidan så ska olika saker visas. (dina olika if-satser som bygger sql-frågan)
För att då kunna skapa en korrekt paging så måste du få med dig, antingen alla värden till nästa sida alt. hela sql-frågan (vilket är mindre bra).
cya,
PatrikB
WichPage är bara ett argument till subben: PageNavigation(ByVal WichPage, ByVal HowManyPages)
cya,
PatrikB
Ett litet tips!!!
se till att köra en "ren" sql-fråga innan du börjar att bygga upp en dynamisk sql-fråga för att se att pagingen funkar. Blir bra mycket lättare att felsöka.
Skapa sedann en if-sats i taget och kolla så att allt funkar som det ska igen efter ändringen ......... blir lättare i utvecklingsarbetet med att genomföra täta tester på att koden funkar korrekt
just my € 0.02
/PatrikB
PatrikB skrev:
WichPage är bara ett argument till subben: PageNavigation(ByVal WichPage, ByVal HowManyPages)
Ah, skummade för snabbt genom koden. ;)
Tack för alla tips PatrikB det är alla if satser som Pagin inte gillar.
Så fort tugg jag bort If satserna då funkade Pagin men allting var fel i sökningen.
men frågan är hur skall man kunna fixa SQL frågan på ett annat sätt.
Du måste få med dig värdena som först postas i sökningen till alla sidor i pagingen med tex querystrings.
PageNavigation subben bygger ju upp själva pagingen (skriver ut föregående, alla sidnummer, nästa) där sätts även querystringen för vilken sida som efterfrågas. Den querystringen skulle du behöva "bygga" på med värdena som först postades och sedan hämta in dem igen vid nästa sidvisning.
Skicka upp koden för den fungerande varianten av pagingen + vilka variabler som postas till sidan (de du behöver för att få rätt i sökningarna) så kan vi ta det steg för steg.
cya,
PatrikB
Lägg till querystringarna i länken då.
Response.Write "<A href='" & strScriptName & "?" & Request.Querystring & _
"page=" & WichPage + 1 & "'>Nästa >>"
Kanske ska det in ett & "&" där mellan, men det märker du. :)
Fast hur blir det med querystringen page då andra varvet... hm...
i subben så kollar man vilken sida man är på:
Select Case WichPage
Case 1
strQueryString = "?page=1&value1=" & value1var & "&value2=" & value2var
Case Else
strQueryString = Request.QueryString
End Select
Response.Write "<A href='" & strScriptName & "?" & Request.Querystring & _
Replace(strQueryString, "page=" & WichPage, "page=" & WichPage + 1) & "'>Nästa >>"
likadant på för föregående länkning och för aktuell sidnummer
cya,
PatrikB
Nix jag har testat!