webForumDet fria alternativet

Form med paging

13 svar · 239 visningar · startad av Jay81

Jay81Medlem sedan jan. 20034 inlägg
#1

Först och främst vill jag bara skriva att jag har sökt en hel del på forumet efter mitt problem men inte lyckats hitta något som passar ;)

Det är så att jag har gjort en liten sökfunktion på sidan, när man klickat på sök så kommer man till en ny sida (search.asp) som ska innehålla 30 resultat på varje sida. Använder mig av en form för sökningen som ser ut så här

<form action="search.asp?what=" method="post">
<input size=15 type="text" name="sokord">
<input type="submit" value="search">
</form>

Så långt är det inga problem, men när jag ska bläddra till tex sidan 2 (första söksidan fungerar korrekt och listar övriga sidor) så kommer det här felmeddelandet

Error Type:
ADODB.Recordset (0x800A0BB9)
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/musicdb/search.asp, line 105

... på den här koden...

RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic

Jag har paging på första sidan som fungerar fast då är det bara Querystrings och nu kommer det en form med i bilden ;)

Så här ser hela koden ut för den sidan man kommer till efter man klickat på sökknappen

<%
Const perSida = 30 
Dim page 
If Request.QueryString("page") = "" then 
page = 1 
Else 
page = Request.QueryString("page") 
End If 

Dim Connect
Dim RecSet
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\musicdb\db.mdb"
Set RecSet = Server.CreateObject("ADODB.Recordset")

RecSet.CursorLocation = 3
RecSet.CacheSize = perSida

If Request.Form("sokord") <> "" Then
SQL = "Select * from Skivor Where Artist Like '%" & Request.Form("sokord") & "%' ORDER BY Artist asc, Skivnamn asc"
End If

RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic

If RecSet.EOF Then 
Response.Write"Nothing matched your search..." 
Else 

RecSet.MoveFirst 
RecSet.PageSize = perSida 

Dim TotalPages 
TotalPages = RecSet.PageCount 
RecSet.AbsolutePage = page 
Dim count 
%>

<% 
Count = 0 
Do While Not RecSet.EOF And Count < RecSet.PageSize 
%> 

<% 
If TotalPages <> 1 Then
If (Int(page)) <> 1 Then
%>
<a href="search.asp?page=<%=(Int(page)-1)%>&what=<% =Request.Form("sokord") %>">&#171;</a>
<%Else%>
&#171;
<%End If%>
<%
Dim Pages 
For Pages = 1 To TotalPages 
%> 
<%If (Int(Pages)) = (Int(page)) Then%>
<%=Pages%> 
<%Else%><a href="search.asp?page=<%=Pages%>&what=<% =Request.Form("sokord") %>"><%=Pages%></a> 
<%End If%>
<%Next%> 
<%End If%> 

<% If (Int(page)) <> (Int(TotalPages)) Then %>
<a href="search.asp?page=<%=(Int(page)+1)%>&what=<% =Request.Form("sokord") %>">&#187;</a>

<%Else%>
&#187;
<%End If%>

Problemet verkar vara att Request.Form inte kommer med till nästa sida. Någon vänlig själ som skulle kunna hjälpa till? :OO

solbulleMedlem sedan mars 20015 287 inlägg
#2

När du skriver:

what=<% =Request.Form("sokord") %>

"Lägger" du ju över det hela i variablen, querystringen what

Byt namn på what till sokord samt överallt där du använder Request.Form("sokord") skriver du Request("sokord")

Alt. lägger du requesten i en variabel högst upp och arbetar med den på sidan.

Typ:

sokord = Request.Form("sokord")

crisse6Medlem sedan dec. 20002 526 inlägg
#3

solis, besviken, killen gjorde sitt forsta inlagg har och inte ens ett valkomnade ;)

Välkommen till wF!

Hoppas du kommer trivas!

Back to topic ;)

Ett tips, "bryt" inte asp-taggarna om du inte maste, ser rorigt ut ;)

solbulleMedlem sedan mars 20015 287 inlägg
#4

Attan, ursäkta! Välkommen!

Hjälp efter sju minuter mitt i natten fick han i alla fall. ;)

Jay81Medlem sedan jan. 20034 inlägg
#5

:e Tack så mycket.

Det hjälpte dock inte mycket fortfarande samma fel...

Har lagt till

sokord = Request.Form("sokord")

högst upp och ersatt what med sokord och ändrat

<% =Request.Form("sokord") %>">

till

<% =sokord %>
crisse6Medlem sedan dec. 20002 526 inlägg
#6

vad far du om du skriver ut sokord da?

solbulleMedlem sedan mars 20015 287 inlägg
#7

Kanske...

<%
Const perSida = 30 
Dim page 
If Request.QueryString("page") = "" then 
page = 1 
Else 
page = Request.QueryString("page") 
End If 

Dim Connect
Dim RecSet
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\musicdb\db.mdb"
Set RecSet = Server.CreateObject("ADODB.Recordset")

RecSet.CursorLocation = 3
RecSet.CacheSize = perSida

sokord = Request("sokord")

If sokord <> "" Then
	SQL = "Select * from Skivor Where Artist Like '%" & sokord & "%' ORDER BY Artist asc, Skivnamn asc"
End If 'Flytta längst ner?

RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic

If RecSet.EOF Then 
Response.Write"Nothing matched your search..." 
Else 

RecSet.MoveFirst 
RecSet.PageSize = perSida 

Dim TotalPages 
TotalPages = RecSet.PageCount 
RecSet.AbsolutePage = page 
Dim count 

Count = 0 
Do While Not RecSet.EOF And Count < RecSet.PageSize 

'Här ska väl typ loppen o utskrivandet vara antar jag.

If TotalPages <> 1 Then
	If (Int(page)) <> 1 Then
		response.write "<a href=""search.asp?page=" & (Int(page)-1)& "&sokord=" & sokord & """>«</a>"
	Else
		response.write "«"
	End If

Dim Pages 
	For Pages = 1 To TotalPages 
		If (Int(Pages)) = (Int(page)) Then
			response.write Pages
		Else
			response.write "<a href=""search.asp?page=" & Pages & "&sokord=" & sokord & """>" & Pages & "</a>"
		End If
	Next
End If

If (Int(page)) <> (Int(TotalPages)) Then
	response.write "<a href=""search.asp?page=" & (Int(page)+1) & "&sokord=" & sokord & """>»</a>"
Else
	response.write "»"
End If
%>

Iofs skulle jag vilja flytta ner "End If" som är precis under Sql-frågan till längst ner, annars lär du få ett felmeddelande om du inte har något värde med dig.

solbulleMedlem sedan mars 20015 287 inlägg
#8

Attans Crisse, det är banne mig du och jag som håller fanan högt uppe vid de här tidpunkterna. :)

Jay81Medlem sedan jan. 20034 inlägg
#9

Skriver jag ut "sokord" så skriver det ut det som man söker efter, det man fyller i i formuläret alltså.
Måste dra till jobbet nu så jag får återkomma om den längre koden, hinner inte kollat på den nu.

Men tack ska Ni ha för hjälpen så här långt :h

CatZMedlem sedan jan. 20022 440 inlägg
#10

och fan själv är uppe §jr

crisse6Medlem sedan dec. 20002 526 inlägg
#11

Solbulle, det ar fan hog standard pa oss ;)

Jay81, funkade solbulle's kod? annars: du sa att det verkar som om det ar tomt nar du klickar for att visa nasta sida? Vad skrivs ut pa sida2 tex fran formularet?

solbulleMedlem sedan mars 20015 287 inlägg
#12

Måste dra till jobbet nu

Jo, det kanske man skulle göra...

Jay81Medlem sedan jan. 20034 inlägg
#13

Det verkar som det fungerar nu, för den intresserade så kan jag skriva hur "jag" gjorde. ;)

Jag använde koden som solbulle skrivit, fast då ville inte "sokordet" komma med i Querystringen så det ville inte lista ut det man sökt på så jag lade till en sak.

If Request.Querystring("sokord") = "" Then
sokord = Request.Form("sokord")
End If

' Det här står fortfarande kvar fast med ovanstående kod under sig
sokord = Request("sokord")

Och så flyttade jag End If i SQL-satsen långt ner ;)
Det är säkert något onödigt som är med men det fungerar i alla fall :OO

Tusen tack! :h

solbulleMedlem sedan mars 20015 287 inlägg
#14

Lysande!

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)