Ir para conteúdo
Fórum Script Brasil
  • 0

Paginação Com Filtros


nadia_xidea

Pergunta

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 para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...