Avatar billede cyberkox Nybegynder
16. april 2002 - 16:45 Der er 8 kommentarer og
1 løsning

Hvad går der galt ?

Hej Eksperter

Jeg har en side, hvor man kan søge på. Denne side, der er under, er så siden, hvor resultatet kommer frem på. Det virker fint nok. Men jeg har lige lavet det sådan, at den skal vise 5 resultater per side, og så at der i bunden, står Frem og tilbage. Så er det, at fejlen kommer. Nå man trykker på ’<<’ eller ’>>’ (som er frem og tilbage), kommer man hen til Downloads igen (den side, hvor søgningen startede.
Så derfor:
Er der nogen af jer, der ved hvad der går galt i denne kode:


<% Response.Buffer = True %>
<html><head>
<title>Søgeresultat i download</title>
</head><body>

<%
' Henter værdien fra download.asp
strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect("download.asp")
Else
    ' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,"'","''")
End If

intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If

' Opbygger en dynamisk SQL streng
' Skaber DSNLess forbindelse til DBen
strSQL = "SELECT ID, Navn, Beskrivelse, URL, Klik, Stor FROM Download WHERE"
strSQL = strSQL & " (Navn LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (URL LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Stor LIKE '%" & strKeyword & "%')"
Set rs = Server.CreateObject("ADODB.RecordSet")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("download.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
    rs.PageSize = 5
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount

    ' Hvis der er fundet poster på søgningen
Response.Write "<CENTER><FONT SIZE=3><B>Søgeresultat</B></FONT></CENTER><BR>"
    Do While Not rs.EOF
Response.Write "<CENTER>"
Response.Write "<TABLE WIDTH=400 BORDER=1>"
Response.Write "<TR>"
Response.Write "<TD WIDTH=200><B><FONT SIZE=2><a href=download.asp?id=" & rs("ID") & ">" & rs("Navn") & "</a></B></FONT></TD>"
Response.Write "<TD ALIGN=center WIDTH=100><FONT SIZE=2>Hits: " & rs("Klik") & "</FONT></TD>"
Response.Write "<TD ALIGN=right WIDTH=100><FONT SIZE=2><U>" & rs("Stor") & "</U></TD></FONT>"
Response.Write "</TR>"
Response.Write "<TR>"
Response.Write "<TD COLSPAN=3 WIDTH=400><FONT SIZE=2>" & rs("Beskrivelse") & "</TD></FONT>"
Response.Write "</TR>"
Response.Write "</TABLE>"
Response.Write "</CENTER>"
Response.Write "<BR>"
    intRecCount = intRecCount - 1
    rs.MoveNext
    Loop
Response.Write "<CENTER>"
    Response.Write "<TABLE BORDER=1 WIDTH=400 HEIGHT=30><TR><TD>"
Response.Write "Gå til side:</TD>"
Response.Write "<TD ALIGN=center>"
If Clng(intPage) > 1 Then
    Response.Write "<a href=search.asp?page=" & intPage - 1 & ">&lt;&lt;</a>"
Else
    Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"
For intNum = 1 To intPageCount
    Response.Write "<a href=search.asp?page=" & intNum & ">" & intNum & "</a> "
Next
If Clng(intPage) < Clng(intPageCount) Then
    Response.Write "<a href=search.asp?page=" & intPage + 1 & ">&gt;&gt;</a>"
Else
    Response.Write "&gt;&gt;"
End If
    Response.Write "</TD><TD ALIGN=right><b>Side " & intPage & " af " & intPageCount & "</b></TD></TR></TABLE>"
Response.Write "</CENTER>"
Else
    ' Hvis der ikke er fundet poster på søgningen
    Response.Write "<p>Der er ikke fundet noget på denne søgning</p>"
End if
%>

</body></html>

Håber i vil hjælpe mig….
Avatar billede cyberkox Nybegynder
16. april 2002 - 16:59 #1
Er der ingen der ved noget ?
Avatar billede eagleeye Praktikant
16. april 2002 - 18:10 #2
Jeg vil gætte på at det er fordi du hendter dit søge resultat sådan her:
strKeyword = Trim(Request.Form("Keyword"))  'altså med en POST fra en form. Når du trykke på << eller >> så loades siden på ny og Request.Form("Keyword") tom (="") så redirector du til download side:
If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect("download.asp")
Else
....
Avatar billede eagleeye Praktikant
16. april 2002 - 18:12 #3
Jeg vil udvide lidt her:
Denne:
strKeyword = Trim(Request.Form("Keyword"))

Til:
strKeyword = Trim(Request.Form("Keyword"))
if strKeyword = "" then
  strKeyword = Trim(Request.QueryString("Keyword"))
end if


Du bliver nemlig nød til at overføre søge resultat vil en querystring til siden igen ligesom de nummer i rækken man er kommet til.
Avatar billede eagleeye Praktikant
16. april 2002 - 18:15 #4
Alle steder hvor du linker til search.asp skal du ændre..
Fra:
Response.Write "<a href=search.asp?page=" & intPage - 1 & ">&lt;&lt;</a>"

Til:
Response.Write "<a href=search.asp?page=" & intPage - 1 & "&Keyword=" & strKeyword & ">&lt;&lt;</a>"

Smat her:
Response.Write "<a href=search.asp?page=" & intPage + 1 & "&Keyword=" & strKeyword & ">&gt;&gt;</a>"

Til:
Response.Write "<a href=search.asp?page=" & intPage + 1 & ">&gt;&gt;</a>"
Avatar billede cyberkox Nybegynder
16. april 2002 - 18:16 #5
Hvad skal jeg så gøre med denne :
If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect("download.asp")
Else
Avatar billede eagleeye Praktikant
16. april 2002 - 18:38 #6
Bare lade den stå, det er fint nok den redirector til download siden hvis Keyword er tom.
Avatar billede cyberkox Nybegynder
17. april 2002 - 15:59 #7
Okay. Nu fik jeg det til at virke.

Nu har jeg bare et nyt problem.

Når jeg har sagt, at der kun skal være 5 resultater på hver side,
(   
    rs.PageSize = 5
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount
)
kommer alle resulaterne frem. Ved du hvorfor ?
Avatar billede eagleeye Praktikant
17. april 2002 - 18:14 #8
Prøv at rette:
Do While Not rs.EOF

Til:
Do While Not rs.EOF And intRecCount > 0
  intRecCount = intRecCount - 1


Den hendter hele record sættet og så skal man selv tælle hvor mange man har skreved ud ved at tælle intRecCount ned til 0..
Avatar billede cyberkox Nybegynder
17. april 2002 - 22:35 #9
Okai.

Nu virker det hele.

Takker for hjælpen ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester