Just nu i M3-nätverket
Gå till innehåll

Fortfarande problem med paging


mia_sr

Rekommendera Poster

Hej!

 

Jag testar och testar men kommer ingen vart.

 

Jag skickar ett sökord från en sida med ett formulär.

Resultatet ska visa ett antal bilder.

 

När jag kommer till min sida där resultatet ska visas så visas de första bilderna rätt och jag ser i länkarna att det är rätt antal sidor.

Till exempel om jag söker på skidor så visas de sex första skidbilderna och så ser jag att det länkas upp 7 sidor. Det stämmer med det antal bilder på skidor som jag vet finns i databasen.

 

Sen trycker jag på sidan 2. Då visas helt plötsligt alla poster och det länkas upp 17 sidor, det är antalet sidor för att visa alla poster.

 

Vart mellan sida 1 och sida 2 går det snett?

 

/mia_sr

 

Länk till kommentar
Dela på andra webbplatser

<HTML>

<HEAD>

</HEAD>

<BODY>
<font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<%

' ^^ Skapar variabler : ^^

Dim IntSida, Conn, RS, SQL



' ^^ Kollar vilken sida som skall visas, om tomt visas sida 1 : ^^

IntSida = Trim(Request.QueryString("Sida"))

If IntSida = "" Then

IntSida = 1

Else

IntSida = Cint(IntSida) ' ^^ Gör om det till ett tal ^^

End If





' ^^ Startar Databaskoppling och RS : ^^
kat = request.form("kategori")


Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/kunder.mdb") 

' ^^ Väljer alla fält i tabellen & sorterar efter det senaste datumet : ^^
SQL = "Select * from bilder where bildtext LIKE '%" & Request.Form("fritext")& "%' or bildbeskrivning LIKE '%" & Request.Form("fritext")& "%' or nyckel LIKE '%" & Request.Form("fritext")& "%'"

' ^^ Startar igång : ^^

RS.Open SQL, Conn, 3,1



'^^ Om tabellen är tom : ^^

If RS.EOF = True Then

Response.Write("Inga poster hittades i databasen!<BR>")

Else

' ^^ Bestämmer hur många inlägg det ska vara per sida : ^^

RS.PageSize = 6

' ^^ Visar önskad sida : ^^

RS.AbsolutePage = IntSida

End If



' ^^ Visar inläggen tills antalet per sida uppfylls eller inläggen tar slut : ^^
IntAntal=0
Response.Write "<table widh=500><tr>"
cells=0
Do until RS.EOF Or IntAntal >= RS.PageSize

' ^^ Räknare : ^^
 strFileName = rs("bildnamn")
  strFileExt = "."& Mid(strFileName, Instr(strFileName,".")+1)
  strFileName = Replace(strFileName,strFileExt,"")
IntAntal = IntAntal + 1

%>
<%
Response.Write "<td width=300 valign=top><b><font size=1><a href=skissbilder.asp?id="& RS("id") &"><img src=images/tum/"&  strFileName  &".jpg></a><br>" & RS("bildtext") & "<br></b>" & RS("bildbeskrivning") & "<br><a href=skissbilder.asp?id="& RS("id") &"><img src=images/titta.gif border=0></a>"

%>
<A HREF="javascript:ny_sida('test1.asp?id=<%=Rs("id")%>&id2=<%=request.querystring("id")%>&foretagsnamn=<%=request.querystring("foretagsnamn")%>','350','300');"><img src=images/hamta.gif border=0></A> </td> 
<%

If (IntAntal mod 3)=0 Then 
	Response.Write "</tr><tr>"
	cells=0
End If

RS.MoveNext

Loop
For i=cells+1 to 3
Response.Write "<td></td>"
Next
Response.Write "</tr></table>"



' ^^ Visa sidlänkar : ^^

If RS.PageCount > 1 Then ' ^^ Kollar så det finns fler sidor ^^

For I = 1 To RS.PageCount ' ^^ Startar en loop som ska fixa alla sidnummer ^^

                       If I <> IntSida Then ' ^^ Kollar så att vi ej länkar aktuellt sidnummer ^^

                         Response.Write("<A href='kunder.asp?Sida=" & I & "'>" & I & "</A> ")

                       Else ' ^^ Om det är sidan som är aktiv, gör ingen länk.

                         Response.Write(I & " ")

                       End If

Next

End If



RS.Close

Conn.Close

%>
</font> 
</BODY>

</HTML>

 

Länk till kommentar
Dela på andra webbplatser

_Peter_Nilsson_

frågan från ditt sökformulär (fritext) måste du skicka med hela vägen. Som det är nu så verkar den stanna vid din första sida...... hur vet sidan 2, 3, 4 ,5 o.s.v. vad det är du söker efter.

 

Du har i din databas koppling gjort en Request.Form("fritext")..... ordet i fritext måste du skicka till dina andra sidor i form av en Request.QueryString ......

 

 

 

 

[inlägget ändrat 2008-11-27 09:17:29 av _Peter_Nilsson_]

[inlägget ändrat 2008-11-27 09:17:55 av _Peter_Nilsson_]

Länk till kommentar
Dela på andra webbplatser

Så jag spar sökresultatet och skickar med det i en querystring. Men hur vet sidan 2 då att den redan har visat de sex första posterna?

 

/mia

 

Länk till kommentar
Dela på andra webbplatser

_Peter_Nilsson_

Det borde den veta för du skickar även annan info till den sidan.

 

Om du inte klurar ut det så skicka över databasen så ska jag försöka klura ut det åt dej.

 

Länk till kommentar
Dela på andra webbplatser

Läste att någon löst problemet genom att skapa en sessionvariabel och lagra fritext i. Men hur skriver jag då?

 

 

 

Länk till kommentar
Dela på andra webbplatser

Hej igen!

 

Nu har jag bytt request.form till att lagra request.form i en sessionvariabel först.

 

Det funkar som förut, att den söker ut rätt antal, men att det inte hänger med till följande sidor.

 

Behöver jag göra något mer med sessionvariabeln?

 

Så här har jag ändrat till

 

 

/mia

Session("fritext") = Request.Form("fritext")

SQL = "Select * from bilder where bildtext LIKE '%" & Session("fritext") & "%' or bildbeskrivning LIKE '%" & Session("fritext") & "%' or nyckel LIKE '%" & Session("fritext") & "%'"

 

Länk till kommentar
Dela på andra webbplatser

_Peter_Nilsson_

du hade inte behövt att byta till session .....

 

jag ska försöka ge mej på en vettig förklaring...

 

På din första sida så har du en formulär rutan där du kan skriva in en valfri text, du kallar nog rutan för fritext.

 

Informationen skickar du till pagin sidan.... denna sidan fångar upp vad du skrev på din föregående sida request.form("fritext") och letar i databasen efter dessa kriterierna... så långt allt väl.....

 

det som inte funkar i ditt fall är när du ska gå vidare till sidan 2, 3, 4, 5 osv... det är här allt fallerar... varför undrar du.... jo för att dessa sidor vet inte vad det är du vill se utan visar istället allt som finns i databasen.

 

Jag är inte helt 100 på att det kommer att funka men prova detta, jag har fetstilat det jag har ändrat eller lagt till:

<HTML>
<HEAD>
</HEAD>
<BODY>
<font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<%

[b]If Request.Form("fritext")<>"" Then
fritext=Request.Form("fritext")
Else
fritext=Request.QueryString("fritext")
End If[/b]

' ^^ Skapar variabler : ^^

Dim IntSida, Conn, RS, SQL



' ^^ Kollar vilken sida som skall visas, om tomt visas sida 1 : ^^

IntSida = Trim(Request.QueryString("Sida"))

If IntSida = "" Then

IntSida = 1

Else

IntSida = Cint(IntSida) ' ^^ Gör om det till ett tal ^^

End If





' ^^ Startar Databaskoppling och RS : ^^
kat = request.form("kategori")


Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/kunder.mdb") 

' ^^ Väljer alla fält i tabellen & sorterar efter det senaste datumet : ^^
SQL = "Select * from bilder where bildtext LIKE '%" &[b]fritext[/b]& "%' or bildbeskrivning LIKE '%" &[b]fritext[/b]& "%' or nyckel LIKE '%" &[b]fritext[/b]& "%'"

' ^^ Startar igång : ^^

RS.Open SQL, Conn, 3,1



'^^ Om tabellen är tom : ^^

If RS.EOF = True Then

Response.Write("Inga poster hittades i databasen!<BR>")

Else

' ^^ Bestämmer hur många inlägg det ska vara per sida : ^^

RS.PageSize = 6

' ^^ Visar önskad sida : ^^

RS.AbsolutePage = IntSida

End If



' ^^ Visar inläggen tills antalet per sida uppfylls eller inläggen tar slut : ^^
IntAntal=0
Response.Write "<table widh=500><tr>"
cells=0
Do until RS.EOF Or IntAntal >= RS.PageSize

' ^^ Räknare : ^^
 strFileName = rs("bildnamn")
  strFileExt = "."& Mid(strFileName, Instr(strFileName,".")+1)
  strFileName = Replace(strFileName,strFileExt,"")
IntAntal = IntAntal + 1

%>
<%
Response.Write "<td width=300 valign=top><b><font size=1><a href=skissbilder.asp?id="& RS("id") &"><img src=images/tum/"&  strFileName  &".jpg></a><br>" & RS("bildtext") & "<br></b>" & RS("bildbeskrivning") & "<br><a href=skissbilder.asp?id="& RS("id") &"><img src=images/titta.gif border=0></a>"

%>
<A HREF="javascript:ny_sida('test1.asp?id=<%=Rs("id")%>&amp;id2=<%=request.querystring("id")%>&foretagsnamn=<%=request.querystring("foretagsnamn")%>','350','300');"><img src=images/hamta.gif border=0></A> </td> 
<%

If (IntAntal mod 3)=0 Then 
	Response.Write "</tr><tr>"
	cells=0
End If

RS.MoveNext

Loop
For i=cells+1 to 3
Response.Write "<td></td>"
Next
Response.Write "</tr></table>"



' ^^ Visa sidlänkar : ^^

If RS.PageCount > 1 Then ' ^^ Kollar så det finns fler sidor ^^

For I = 1 To RS.PageCount ' ^^ Startar en loop som ska fixa alla sidnummer ^^

                       If I <> IntSida Then ' ^^ Kollar så att vi ej länkar aktuellt sidnummer ^^

                         Response.Write("<A href='kunder.asp?[b]fritext="&fritext&"&[/b]Sida=" & I & "'>" & I & "</A> ")

                       Else ' ^^ Om det är sidan som är aktiv, gör ingen länk.

                         Response.Write(I & " ")

                       End If

Next

End If



RS.Close

Conn.Close

%>
</font> 
</BODY>

</HTML>

 

 

KOD-taggar tillagda av moderator

 

[inlägget ändrat 2008-11-28 07:44:16 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Om du visste hur glad jag är!!

 

Det här har hängt över mig och tack vare dig så är det löst.

 

1000-tack att du tog dig tid!

 

Nu ska jag ge dig en poäng och sen ska jag sova gott :-)

 

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...

Hej!

 

Jag skulle behöva få in att man även kan söka på kategori. Jag har fått det att fungera innan, men ihop med pagingen så har jag strandat (igen)

 

Jag har gjort följade:

 

Precis som med fritextfältet så har jag lagt in samma grej för fältet kategori.

 


If Request.Form("fritext")<>"" Then
fritext=Request.Form("fritext")
Else
fritext=Request.QueryString("fritext")
End If

If Request.Form("kategori")<>"" Then
kat=Request.Form("kategori")
Else if 
kat=Request.QueryString("kat")
End If

 

Sen gör jag sql-utsökningarna i en if-sats.

("nolla" är vad kategorifältet får för värde om man inte valt kategori)

 


if kat = "nolla" then 



SQL = "Select * from bilder where bildtext LIKE '%" &fritext& "%' or bildbeskrivning LIKE '%" &fritext& "%' or nyckel LIKE '%" &fritext& "%'"

else

SQL = "Select * from bilder where kategori = '%" &kat& "%' and bildtext LIKE '%" &fritext& "%' or kategori = '%" &kat& "%' and bildbeskrivning LIKE '%" &fritext& "%'"


end if

 

Slutligen så skickar jag med kategorin till pagingens olika sidor

 

Response.Write("<A href='paging.asp?fritext="&fritext&"&kat="&kat&"&Sida=" & I & "'>" & I & "</A> ")

 

Resultatet blir att den inte hittar några bilder, vilket jag vet är fel. Kan någon hjälpa mig att se vad det är som blir galet med värdena som skickas fram och tillbaka...

 

Länk till kommentar
Dela på andra webbplatser

Felet ligger här:

where kategori = '%" &kat& "%'

Du kan inte använda % som wildcard om du använder en =-operation, endast i LIKE-operationer. Så vill du använda wildcards så ändra den andra queryn till:

SQL = "Select * from bilder where kategori LIKE  '%" &kat& "%' and bildtext LIKE '%" &fritext& "%' or kategori LIKE '%" &kat& "%' and bildbeskrivning LIKE '%" &fritext& "%'"

 

Dessutom kan de logiska villkoren skrivas om (A AND B) OR (A AND C) är samma sak som A AND (B OR C), vilket ger den kortare queryn:

SQL = "Select * from bilder where kategori LIKE  '%" &kat& "%' and (bildtext LIKE '%" &fritext& "%'  OR bildbeskrivning LIKE '%" &fritext& "%')"

 

Länk till kommentar
Dela på andra webbplatser

Tack! Det var ju ett perfekt svar!

Funkar strålande.

Ska även skriva om koden som du sa så att den blir kortare.

 

/mia

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...