Jump to content
Fórum Script Brasil
  • 0

Paginação Com Filtros


nadia_xidea
 Share

Question

Oi gente, tudo bem.

Consegui um sistema de paginação bem legal na web com filtro.

Pra quem precisar o código está abaixo...

Eu gostaria de saber o que tenho que fazer para criar um link, para sempre que eu clicar no título ir para a página com a notícia completa.

<% '********************************************************
 '********************************************************
%>
<% Option Explicit %>
<!-- #include file = "adovbs.inc" -->
<% 
Const PAGE_SIZE = 3 'quantidade de itens na página.



'Declarando as variaveis
Dim Conexao   ' string para conexão
Dim rsBusca   ' string do recordset
Dim rs
Dim rs1
Dim strSQL   ' string SQL
Dim strSearch  ' string para fixar o texto procurado
Dim iPageCurrent ' string para Pagina Corrente
Dim iPageCount  ' string para contar números de paginas do recorset
Dim iRecordCount ' string do contador
Dim I    ' variável de indica a página atual
Dim categoria  ' variável de indica a categoria escolhida
Dim strURL   ' variável que indicará o endereço do site



strURL = Request.ServerVariables("URL")
categoria = request("categoria") ' variável de retorno



Sub abre_conexao  ' Criando uma conexão com o Banco de Dados
 Set Conexao = Server.CreateObject("ADODB.Connection")
 Conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("noticias.mdb") &";"
End sub



IF categoria = "" Then categoria  = 0



If Request.QueryString("page") = "" Then ' Abertua inicial
 iPageCurrent = 1
Else
 iPageCurrent = CInt(Request.QueryString("page"))
End If
%>



<html>
<head>
<title>Paginação do Guardião</title>
<style>
a:hover {  
text-decoration: underline
}
a {  
font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; font-weight: bold; text-decoration: none
}
</style>



<!-- Javascript para onChange do ListMenu -->
<script LANGUAGE="JavaScript">
function Menu() {
  document.forms.myform.submit(); 
 }
</SCRIPT>
</head>



<body bgcolor="#ACBbbb" text="#000000" link="#000000" alink="#000000" vlink="#000000">



<!-- MONTANDO O LIST MENU COM AS CATEGORIAS -->
<FORM NAME="myform" ACTION="<%=strURL%>" METHOD=POST >
  <table width="400" cellpadding="1" cellspacing="0" border="0" align="center">
    <tr><td><font face="Verdana,Arial" color="#000000" size=1>Categoria:</font>
<select name="categoria" onChange="Menu();">
 <option value="0" selected>(Todos)</option>
  <%
  Call abre_conexao  ' Abrindo a conexão criada
  Set rs = Server.CreateObject("ADODB.RecordSet")
  ' Selecionando as categorias através de uma instrução SQL
  rs.Open "SELECT  * FROM categorias", conexao



  While not rs.eof  ' Criando um Loop
  IF Trim(categoria) = Trim(rs("ID")) Then
  %> 
 <option value="<%=rs("ID")%>" selected ><%=rs("categorias")%></option>
  <% Else %>
 <option value="<%=rs("ID")%>"><%=rs("categorias")%></option>
  <%
  End IF
  rs.movenext   ' próximo registro
  Wend     
  rs.close   ' fechando o recordset
  set rs = Nothing ' destruindo o recordset
  %>
</select>
  </td></tr>
</table>
</Form>



<!-- INÍCIO DA PAGINAÇÃO EM UMA TABELA -->
<%
 IF categoria = 0 Then ' verifica se alguma categoria foi escolhida
  strSQL = "SELECT * FROM categorias INNER JOIN noticias ON categorias.ID = noticias.categoria "
 Else     ' se foi determina uma condição
  strSQL = "SELECT * FROM categorias INNER JOIN noticias ON categorias.ID = noticias.categoria WHERE categorias.ID = "& Trim(categoria) & " ORDER BY categoria"
 End IF



 ' criando um Recordset referente a categoria escolhida
 Set rsBusca = Server.CreateObject("ADODB.Recordset")
 rsBusca.PageSize  = PAGE_SIZE
 rsBusca.CacheSize = PAGE_SIZE
 ' abre a conexão e executa o recordset
 rsBusca.Open strSQL, Conexao, adOpenStatic, adLockReadOnly, adCmdText



 iRecordCount = rsBusca.RecordCount
 iPageCount   = rsBusca.PageCount



 If iRecordCount = 0 Then ' se nenhum registro for encontrado
%>



<table width="400" cellpadding="1" cellspacing="0" border="0" align="center">
  <tr>
  <td><font face="Verdana,Arial" color="#000000" size=1>
   <%="Nenhum registro foi encontrado"%>
 </font></td>
 </tr>
</table>
<%
 Else    ' caso contrário monta a paginação
 rsBusca.AbsolutePage = iPageCurrent  ' determina qual página deve ser exibida
%>



<table width="400" cellpadding="1" cellspacing="0" border="0" align="center">
  <tr>
  <td><font face="Verdana,Arial" color="#000000" size=1>
  <% 'faz as contagens dos registros encontrados
  response.write iRecordCount & " registros encontrados.<br>"
  response.write "Página " & iPageCurrent & " de " & iPageCount
  %>
  </font></td>
 </tr>
 <tr><td>&nbsp;</td></tr>
</table>




<table width="400" cellpadding="1" cellspacing="0" border="0" align="center">
  <% ' novo loop, verificando a página a ser exibida
 While Not rsBusca.EOF And rsBusca.AbsolutePage = iPageCurrent %> 
  <tr>
    <td bgcolor="#0099CC"><b><font color="#000333" face="verdana" size="1"> <%
 IF categoria = 0 Then
  response.write rsBusca("titulo") &" ( "
  response.write rsBusca("categoria") & " )"
 Else
  response.write rsBusca("titulo")
 End IF
 %> </font></b></td>
  </tr>
  <tr>
    <td><font color="#000333" face="verdana" size="1"> <% response.write rsBusca("descricao") %> 
      </font></td>
  </tr>
  <% 
 rsBusca.MoveNext  ' próximo registro
 Wend
 %> 
</table>



<table width="400" cellpadding="1" cellspacing="0" border="0" align="center">
  <tr><td>&nbsp;</td></tr>
 <tr>
  <td><font face="Verdana,Arial" color="#000000" size=1>
  <%  ' informa que página o usuário está da paginação
  response.write "Páginas: "
  For I = 1 To iPageCount
   If I = iPageCurrent Then
    response.write "[" & I & "]" 
   Else
    ' criamos um link a categoria escolhida e a 
    ' página a ser mostrada
    %>
<a href="<%= strURL %>?categoria=<%=categoria%>&page=<%= I %>"><%= I %></a> 
<%
   End If
  Next
 End If
%>
  </font></td></tr>
</table>
<%
rsBusca.Close
Set rsBusca = Nothing
Conexao.Close
Set Conexao = Nothing
%>
</body>
</html>

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Andréia me ajuda com esse erro:

Tipo de erro:

Erro de compilação do Microsoft VBScript (0x800A0401)

Fim da instrução esperado

/nr/Paginação/paginacao2.asp, line 149, column 24

response.write"<a href="noticia.asp?id="&rsBusca("id")&">"&rsBusca("titulo") &"</a>" ( "

-----------------------^

Do código acima...

Na linha 149 eu tenho isso, em vermelho:

<% ' novo loop, verificando a página a ser exibida

While Not rsBusca.EOF And rsBusca.AbsolutePage = iPageCurrent %>

<tr>

<td bgcolor="#0099CC"><b><font color="#000333" face="verdana" size="1"> <%

IF categoria = 0 Then

response.write"<a href="noticia.asp?id="&rsBusca("id")&">"&rsBusca("titulo") &"</a>" ( " response.write rsBusca("categoria") & " )"

Else

response.write rsBusca("titulo")

End IF

%

Link to comment
Share on other sites

  • 0

Oi Andréia, muito obrigada.

Montei o código com a sua ajuda, mas estou com este erro:

ADODB.Recordset (0x800A0CC1)

O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.

/nr/Paginação/paginacao2.asp, line 149

Pelo que eu acredito o erro fala que não existem esses campos na DB, mas na DB notícias eu tenho os campos ID / titulo / categoria.

O que pode estar ocorrendo?

Link to comment
Share on other sites

  • 0

Olá Andreia, muito obrigada.

Andréi achei aonde está o erro, mas não o compreendi.

O erro que acontece nessa linha,

IF categoria = 0 Then

response.write "<a href=noticia.asp?id="& rsBusca("id") & ">" & rsBusca("titulo") & "</a> ( " & rsBusca("categoria") & " )"

Else

response.write rsBusca("titulo")

End IF

está aqui: rsBusca("id")

tipo se eu escrevo no lugar de id, data ele carrega a página normal, mas se eu coloco ID dá aquele erro... porque está acontecendo isso será. Na tabela o meu campo chama se ID mesmo... e está em ACCESS...

Pode me ajudar.

Obrigada.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...