Avatar billede mekaniker Nybegynder
27. december 2001 - 11:00 Der er 2 kommentarer og
1 løsning

paging i søgeresultat

Jeg har dette script til at liste nogle produkter op fra en db. Dette er et paging system hvor jeg kan stille hvormange siden skal vise ad gangen, hvorefter man så får det velkendte system << 1 2 3 >>.
<%

  Page = Trim(Request(\"page\"))
  If Page = \"\" Then Page = 1

Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"../db/varer.mdb\")

strSQL = \"SELECT * FROM produkter where undergruppe_id=\" & Request.Querystring(\"Id\")
set rs = myconn.execute(strSQL)

  Set rs = Server.CreateObject(\"ADODB.Recordset\")
  rs.CursorType = adOpenStatic
   
  rs.PageSize = 5
  rs.Open(strSQL), myConn

    If rs.eof then
      response.write \"<center>Der er ingen varer i denne\"
      response.write \"<br>varegruppe i øjeblikket</center>\"
      response.end
      Else
   
  If Not rs.EOF Then
    rs.AbsolutePage = cINT(Page)
    rowCount = 0
  End If
color = \"FFFFFF\"
lev = rs(\"leverandoer\")
%>

<form name=\"form1\" method=\"post\" action=\"\">   
<table width=\"720\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\" bordercolor=\"#003366\" height=\"96\">
  <tr>
    <td>
        <table width=\"737\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" align=\"center\">
          <tr bgcolor=\"#003366\">
            <td colspan=\"10\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\" color=\"#FFFFFF\"><%= color %><%= undergruppe %></font></td>
          </tr>
          <tr bgcolor=\"#FFFFFF\">
            <td colspan=\"3\">
              <%
tmpFrom  = ( ( CInt( Page ) - 1 ) * rs.PageSize ) + 1
tmpTo    = Page * rs.PageSize
tmpTotal = rs.RecordCount
if tmpTotal <= tmpTo then
response.write \"Viser \" & tmpFrom & \" til \" & tmpTotal & \" af ialt \" & tmpTotal & \"<br>\"
else
response.write \"Viser \" & tmpFrom & \" til \" & tmpTo & \" af ialt \" & tmpTotal & \"<br>\"
end if
%>
            </td>
            <td colspan=\"7\">
              <div align=\"right\">
                <%         
if( CInt( Page ) > 1 ) then
  response.write \"<a href=\"\"produkter.asp?page=\" & ( CInt(page) - 1 )& \"&Id=\" & Request.Querystring(\"Id\") & \"\"\"><<</a>&nbsp;\"
end if
If rs.PageCount <> 1 Then
  For i = 1 to rs.PageCount
    if( i = CInt( Page ) ) then
      response.write \"<b>\" & i & \"</font></b>&nbsp;\"
    else
      response.write \"<a href=\"\"produkter.asp?page=\" & i & \"&Id=\" & Request.Querystring(\"Id\") & \"\"\">\"& i &\"</a>&nbsp;\"
    end if
  Next
End If

if( CInt( Page ) < rs.PageCount ) then
  response.write \"<a href=\"\"produkter.asp?page=\" & ( CInt(page) + 1 )& \"&Id=\" & Request.Querystring(\"Id\") & \"\"\">>></a>&nbsp;\"
end if
%>


Jeg har så lavet en søgefunktion som også gerne skulle virke med dette paging system. Men dette volder mig en del problemer. Jeg kan sagtens få vist den første side men når man trykker på 2 eller >> for at se den næste side går det galt. Er der nogle der kan hjælpe

<%
\' Henter værdien fra search.htm
strKeyword = Trim(Request.Form(\"Keyword\"))

\' Hvis der er skrevet i feltet
strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")

\' Opbygger en dynamisk SQL streng
strSQL = \"SELECT Id, varenr, varebeskrivelse, stor_beskrivelse, udsalgspris_incl_moms, leverandoer, indkoebspris_excl_moms, Forhandlerpris_excl_moms FROM produkter WHERE\"
strSQL = strSQL & \" (varenr LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (varebeskrivelse LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (stor_beskrivelse LIKE \'%\" & strKeyword & \"%\')\"

Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"../db/varer.mdb\")

set rs = myconn.execute(strSQL)

Page = Trim(Request(\"page\"))
  If Page = \"\" Then Page = 1

Set rs = Server.CreateObject(\"ADODB.Recordset\")
  rs.CursorType = adOpenStatic
   
  rs.PageSize = 2
  rs.Open(strSQL), myConn
   
  If Not rs.EOF Then
    rs.AbsolutePage = cINT(Page)
    rowCount = 0
  End If

\' Hvis der er fundet poster på søgningen
If Not (rs.BOF Or rs.EOF) Then

%>
<table width=\"720\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\" bordercolor=\"#003366\" height=\"96\">
  <tr>
    <td>
   
      <table width=\"737\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" align=\"center\">
        <tr bgcolor=\"#003366\">
           
          <td colspan=\"10\"><font color=\"#FFFFFF\"><b>S&oslash;ge resultat</b></font></td>
          </tr>
          <tr bgcolor=\"#FFFFFF\">
            <td colspan=\"3\">
            <%
tmpFrom  = ( ( CInt( Page ) - 1 ) * rs.PageSize ) + 1
tmpTo    = Page * rs.PageSize
tmpTotal = rs.RecordCount
if tmpTotal <= tmpTo then
response.write \"Viser \" & tmpFrom & \" til \" & tmpTotal & \" af ialt \" & tmpTotal & \"<br>\"
else
response.write \"Viser \" & tmpFrom & \" til \" & tmpTo & \" af ialt \" & tmpTotal & \"<br>\"
end if
%>
            </td>
           
          <td colspan=\"7\">
            <div align=\"right\">
              <%         
if( CInt( Page ) > 1 ) then
  response.write \"<a href=\"\"search.asp?page=\" & ( CInt(page) - 1 )& \"&varebeskrivelse LIKE \'%\" & strKeyword & \"%\'\"\"><<</a>&nbsp;\"
end if
If rs.PageCount <> 1 Then
  For i = 1 to rs.PageCount
    if( i = CInt( Page ) ) then
      response.write \"<b>\" & i & \"</b>&nbsp;\"
    else
      response.write \"<a href=\"\"search.asp?page=\" & i & \"&varebeskrivelse LIKE \'%\" & strKeyword & \"%\'\"\">\"& i &\"</a>&nbsp;\"
    end if
  Next
End If

if( CInt( Page ) < rs.PageCount ) then
  response.write \"<a href=\"\"search.asp?page=\" & ( CInt(page) + 1 )& \"&Id=\" & Request.Querystring(\"Id\") & \"\"\">>></a>&nbsp;\"
end if
%>

Jeg har prøvet at sætte noget af søge strengen ind i linket til den nye side, ligesom der foregår i det andet til produkterne, men uden held

//Mekaniker
Avatar billede cool_casper Nybegynder
27. december 2001 - 11:12 #1
Avatar billede mekaniker Nybegynder
28. december 2001 - 12:43 #2
Lukker
Avatar billede cool_casper Nybegynder
28. december 2001 - 15:33 #3
Hvorfor det?!?? Kunne du ikke bruge it svar?!?
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