webForumDet fria alternativet

Paging vs. två sessions?

ASP

7 svar · 253 visningar · startad av Hallgren

Medlem sedan dec. 19991 606 inlägg
Frågan#1

Mmmm, nu har jag suttit ett tag och kan inte hitta någon lösning till mitt lilla problem.

Sitter med vides paging till en sök funktion och har nu lag in en koll på om man har skrivit in ett sökord eller inte. Använder mig av en session för att skriva ut en text.

Felet är att paging funktionen slutar att funka. Den radar upp alla poster. :(

---sida 1---
<html>
<head>
	<title>.sök</title>
</head>
<body>
<%
if session("mess") = "" then
response.write "tom" 
else
response.write session("mess")
end if
%>
<table>
	<tr>
		<td>
		<form method="post" action="fieldcheck.asp">
		<input type="text" name="sokord">
		<p>
		<input type="submit" value=".sök">
		</form>
		</td>
	</tr>
</table>
</body>
</html>
---sida 2---
<%
if not trim(request.form("sokord")) = "" then
response.redirect "sokexe.asp"
else
session("mess") = "text" 
response.redirect "sok.asp"
end if
%>
---sida 3--
<%
if request.form("sokord") = "" then
word = session("sokord")
else
word = request.form("sokord")
session("sokord") = word
end if

Dim Connect 
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={MYSQL};server=localhost;db=webshop;uid=;pwd=;"

resultat = "SELECT count(*) FROM varor WHERE vara LIKE '" & word & "%'" 

strSQL = "SELECT * FROM varor WHERE vara LIKE '" & word & "%'"

Set objRs = Server.Createobject("Adodb.Recordset")
Set rs = Connect.execute(resultat)

'paging

intPageId = request.querystring( "pageid" )
if intPageId = "" then intPageId = 1

with objRs
  .cursorlocation = 3 
  .open strSQL,connect
  .pagesize = 2 
  .absolutepage = intPageId 
end with

intPages = cint( objRs.pagecount )
intCurrentPost = 0

do while not objRs.eof and intCurrentPost < objRs.pagesize
  strContents = strContents & "<a href ='?katid=" & objrs("artnr") & "'>" & objRs("vara") & "</a>" & "<br>"
  intCurrentPost = intCurrentPost + 1
  objRs.movenext
loop

for i = 1 to objRs.pagecount
  strNavigation = strNavigation & " <a href='?pageid=" & i & "'>" & i & "</a>"
next

response.write "Din sökning gav " & rs(0) & " träffar." & "<p>"

response.write strNavigation & "<p>"
response.write strContents
%>

------------------
Forumledare, webForum

[Redigerat av Hallgren den 24 nov 2001]

Medlem sedan juni 200032 967 inlägg
#2

Postar du någonting till sida 3?

Jag ser inte att du måste ha sida 2, den känns lite onödig. Om du inte har mer kod där vill säga.

Var sätter du session("sokord")?

Mvh,

------------------
All your base are belong to me.

Medlem sedan dec. 19991 606 inlägg
#3

Om jag kan ha sida 2's funktion på sida 3 så blir jag ju glad med har inte lyckats med det än... :l

if request.form("sokord") = "" then
word = session("sokord")
else
word = request.form("sokord")
session("sokord") = word
end if

...där? Mmm, blir det fel då jag har en sida imellan?

------------------
Forumledare, webForum

Medlem sedan juni 200032 967 inlägg
#4

Det resulterar ju i alla fall i att ingenting postas till sida 3.

Jag gissar lite här: sida1 är sok.asp och sida3 är sokexe.asp?

Vad ska du använda session("sokord") till?

Vet inte om jag förstått precis vad du gör, men prova denna kod:

<%

if request.form("sokord") = "" then
word = session("sokord")
session("mess") = "text" 
response.redirect "sok.asp"
else
word = request.form("sokord")
session("sokord") = word
end if
Dim Connect 
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={MYSQL};server=localhost;db=webshop;uid=;pwd=;"

resultat = "SELECT count(*) FROM varor WHERE vara LIKE '" & word & "%'" 

strSQL = "SELECT * FROM varor WHERE vara LIKE '" & word & "%'"

Set objRs = Server.Createobject("Adodb.Recordset")
Set rs = Connect.execute(resultat)

'paging

intPageId = request.querystring( "pageid" )
if intPageId = "" then intPageId = 1

with objRs
.cursorlocation = 3 
.open strSQL,connect
.pagesize = 2 
.absolutepage = intPageId 
end with

intPages = cint( objRs.pagecount )
intCurrentPost = 0

do while not objRs.eof and intCurrentPost < objRs.pagesize
strContents = strContents & "<a href ='?katid=" & objrs("artnr") & "'>" & objRs("vara") & "</a>" & "<br>"
intCurrentPost = intCurrentPost + 1
objRs.movenext
loop

for i = 1 to objRs.pagecount
strNavigation = strNavigation & " <a href='?pageid=" & i & "'>" & i & "</a>"
next

response.write "Din sökning gav " & rs(0) & " träffar." & "<p>"

response.write strNavigation & "<p>"
response.write strContents
%>

Och låt då också sok.asp posta direkt till sokexe.asp.

Mvh,

------------------
All your base are belong to me.

Medlem sedan dec. 19991 606 inlägg
#5

Tror allt det funkar. :)

------------------
Forumledare, webForum

Medlem sedan dec. 19991 606 inlägg
#6

Efter ha lagt ner lite tid på annat så är jag tillbaka till min sökfunktion och till min förvåning så funkade det inte...mm..borde ha kollat igenom den lite mer noggrant. :l

Problem:
Söker och får upp resultatet men är jag skall kolla på nästa sida så kommer jag tillbaka till sok.asp som där klagar över att jag inte har skrivit in något ord i sök rutan och så ska det ju inte var.

<%
if request.form("sokord") = "" then
word = session("sokord")
session("mess") = "fyll i ett ord"
response.redirect "sok.asp"
else
word = request.form("sokord")
session("sokord") = word
end if
Dim Connect 
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={MYSQL};server=localhost;db=webshop;uid=;pwd=;"

resultat = "SELECT count(*) FROM varor WHERE vara LIKE '" & word & "%'" 

strSQL = "SELECT * FROM varor WHERE vara LIKE '" & word & "%'"

Set objRs = Server.Createobject("Adodb.Recordset")
Set rs = Connect.execute(resultat)

'paging

intPageId = request.querystring( "pageid" )
if intPageId = "" then intPageId = 1

with objRs
.cursorlocation = 3 
.open strSQL,connect
.pagesize = 2 
.absolutepage = intPageId 
end with

intPages = cint( objRs.pagecount )
intCurrentPost = 0

do while not objRs.eof and intCurrentPost < objRs.pagesize
strContents = strContents & "<a href ='?katid=" & objrs("artnr") & "'>" & objRs("vara") & "</a>" & "<br>"
intCurrentPost = intCurrentPost + 1
objRs.movenext
loop

for i = 1 to objRs.pagecount
strNavigation = strNavigation & " <a href='?pageid=" & i & "'>" & i & "</a>"
next

response.write "Din sökning gav " & rs(0) & " träffar." & "<p>"

response.write strNavigation & "<p>"
response.write strContents
%>

------------------
Forumledare, webForum

Medlem sedan dec. 200012 464 inlägg
#7
<%
if request.form("sokord") = "" then
word = session("sokord")
[b]
if word = "" then
   session("mess") = "fyll i ett ord"
   response.redirect "sok.asp"
end if
[/b]
else
word = request.form("sokord")
session("sokord") = word
end if
Dim Connect 
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={MYSQL};server=localhost;db=webshop;uid=;pwd=;"
resultat = "SELECT count(*) FROM varor WHERE vara LIKE '" & word & "%'" 

strSQL = "SELECT * FROM varor WHERE vara LIKE '" & word & "%'"

Set objRs = Server.Createobject("Adodb.Recordset")
Set rs = Connect.execute(resultat)

'paging

intPageId = request.querystring( "pageid" )
if intPageId = "" then intPageId = 1

with objRs
.cursorlocation = 3 
.open strSQL,connect
.pagesize = 2 
.absolutepage = intPageId 
end with

intPages = cint( objRs.pagecount )
intCurrentPost = 0

do while not objRs.eof and intCurrentPost < objRs.pagesize
strContents = strContents & "<a href ='?katid=" & objrs("artnr") & "'>" & objRs("vara") & "</a>" & "<br>"
intCurrentPost = intCurrentPost + 1
objRs.movenext
loop

for i = 1 to objRs.pagecount
strNavigation = strNavigation & " <a href='?pageid=" & i & "'>" & i & "</a>"
next

response.write "Din sökning gav " & rs(0) & " träffar." & "<p>"

response.write strNavigation & "<p>"
response.write strContents
%>

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 19991 606 inlägg
#8

Först så måste jag ha in en funktion i
.eof så att det kommer upp en text om den inte hittar något i db. Felmedelanden är ju inte en höjdare att få. ;) sen så jävlas mina sessions. Då den kommer ihåg förra resultatet så kan man söka utan att skriva in någon om man går tillbaka efter första söknigen.

Mmmm, känns som om jag krånglar till det med den här sökfunktionen. :(

Någon som har en bättre lösning?

------------------
Forumledare, webForum

277 ms totalt · 4 externa anrop · v20260731065814-full.bd618308
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)