Hej jag har en sökfunktion som ser ut som nedan. Nu är jag skaplig amatör på ASP och jag vill använda paging så att sökresultaten kommer med 10 per sida, men förstår inte riktigt hur jag ska göra. Någon som kan ge en några hintar så man kan ro det i hamn. Det här är en kod som jag har använt för ett tag sen för paging. Jag hinner inte gå igenom det för att ta bort allt som jag har lagt in, så jag hoppas att du är bra på att klura hur det fungerar, men det borde fungera bra. Databasen som är öppnad är min, och jag har inte kollat igenom din kod, bara lusläst den, men om det är nått du absolut inte förstår, eller får rätt på så får du givetvis fråga. Har nu lagt in följande men får det inte att fungera, någon som kan slå ett öga och kanske upptäcka något fel, jag får inget felmeddelande utan får ut länkarna men inga resultat från databasen, har kollat att skriva ut SQL-koden och den ser rätt ut. Vilka länkar är det du får ut? jag får ut länkarna Nästa sida, föregående osv, UCASE gör om till stora bokstäver det är rätt överallt med dom, sökningen har fungerat bra innan utan paging Jag tackar för att någon tar sig tid, har suttit ett tag med det nu och då blir man rätt blind. Jag ser inte direkt något fel, men jag har upptäckt att ASP är lite dålig med if-satserna, om man inte skriver något villkor efter else så läser den inte det som kommer efter. Du kan kanske testa med att sätta istället för...Paging
<code>
formulärsida:
<table border="0">
<tr>
<td width="55"><div>Sök på:</td>
<td>
<form method="post" action="swe_sel_art.asp" target="resultat">
<select name="artsok">
<option>Artikelnummer</option>
<option>Beskrivning</option>
</select>
<%
Session("user")
Session("pass")
%>
</td>
<td> </td>
<tr>
<td> </td>
<td valign="top"><input type="text" size="45" name="sokord"></td>
<td valign="top"><input type="submit" value="Sök"></td>
</table>
Resultatsida
<%
Session("user")
Session("pass")
%>
<!--#include file="connect.asp"-->
<%
Dim artsok, sokord, SQL, RS, RS2
artsok = Request.Form("artsok")
sokord = UCASE(Request.Form("sokord"))
If Request.Form("artsok") = "Artikelnummer" Then
SQL = "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 & "%'"
Set RS = Conn.Execute(SQL)
' 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>"
Else
%>
<table border="0" width="780">
<%
Do Until RS.EOF
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>-</td>"
RS.MoveNext
Loop
End If
%>
</table>
<center>
<%
ElseIf Request.Form("artsok") = "Beskrivning" Then
SQL = "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 & "%'"
Set RS2 = Conn.Execute(SQL)
' 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>"
Else
Response.Write "<table border=0 width=780>"
Do Until RS2.EOF
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>-</td>"
RS2.MoveNext
Loop
End If
End If
%>
<%
RS.Close
RS2.Close
Conn.Close
Set RS = Nothing
Set RS2 = Nothing
Set Conn = Nothing
%>
</code>
Tack på förhand!Sv: Paging
Det här i huvudet:
<code>
<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
Set rs = server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM tblKunder ORDER BY fltForetag"
rs.Open SQL,"dbMecca", 1
%>
Det här skrivs i bodyn:
<table width="850" cellpadding="3" cellspacing="0" border="0">
<%If Not (rs.BOF Or rs.EOF) Then
rs.PageSize = 20
rs.AbsolutePage = intPage
intRecCount = rs.PageSize
intPageCount = rs.PageCount%>
<tr align="center">
<td colspan="4" BGCOLOR="#336699">
(<%Response.Write "Sida " & intPage & " av " & intPageCount %>)
</td>
</tr>
<tr bgcolor="#336699">
<td>Företag</td>
<td>Ort</td>
<td>Tel.</td>
<td>E-post</td>
</tr>
<%Do While Not rs.EOF And intRecCount > 0%>
<tr bgcolor="#6699cc">
<td>"><%=rs("fltForetag")%></td>
<td><%=rs("fltPostadress")%></td>
<td><%=rs("fltTel")%></td>
<td><%=rs("fltEmail")%></td>
</tr>
<%intRecCount = intRecCount - 1
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing%>
<tr align="center">
<td colspan="4" BGCOLOR="#336699"><font face="verdana" size="1">
<%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%>
</td>
</tr>
</table>
</code>Sv: Paging
formulär:
<code>
<form method="post" action="swe_sel_art.asp" target="resultat">
<select name="artsok">
<option>Artikelnummer</option>
<option>Beskrivning</option>
</select>
</td>
<td> </td>
<tr>
<td> </td>
<td valign="top"><input type="text" size="45" name="sokord"></td>
<td valign="top"><input type="submit" value="Sök"></td>
Resultatsidan:
<%
Dim artsok, sokord, SQL, RS, RS2, nPageCount, nPage
artsok = Request.Form("artsok")
sokord = UCASE(Request.Form("sokord"))
If Request.Form("artsok") = "Artikelnummer" Then
SQL = "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 & "%'"
Set RS = Conn.Execute(SQL)
RS.CursorLocation = 3 ' adUseClient
' 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>"
Else
'Set the page size of the recordset
RS.PageSize = 10
'get the number of pages
nPageCount = RS.PageCount
nPage = CLng(Request.Querystring("page"))
If nPage < 1 Or nPage > nPageCount Then
nPage = 1
End If
' Sida 1
Response.Write "Första sidan "
' Foregaende sida
Response.Write "Föregående sida "
' Nasta sida
Response.Write "Nästa sida "
' Sista Sidan
Response.Write "Sista sidan "
%>
<table border="0" width="780">
<%
'Gör att recordsetet går till rätt sida
RS.AbsolutePage = nPage
'Visa sökresultat
Do Until ( RS.EOF Or RS.AbsolutePage <> nPage )
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>-</td>"
RS.MoveNext
Loop
End If
RS.Close
%>
</table>
<center>
<%
ElseIf Request.Form("artsok") = "Beskrivning" Then
SQL = "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 & "%'"
Set RS2 = Conn.Execute(SQL)
' 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>"
Else
Response.Write "<table border=0 width=780>"
Do Until RS2.EOF
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>-</td>"
RS2.MoveNext
Loop
End If
End If
%>
<%
RS2.Close
Conn.Close
Set RS2 = Nothing
Set Conn = Nothing
%>
</code>Sv: Paging
sokord = UCASE(Request.Form("sokord"))
är det meningen att det ska vara två ___^ parantestecken där? Det finns på ett par ställen, kolla om det är korrekt. Jag kollar lite mer i din kod och ser om jag kan hitta nått fel.
Har du dubbelkollat så att du får ut rätt variabler från Request.Form?Sv: Paging
Sv: Paging
Sv: Paging
If RS2.EOF Then
Response.Write "<center><div>Sökningen på " & sokord & " gav inga träffar.</center>"
Else
Response.Write "<table border=0 width=780>"
så skriver du...
If RS2.EOF Then
Response.Write "<center><div>Sökningen på " & sokord & " gav inga träffar.</center>"
Elseif not RS2.EOF Then
Response.Write "<table border=0 width=780>"
'mer kod
...i dina if-satser.