Jag har en sökfunktion som listar artiklar i en databas där jag använder paging med 10 st resultat per sida. Förstasidan kommer dom första 10 men när jag klickar på sid 2, sid 3 osv så blir de sidorna tomma. Någon vänlig själ som kan tänka sig att ta en titt på min kod. Formuläret ligger på en annan sida men den koden skickar jag inte med det är bara ett vanligt formulär med en combibox som söker på antingen artnr eller beskrivning och en textruta där man skriver in sökord. Problemet vara att du gjorde jämförelsen på Request.Form("artsok") i din if-sats. Har dels tagit bor onödig kod. Det som skiljde ifsatserna var ju bara SQL satsen: Om det är nedanstående rad(er) som producerar ditt svar: Jag skickar sökningen med form men sen när jag klickar på länkarna måste jag väl använda querystring? haha nu fungerar det, jag glömde byta ut en request.form till. Tackar för assistansen!Querystringar
<code>
<% Option Explicit %>
<!--#include virtual="adovbs.inc"-->
<html>
<head>
<link rel="stylesheet" href="stylesheet.css">
<title>
</title>
</head>
<body topmargin="0" leftmargin="0">
<!--Sidhuvud-->
<table width="788" height="100%" cellpadding="0" cellspacing="0" border="0">
<tr><td valign="top">
<center>
<!--Innehåll-->
<%
Session("user")
Session("pass")
%>
<!-- HÄR KOMMER SÖKNINGEN PÅ ARTIKELNUMMER-->
<!--#include file="connect.asp"-->
<%
Dim artsok, sokord, SQL, RS, RS2, intRecCount, intPageCount, intPage, intNum
artsok = Request.Form("artsok")
sokord = UCASE(Request.Form("sokord"))
If Request.Form("artsok") = "Artikelnummer" Then
intPage = Request.QueryString("page")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
If Request.Form("artsok") = False Then
artsok = Request.QueryString("artsok")
Else
artsok = Request.Form("artsok")
End if
If UCASE(Request.Form("sokord")) = False Then
sokord = UCASE(Request.QueryString("sokord"))
Else
sokord = UCASE(Request.Form("sokord"))
End if
Set RS = Server.CreateObject("ADODB.Recordset")
RS.PageSize = 10
RS.CursorLocation = adUseClient
RS.Open "SELECT Upper(""DE_CHSArtikelkod"") DE_CHSARTIKELKOD, Upper(F_LEFT(""DE_Beskrivning"",35)) DE_BESKRIVNING, Upper(""DE_Vikt"") DE_VIKT, Upper(""DE_CHSHuvudprislista"") DE_CHSHUVUDPRISLISTA, Upper(""DE_CHSListpris"") DE_CHSLISTPRIS, Upper(""DE_CHSRabattkod"") DE_CHSRABATTKOD FROM ""ARTIKELREGISTER"" WHERE ""DE_CHSHuvudprislista"" ='Y' AND ""DE_CHSArtikelkod"" LIKE '%" & sokord & "%'", Conn, adOpenStatic, adLockOptimistic
' Kollar om sökningen finns i databasen annars skriver den ut Response.Write
If RS.EOF Then
Response.Write "<center><div>Sökningen på <b>" & sokord & "</b> gav inga träffar.</center>"
Elseif not (RS.BOF Or RS.EOF) Then
RS.AbsolutePage = intPage
intRecCount = RS.PageSize
intPageCount = RS.PageCount
Response.Write "<div>Sida " & intPage & " av " & intPageCount
%>
<table border="0" width="780">
<%
'Visa sökresultat
Do While Not RS.EOF And intRecCount > 0
Response.Write "<tr><td width=180><div>" & RS("DE_CHSARTIKELKOD") & "</td><td width=350><div>" & RS("DE_BESKRIVNING") & "</td><td width=70><div>" & RS("DE_CHSLISTPRIS") & "</td><td width=45><div>-</td><td width=70><div>-</td><td width=65><div>" & DatePart("yyyy",Now) & DatePart("ww",Now) & "5</td>"
intRecCount = intRecCount - 1
RS.MoveNext
Loop
End If
RS.Close
Set RS = Nothing
%>
</table>
<center>
<%
If CLng(intPage) > 1 Then
Response.Write "<<"
Else
Response.Write "<<"
End If
Response.Write " "
For intNum = 1 To intPageCount
Response.Write "" & intNum & " "
Next
Response.Write " "
If Clng(intPage) < Clng(intPageCount) Then
Response.Write ">> "
Else
Response.Write ">>"
End If
%>
<!-- HÄR KOMMER SÖKNINGEN PÅ BESKRIVNING-->
<%
ElseIf Request.Form("artsok") = "Beskrivning" Then
intPage = Request.QueryString("page")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
Set RS2 = Server.CreateObject("ADODB.Recordset")
RS2.PageSize = 10
RS2.CursorLocation = adUseClient
RS2.Open "SELECT Upper(""DE_CHSArtikelkod"") DE_CHSARTIKELKOD, Upper(F_LEFT(""DE_Beskrivning"",35)) DE_BESKRIVNING, Upper(""DE_Vikt"") DE_VIKT, Upper(""DE_CHSHuvudprislista"") DE_CHSHUVUDPRISLISTA, Upper(""DE_CHSListpris"") DE_CHSLISTPRIS, Upper(""DE_CHSRabattkod"") DE_CHSRABATTKOD FROM ""ARTIKELREGISTER"" WHERE ""DE_CHSHuvudprislista"" ='Y' AND ""DE_Beskrivning"" LIKE '%" & sokord & "%'", Conn, adOpenStatic, adLockOptimistic
' Kollar om sökningen finns i databasen annars skriver den ut Response.Write
If RS2.EOF Then
Response.Write "<center><div>Sökningen på <b>" & sokord & "</b> gav inga träffar.</center>"
Elseif not (RS2.BOF Or RS2.EOF) Then
RS2.AbsolutePage = intPage
intRecCount = RS2.PageSize
intPageCount = RS2.PageCount
Response.Write "<div>Sida " & intPage & " av " & intPageCount
Response.Write "<table border=0 width=780>"
Do While Not RS2.EOF And intRecCount > 0
Response.Write "<tr><td width=180><div>" & RS2("DE_CHSARTIKELKOD") & "</td><td width=350><div>" & RS2("DE_BESKRIVNING") & "</td><td width=70><div>" & RS2("DE_CHSLISTPRIS") & "</td><td width=45><div>-</td><td width=70><div>-</td><td width=65><div>" & DatePart("yyyy",Now) & DatePart("ww",Now) & "5</td>"
intRecCount = intRecCount - 1
RS2.MoveNext
Loop
Response.Write "</table>"
If CLng(intPage) > 1 Then
Response.Write "<<"
Else
Response.Write "<<"
End If
Response.Write " "
For intNum = 1 To intPageCount
Response.Write "" & intNum & " "
Next
Response.Write " "
If Clng(intPage) < Clng(intPageCount) Then
Response.Write ">> "
Else
Response.Write ">>"
End If
End If
RS2.Close
Set RS2 = Nothing
End If
%>
</table>
<!--Sidfot-->
</td>
</table>
</body>
</html>
</code>Sv: Querystringar
<code>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE></HEAD>
<BODY>
<P><!--Sidhuvud-->
<TABLE height="100%" cellSpacing=0 cellPadding=0 width=788 border=0>
<TR>
<TD vAlign=top>
<CENTER><!--Innehåll--><!--#include file="connect.asp"--><%
' Session("user")
' Session("pass")
Dim artsok, sokord, SQL, RS, intRecCount, intPageCount, intPage, intNum
intPage = Request.QueryString("page")
If Not isNumeric(intPage) Then
intPage = 1
ElseIf intPage < 1 Then
intPage = 1
End If
If Len(Request.Form("artsok")) Then
artsok = Request.Form("artsok")
Else
artsok = Request.QueryString("artsok")
End if
If Len(Request.Form("sokord")) Then
sokord = UCASE(Request.Form("sokord"))
Else
sokord = UCASE(Request.QueryString("sokord"))
End if
Set RS = Server.CreateObject("ADODB.Recordset")
RS.PageSize = 10
RS.CursorLocation = adUseClient
Select case artsok
Case "Artikelnummer"
%><!-- HÄR KOMMER SÖKNINGEN PÅ ARTIKELNUMMER--><%
RS.Open "SELECT Upper(""DE_CHSArtikelkod"") DE_CHSARTIKELKOD, Upper(F_LEFT(""DE_Beskrivning"",35)) DE_BESKRIVNING, Upper(""DE_Vikt"") DE_VIKT, Upper(""DE_CHSHuvudprislista"") DE_CHSHUVUDPRISLISTA, Upper(""DE_CHSListpris"") DE_CHSLISTPRIS, Upper(""DE_CHSRabattkod"") DE_CHSRABATTKOD FROM ""ARTIKELREGISTER"" WHERE ""DE_CHSHuvudprislista"" ='Y' AND ""DE_CHSArtikelkod"" LIKE '%" & sokord & "%'", Conn, adOpenStatic, adLockOptimistic
Case Else '"Beskrivning" Default om parameter skulle saknas
%><!-- HÄR KOMMER SÖKNINGEN PÅ BESKRIVNING--><%
RS.Open "SELECT Upper(""DE_CHSArtikelkod"") DE_CHSARTIKELKOD, Upper(F_LEFT(""DE_Beskrivning"",35)) DE_BESKRIVNING, Upper(""DE_Vikt"") DE_VIKT, Upper(""DE_CHSHuvudprislista"") DE_CHSHUVUDPRISLISTA, Upper(""DE_CHSListpris"") DE_CHSLISTPRIS, Upper(""DE_CHSRabattkod"") DE_CHSRABATTKOD FROM ""ARTIKELREGISTER"" WHERE ""DE_CHSHuvudprislista"" ='Y' AND ""DE_Beskrivning"" LIKE '%" & sokord & "%'", Conn, adOpenStatic, adLockOptimistic
End Select
' Kollar om sökningen finns i databasen annars skriver den ut Response.Write
If RS.EOF Then
Response.Write "<center><div>Sökningen på " & sokord & " gav inga träffar.</center>"
Else
RS.AbsolutePage = intPage
intRecCount = RS.PageSize
intPageCount = RS.PageCount
Response.Write "<div>Sida " & intPage & " av " & intPageCount
%>
<TABLE width=780 border=0>
<%
'Visa sökresultat
Do
Response.Write "<tr><td width=180><div>" & RS("DE_CHSARTIKELKOD") & "</td><td width=350><div>" & RS("DE_BESKRIVNING") & "</td><td width=70><div>" & RS("DE_CHSLISTPRIS") & "</td><td width=45><div>-</td><td width=70><div>-</td><td width=65><div>" & DatePart("yyyy",Now) & DatePart("ww",Now) & "5</td>"
intRecCount = intRecCount - 1
RS.MoveNext
Loop Until RS.EOF Or intRecCount <= 0
End If
RS.Close
Set RS = Nothing
%>
</TABLE>
<CENTER>
<%
If CLng(intPage) > 1 Then
Response.Write "<<"
Else
Response.Write "<<"
End If
Response.Write " "
For intNum = 1 To intPageCount
IF intNum = intPage Then
Response.Write "" & intNum & " "
Else
Response.Write "" & intNum & " "
End If
Response.Write " "
Next
Response.Write " "
If Clng(intPage) < Clng(intPageCount) Then
Response.Write ">> "
Else
Response.Write ">>"
End If
%></CENTER></CENTER></TR></TABLE>
<!--Sidfot--></TD></TABLE></P>
</BODY>
</HTML>
</code>Sv: Querystringar
<code>
' Kollar om sökningen finns i databasen annars skriver den ut Response.Write
If RS.EOF Then
Response.Write "<center><div>Sökningen på " & sokord & " gav inga träffar.</center>"
Else
</code>
så verkar det som om din variabel sokord, inte innehåller någonting.
Skickar du dina parametrar med querystring eller form? Du har en hel del if satser:
<code>
If UCASE(Request.Form("sokord")) = False Then
sokord = UCASE(Request.QueryString("sokord"))
Else
sokord = UCASE(Request.Form("sokord"))
End if
</code>
kunde kanske i så fall kortas ner till:
<code>
sokord = UCASE(Request("sokord"))
</code>
vilket ger samma sak, då slipper du en massa kontroller gentemot både form och querystringSv: Querystringar
Jag bytte ut
<code>
<%
If Request.Form("artsok") = False Then
artsok = Request.QueryString("artsok")
Else
artsok = Request.Form("artsok")
End if
If UCASE(Request.Form("sokord")) = False Then
sokord = UCASE(Request.QueryString("sokord"))
Else
sokord = UCASE(Request.Form("sokord"))
End if
%>
</code>
till
<code>
<%
artsok = Request("artsok")
sokord = UCASE(Request("sokord"))
%>
</code>
men får fortfarande tom sida när jag klickar på sida 2, 3 osvSv: Querystringar