Avatar billede cyberbase Nybegynder
24. august 2000 - 10:09 Der er 19 kommentarer og
1 løsning

Querystring og paging

Jeg har et problem med at anvende querystring og paging. Mit problem er, at jeg har 2 querystrings, som begge skal indgå i min pagingkode. På nuværende tidspunkt, når jeg søger i min base efter hits med kombinationen af 2 søgeord (AND), får jeg fint nok, de rigtige resultater i første omgang. MEN når jeg så vil gå til side 2 i mit søgeresultat, smides kun et af mit søgeord igennem asp´en igen, og jeg får langt flere resultatsider. Hvad skal jeg skrive i pagingafsnittet, således jeg bliver ved med at se de resultater, hvor begge mine søgord indgår, selvom jeg går til en ny side?

Min kode er som flg.: (udpluk)

strsøg = Request.querystring(\"søg\")
strsøg1 = Request.querystring(\"søg1\")

0.s.v.

intRecCount = intRecCount - 1
rs.MoveNext
Loop
Else
Response.Write \"Der er ikke fundet nogle personer, der matcher din søgning\"
End If
rs.Close
Set rs = Nothing
Response.Write \"<p>Gå til side \"
For intNum = 1 To intPageCount

Response.Write \"<a href=search.asp?søg=\" & strsøg & \"&page=\" & intNum & \">\" & intNum & \"</a> \"
Next
Response.Write \"<p>\"
If Clng(intPage) > 1 Then
Response.Write \"<a href=search.asp?søg=\" & strsøg & \"&page=\" & intPage - 1 & \">&lt;&lt;</a>\"
Else
Response.Write \"&lt;&lt;\"
End If
Response.Write \"&nbsp;\"
If Clng(intPage) < Clng(intPageCount) Then
Response.Write \"<a href=search.asp?søg=\" & strsøg & \"&page=\" & intPage + 1 & \">&gt;&gt;</a>\"
Else
Response.Write \"&gt;&gt;\"
End If
%>



Avatar billede dudal Nybegynder
24. august 2000 - 10:16 #1
Prøåv så vidt muligt at lade være med at bruge æøå i dine querystrings og ikke mindst i dine variabler.


Prøv med følgnde:

strsearch1 = Request.querystring(\"search1\")
strsearch2 = Request.querystring(\"search2\")

Response.Write \"<a href=search.asp?search1=\" & strsearch1 & \"&search2=\" & strsearch2 &\"&page=\" & intPage + 1 & \">&gt;&gt;</a>\"

/jesper
www.builder.dk
Avatar billede meyer Nybegynder
24. august 2000 - 10:24 #2
Hej Jesper.

Hvordan har du lavet den imagebuilder du har på sitet??

Meyer
Avatar billede sone Nybegynder
24. august 2000 - 10:42 #3
Hvis du skal have værdier i din querystring med æøå, mellemrum og andet specielt, så bør du bruge Server.URLEncode(value)
Avatar billede nettet Nybegynder
24. august 2000 - 10:58 #4
OK! med danske karakterer!

Jeg har indsat dit kodeforslag men søgeresultatet ændres alligevel, når jeg går til side 2. Her vises som sagt kun resultatet af search1 og ikke af fællesmængden mellem search1 og search2?
Avatar billede meyer Nybegynder
24. august 2000 - 11:07 #5
Kan du ikke lige smide din SQL her?
Avatar billede cyberbase Nybegynder
24. august 2000 - 12:00 #6
Jo, det kan jeg godt!


<% Response.Buffer = true %>
<html>
<head>
<title>Resultat af søgning</title>
</head>
<body BGCOLOR=\"#003050\" TEXT=\"#E6E8FA\" VLINK=\"#FCCF03\" LINK=\"#FCCF03\" ALINK=\"#06438A\" leftmargin=\"25\">

<% Response.Buffer = true %>
<p align=\"left\">

<font size=6 color=\"#FCCF03\"><b>Resultat af søgning</b>
</font>

<font size=5 color=\"#FCCF03\">
<font size=3 color=\"#FCCF03\"><p align=\"right\"><a href=\"search.asp\">Ny søgning</a><br></p>




<%

\' strKeyword = Trim(Request.Form(\"search\"))
Dim StrSearch
Dim StrSearch1

strKeyword = Request.querystring(\"Search\")
strKeyword1 = Request.querystring(\"Search1\")

strKeyword = Replace(strSearch,\"\'\",\"\'\'\")

strKeyword1 = Replace(strSearch1,\"\'\",\"\'\'\")


intPage = Request(\"page\")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
Set rs = Server.CreateObject(\"ADODB.RecordSet\")
strSQL = \"SELECT * FROM Test WHERE\"
strSQL = strSQL & \" (Efternavn LIKE \'%\" & strSearch & \"%\')\"
strSQL = strSQL & \" AND (Fornavne LIKE \'%\" & strSearch1 & \"%\')\"



strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"Testdatabase.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

AntalP = rs.RecordCount
Response.write \"<p><b>Din søgning resulterede i \" & AntalP & \" personer<br></b></p>\"


Response.Write \"<p><b>Side \" & intPage & \" af \" & intPageCount & \"</b></p>\"
Do While Not rs.EOF And intRecCount > 0



Response.Write \"<tr><th><b><p></p>Efternavn:  </b></th></tr>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Efternavn\") & \"</b></font><br>\"

Response.Write \"<tr><th><b>Fornavne:  </b></th></tr>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Fornavne\") & \"</font><br>\"




intRecCount = intRecCount - 1
rs.MoveNext
Loop
Else
Response.Write \"Der er ikke fundet nogle personer, der matcher din søgning\"
End If
rs.Close
Set rs = Nothing
Response.Write \"<p>Gå til side \"
For intNum = 1 To intPageCount

Response.Write \"<a href=search.asp?Search=\" & strSearch & \"&Search1=\" & strSearch1 &\"&page=\" & intNum & \">\" & intNum & \"</a> \"
Next
Response.Write \"<p>\"
If Clng(intPage) > 1 Then
Response.Write \"<a href=search.asp?Search=\" & strSearch & \"&Search1=\" & strSearch1 &\"&page=\" & intPage - 1 & \">&lt;&lt;</a>\"
Else
Response.Write \"&lt;&lt;\"
End If
Response.Write \"&nbsp;\"
If Clng(intPage) < Clng(intPageCount) Then
Response.Write \"<a href=search.asp?Search=\" & strSearch & \"&Search1=\" & strSearch1 &\"&page=\" & intPage + 1 & \">&gt;&gt;</a>\"
Else
Response.Write \"&gt;&gt;\"
End If
%>
</body></html>



Avatar billede dudal Nybegynder
24. august 2000 - 12:05 #7
Hvorfor strKeyword????

Prøv dette:

Dim StrSearch
Dim StrSearch1

StrSearch = Request.querystring(\"Search\")
StrSearch1 = Request.querystring(\"Search1\")

StrSearch = Replace(strSearch,\"\'\",\"\'\'\")

StrSearch1 = Replace(strSearch1,\"\'\",\"\'\'\")


intPage = Request(\"page\")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
Set rs = Server.CreateObject(\"ADODB.RecordSet\")
strSQL = \"SELECT * FROM Test WHERE\"
strSQL = strSQL & \" (Efternavn LIKE \'%\" & strSearch & \"%\')\"
strSQL = strSQL & \" AND (Fornavne LIKE \'%\" & strSearch1 & \"%\')\"
Avatar billede dudal Nybegynder
24. august 2000 - 12:06 #8
Til meyer:

Den er lavet med aspimage. Et komponent på serveren.

/Jesper
Avatar billede meyer Nybegynder
24. august 2000 - 12:08 #9
prøv at lave disse om til:

strKeyword = Request.querystring(\"Search\")
strKeyword1 = Request.querystring(\"Search1\")
strKeyword = Replace(strSearch,\"\'\",\"\'\'\")

strKeyword1 = Replace(strSearch1,\"\'\",\"\'\'\")



til:

strSearch = Request.querystring(\"Search\")
strSearch1 = Request.querystring(\"Search1\")
strSearch = Replace(strSearch,\"\'\",\"\'\'\")

strSearch1 = Replace(strSearch1,\"\'\",\"\'\'\")


Meyer
Avatar billede meyer Nybegynder
24. august 2000 - 12:10 #10
Jesper>>ok - tak skal du ha\' :-)

vil du vise mig koden??
Avatar billede dudal Nybegynder
24. august 2000 - 12:15 #11
Det er muligt at jeg senere når den er blevet lidt federe poster koden på www.activeserverpages.dk.

/Jesper
Avatar billede meyer Nybegynder
24. august 2000 - 12:17 #12
Jesper>>ok :-)
Avatar billede cyberbase Nybegynder
24. august 2000 - 12:45 #13
Undskyld jeg roder!!
Jeg har lige været igang med at omdøbe mine variabler. Og har selvfølgelig glemt at omdøbe dem nogle få steder.
MEN mit oprindelig problem er dog stadig ikke løst - dvs. paging-problemet
Avatar billede meyer Nybegynder
24. august 2000 - 12:47 #14
ok ok - prøv lieg at udskrive dine to variabler:

strSearch = Request.querystring(\"Search\")
strSearch1 = Request.querystring(\"Search1\")

response.write strSearch
response.write strSearch1

og se hvad de siger på de forskellige sider.

Meyer
Avatar billede cyberbase Nybegynder
24. august 2000 - 13:04 #15
På første side udskrives variabelværdierne, f.eks. hansenmarie, mens de på de næste sider ikke ses mere.

Jeg kan yderligere se at mit recordcount:

AntalP = rs.RecordCount
Response.write \"<p><b>Din søgning resulterede i \" & AntalP & \" personer<br></b></p>\"

tilmed kun fungerer på side 1
Avatar billede dudal Nybegynder
24. august 2000 - 13:11 #16
Har du ikke en url vi kan se det på?

/Jesper
Avatar billede meyer Nybegynder
24. august 2000 - 13:18 #17
Prøv lige den her - den virker fint her:

<% Response.Buffer = true %>
<html>
<head>
<title>Resultat af søgning</title>
</head>
<body BGCOLOR=\"#003050\" TEXT=\"#E6E8FA\" VLINK=\"#FCCF03\" LINK=\"#FCCF03\" ALINK=\"#06438A\" leftmargin=\"25\">

<% Response.Buffer = true %>
<p align=\"left\">

<font size=6 color=\"#FCCF03\"><b>Resultat af søgning</b>
</font>

<font size=5 color=\"#FCCF03\">
<font size=3 color=\"#FCCF03\"><p align=\"right\"><a href=\"search.asp\">Ny søgning</a><br></p>




<%

Dim StrSearch
Dim StrSearch1

StrSearch = Request.querystring(\"Search\")
StrSearch1 = Request.querystring(\"Search1\")

StrSearch = Replace(strSearch,\"\'\",\"\'\'\")

StrSearch1 = Replace(strSearch1,\"\'\",\"\'\'\")
response.write StrSearch

response.write StrSearch1
intPage = Request(\"page\")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
Set rs = Server.CreateObject(\"ADODB.RecordSet\")
strSQL = \"SELECT * FROM Test WHERE\"
strSQL = strSQL & \" (Efternavn LIKE \'%\" & strSearch & \"%\')\"
strSQL = strSQL & \" AND (Fornavne LIKE \'%\" & strSearch1 & \"%\')\"

strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"Testdatabase.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

AntalP = rs.RecordCount
Response.write \"<p><b>Din søgning resulterede i \" & AntalP & \" personer<br></b></p>\"


Response.Write \"<p><b>Side \" & intPage & \" af \" & intPageCount & \"</b></p>\"
Do While Not rs.EOF And intRecCount > 0



Response.Write \"<tr><th><b><p></p>Efternavn:  </b></th></tr>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"titel\") & \"</b></font><br>\"

Response.Write \"<tr><th><b>Fornavne:  </b></th></tr>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"beskrivelse\") & \"</font><br>\"




intRecCount = intRecCount - 1
rs.MoveNext
Loop
Else
Response.Write \"Der er ikke fundet nogle personer, der matcher din søgning\"
End If
rs.Close
Set rs = Nothing
Response.Write \"<p>Gå til side \"
For intNum = 1 To intPageCount

Response.Write \"<a href=search.asp?Search=\" & strSearch & \"&Search1=\" & strSearch1 &\"&page=\" & intNum & \">\" & intNum & \"</a> \"
Next
Response.Write \"<p>\"
If Clng(intPage) > 1 Then
Response.Write \"<a href=search.asp?Search=\" & strSearch & \"&Search1=\" & strSearch1 &\"&page=\" & intPage - 1 & \">&lt;&lt;</a>\"
Else
Response.Write \"&lt;&lt;\"
End If
Response.Write \"&nbsp;\"
If Clng(intPage) < Clng(intPageCount) Then
Response.Write \"<a href=search.asp?Search=\" & strSearch & \"&Search1=\" & strSearch1 &\"&page=\" & intPage + 1 & \">&gt;&gt;</a>\"
Else
Response.Write \"&gt;&gt;\"
End If
%>
</body></html>

Meyer
Avatar billede cyberbase Nybegynder
24. august 2000 - 13:36 #18
Det virker sgu nu Meyer

Tak for det - du har fortjent dine point!
Avatar billede meyer Nybegynder
24. august 2000 - 13:38 #19
Det var nu det samme dudal sagde ved ikke hvad der var galt hos dig udover variablenavnene !! så vi burde da ha\' delt dem :-)

Meyer
Avatar billede dudal Nybegynder
24. august 2000 - 13:42 #20
Nåja. Havde det været kroner havde jeg nok protesteret, men jeg har point nok til alle de spørgsmål jeg evt. vil stille. ;-)

/Jesper
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