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

Paginação - Ótimo Script


AlexCT

Pergunta

Já que ninguém postou uma resposta para mim

Eu editei este post para colocar como eu consegui fazer

tem dois Tipos

Paginação 01

a paginação que deixa sempre a pagina atual centralizada

primeira Anterior 1 2 3 4 [ 5 ] 6 7 8 9 10 Proxima ultima

primeira Anterior 21 22 23 24 [ 25 ] 26 27 28 29 Proxima ultima

---------------------------------------

Paginação 02

Que não fica centralizado , deixando como esta mesmo clicando nas paginas

primeira Anterior ... 1 [ 2 ] 3 4 5 6 7 8 9 10 ... Proxima ultima

primeira Anterior ... 1 2 [ 3 ] 4 5 6 7 8 9 10 ... Proxima ultima

e ao clicar nos 3 pontinhos

primeira Anterior ... [ 11 ] 12 13 14 15 16 17 18 19 20 ... Proxima ultima

Postei a paginação completa, Esta funcionando perfeirtamente.

Pois estou usando.

<%

PagAtual = Request.QueryString("PagAtual") 'página atual

Set Conn= server.createobject("adodb.connection")

DSNtest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("../database/db_jogo.mdb")

Conn.Open DSNtest

Set RS= Server.CreateObject("ADODB.Recordset") 'acrescentei por causa da paginação

SQL = "SELECT * FROM jogos WHERE permissao='0' ORDER BY id ASC"

RS.Open SQL, conn, 3

'############## paginacao Introdução #################

'------- Coloque aqui a quantidade de registros que você deseja por página --------

SELECT CASE np

CASE "1" NumPorPage = "1"

CASE "15" NumPorPage = "15"

CASE ELSE NumPorPage = "5"

END SELECT

'Const NumPorPage = 20

'Verifica qual a página solicitada

Dim PagAtual

IF Request.QueryString("PagAtual") = "" Then

PagAtual = 1 'Primeira página

Else

PagAtual = Request.QueryString("PagAtual")

End If

'Cria conexão com o Banco de Dados, já abrir anteriormente

'Criado anteriormente Set RS = Server.CreateObject("ADODB.Recordset")

'>>> FIZ EM CIMA RS.CursorLocation = 3 Acerta a posição do cursor . 3 ou adUseClient

RS.CacheSize = NumPorPage 'Define o tamanho do Cache = para o número de registros

'Cria a String SQL

'>>> FIZ EM CIMA Dim SQLpag

'>>> FIZ EM CIMA SQLpag = "SELECT * FROM jogos"

'>>> FIZ EM CIMA RS.Open SQLpag, Conn Abre o RecordSet

RS.MoveFirst 'Move o RecorSet para o início

RS.PageSize = NumPorPage 'Coloca a quantidade de páginas

Dim TotalPages 'Pega o número total de páginas

TotalPages = RS.PageCount

RS.AbsolutePage = PagAtual 'Configura a página atual

'############## paginacao Introdução - FIM #################

Count = 0 'Zera o contador

'Inicia a Função DO, utilizando a quantidade de páginas especificadas

'Ou seja ele irá executar a ação até que o valor Count seja menor que "20" como está no nosso exemplo

i = 0

DO WHILE NOT RS.EOF And Count < RS.PageSize 'paginacao And Count < RS.PageSize

' ----- linhas coloridas -------

if i mod 2<>0 then

cor = "#F4F4F4"

else

cor = "#e1e1e1"

end if

'-------------------------------

%>




CONTEUDO HTML




<%
     i = i+1
  Count = Count + 1   'paginacao
     RS.MoveNext
     LOOP                'tb paginacao

%>
PAGINAÇÃO 01
<%
'################## paginacao 01 #####################

  'Coloca o Nº página atual / Nº Total de páginas

  Response.Write("<B><font color=""#006600"" size=""2"" face=""Arial""><strong> Página " & PagAtual & " de " & TotalPages & " </strong></font></B> - ")   

'Mostra os botões: Anterior e Próxima, utilizando da opção de IF 

IF PagAtual > 1 THEN 

'Se for a primeira página, Mostra apenas o botão Próximo e Ultima
       Response.Write("<B><font color=""#660066"" size=""1"" face=""Arial"">") 
       Response.Write("<a href='jogos.asp?PagAtual=" &  1 & "'>")
       Response.Write("Primeira") 
       Response.Write("</a></font></B>&nbsp;&nbsp;")
       
       Response.Write("<B><font color=""#660066"" size=""2"" face=""Arial"">") 
       Response.Write("<a href='jogos.asp?PagAtual=" & PagAtual - 1 & "'>")
       Response.Write("Anterior") 
       Response.Write("</a></font></B>&nbsp;&nbsp;")

      Response.Write("<B><font color=""#660066"" size=""2"" face=""Arial"">") 
       Response.Write("<a href='jogos.asp?PagAtual=" & PagAtual - 1 & "'>")
       Response.Write("Anterior") 
       Response.Write("</a></font></B>&nbsp;&nbsp;")


   Else

       Response.Write("<B><font color=""#EEEEEE"" size=""1"" face=""Arial"">") 
       Response.Write("Primeira") 
       Response.Write("</font></B>&nbsp;&nbsp;")

       Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">") 
       Response.Write("Anterior") 
       Response.Write("</font></B>&nbsp;&nbsp;")


End If

'------------------- numero -------------------------
'---------- Numero de numeros para ser mostrados ----
    max_n_mostrados = 9

intervalo = Int(max_n_mostrados /2)
inicio = PagAtual - intervalo
final = PagAtual + intervalo

If CInt(inicio) <1 Then 
  inicio = 1
  final = 10
END IF
If CInt(final) > CInt(TotalPages) Then final = TotalPages

For i = inicio To final
      If CInt(i)=CInt(PagAtual) Then
          Response.Write "<font color=""#660066"" size=""1"" face=""Arial"">[ <B>" & i & "</B> <font color=""#660066"">]</font>&nbsp;&nbsp;"
      END IF
      If CInt(i) < CInt(PagAtual) Then
       Response.Write "<a href='jogos.asp?PagAtual=" & i & "'>" & i & "</a>&nbsp;&nbsp;"
      END IF
      If CInt(i) > CInt(PagAtual) Then
          Response.Write "<a href='jogos.asp?PagAtual=" & i & "'>" & i & "</a>&nbsp;&nbsp;"
   END IF
Next

'------------------------------------------------------

IF CInt(PagAtual) <> CInt(TotalPages) THEN 

'Se estiver na última página, mostra apenas o botão Anterior e Primeira

       Response.Write("<B><font color=""#660066"" size=""2"" face=""Arial"">")
       Response.Write("<a href='jogos.asp?PagAtual=" & PagAtual + 1 & "'>")
       Response.Write("Próxima")
       Response.Write("</a></font></B>&nbsp;&nbsp;") 

       Response.Write("<B><font color=""#660066"" size=""1"" face=""Arial"">")
       Response.Write("<a href='jogos.asp?PagAtual=" & TotalPages & "'>")
       Response.Write("Ultima")
       Response.Write("</a></font></B>&nbsp;&nbsp;")        

  Else
       Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">")
       Response.Write("Próxima") 
       Response.Write("</font></B>&nbsp;&nbsp;")

       Response.Write("<B><font color=""#EEEEEE"" size=""1"" face=""Arial"">")
       Response.Write("Ultima") 
       Response.Write("</font></B>&nbsp;&nbsp;")
End If 
'################## fim paginacao 01 ########################
PAGINAÇÃO 02
'################## paginacao 02 ########################
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'@@@@@@@ ALEX TEIXEIRA - alexct@hotmail.com @@@@@@
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

  'Coloca o Nº página atual / Nº Total de páginas

  Response.Write("<B><font color=""#006600"" size=""2"" face=""Arial""><strong> Página " & PagAtual & " de " & TotalPages & " </strong></font></B> - ")   

'Mostra os botões: Anterior e Próximo, utilizando da opção de IF 

'----------- Numeros - Calculos ---------------------------------------------

var01 = Len(PagAtual) 'Lê o tamanho do numero
var02 = var01 - 1 'subtrai um da variavel , retirando o digito menos sig.
var03 = Left(PagAtual,var02) 'obtem os digitos mais  sig. do numero
var04 = Right(PagAtual,1)    'obtem o digito menos sig. do numero
var05 = var03 & 0 ' Acrecenta ZERO no final
IF var04 <> 0 THEN    	' condição se o digito menos sig. é Zero
	inicial = var05 + 1
	final = inicial + 9  
	ELSE
	inicial = var05 - 9  
	final = var05
END IF

indice_i = var04 - 1 'ultimo digito  - 1
indice_f = 10 - var04 ' 10 - digito menos sig.


' If CInt(inicial) < 1 Then inicial = 1
      
If CInt(final) > CInt(TotalPages) Then final = TotalPages

'------------------------------------------------------------------------------


IF PagAtual > 1 THEN 

'Se for a primeira página, Mostra apenas o botão Próximo e Ultima
       Response.Write("<B><font color=""#660066"" size=""1"" face=""Arial"">") 
       Response.Write("<a href='jogos.asp?PagAtual=" &  1 & "'>")
       Response.Write("Primeira") 
       Response.Write("</a></font></B>&nbsp;&nbsp;")
       
       Response.Write("<B><font color=""#660066"" size=""2"" face=""Arial"">") 
       Response.Write("<a href='jogos.asp?PagAtual=" & PagAtual - 1 & "'>")
       Response.Write("Anterior") 
       Response.Write("</a></font></B>&nbsp;&nbsp;")

       IF PagAtual > 10 THEN

        Response.Write("<B><font color=""#660066"" size=""2"" face=""Arial"">") 
        Response.Write("<a href='jogos.asp?PagAtual=" & inicial - 1 & "'>")
        Response.Write("...") 
      Response.Write("</a></font></B>&nbsp;&nbsp;")

           ELSE

      	Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">") 
        Response.Write("....") 
        Response.Write("</font></B>&nbsp;&nbsp;")

     END IF

   Else

       Response.Write("<B><font color=""#EEEEEE"" size=""1"" face=""Arial"">") 
       Response.Write("Primeira") 
       Response.Write("</font></B>&nbsp;&nbsp;")

       Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">") 
       Response.Write("Anterior") 
       Response.Write("</font></B>&nbsp;&nbsp;")

       Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">") 
       Response.Write("...") 
       Response.Write("</font></B>&nbsp;&nbsp;")

End If

'---------------------- NUMEROS  ---------------------------

For i = inicial To final
      If CInt(i)=CInt(PagAtual) Then
          Response.Write "<font color=""#660066"" size=""1"" face=""Arial"">[ <B>" & i & "</B> <font color=""#660066"">]</font>&nbsp;&nbsp;"
      END IF
      If CInt(i) < CInt(PagAtual) Then
       Response.Write "<font color=""#660066"" size=""1"" face=""Arial""><a href='jogos.asp?PagAtual=" & i & "'>" & i & "</a></font>&nbsp;&nbsp;"
      END IF
      If CInt(i) > CInt(PagAtual) Then
          Response.Write "<font color=""#660066"" size=""1"" face=""Arial""><a href='jogos.asp?PagAtual=" & i & "'>" & i & "</a></font>&nbsp;&nbsp;"
   END IF
Next

'------------------------------------------------------

IF CInt(PagAtual) <> CInt(TotalPages) THEN 

'##### CONDIÇÕES ########
'digitos mais significativos do Numero com 1 no fim > PagAtual
EX:  21   [ 22 ]  23   24  25         2 com 1 => 21 > 22 (F)
'OU
'PagAtual <= 10      E    TotalPages > 10
'EX:  ... 1  2  3  4 [ 5 ]  6  ...              5 <= 10 (V)  E   6 > 10 (F) 

IF (p1 > PagAtual) or ((PagAtual <= 10) and (TotalPages > 10)) THEN	

        Response.Write("<B><font color=""#660066"" size=""2"" face=""Arial"">")
        Response.Write("<a href='jogos.asp?PagAtual=" & final + 1 & "'>")
        Response.Write("...")
        Response.Write("</a></font></B>&nbsp;&nbsp;") 

          ELSE

        Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">")
        Response.Write("...") 
        Response.Write("</font></B>&nbsp;&nbsp;")

    END IF

       Response.Write("<B><font color=""#660066"" size=""2"" face=""Arial"">")
       Response.Write("<a href='jogos.asp?PagAtual=" & PagAtual + 1 & "'>")
       Response.Write("Próxima")
       Response.Write("</a></font></B>&nbsp;&nbsp;") 

       Response.Write("<B><font color=""#660066"" size=""1"" face=""Arial"">")
       Response.Write("<a href='jogos.asp?PagAtual=" & TotalPages & "'>")
       Response.Write("Ultima")
       Response.Write("</a></font></B>&nbsp;&nbsp;")        

  ELSE

       Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">")
       Response.Write("...") 
       Response.Write("</font></B>&nbsp;&nbsp;")

       Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">")
       Response.Write("Próxima") 
       Response.Write("</font></B>&nbsp;&nbsp;")

       Response.Write("<B><font color=""#EEEEEE"" size=""1"" face=""Arial"">")
       Response.Write("Ultima") 
       Response.Write("</font></B>&nbsp;&nbsp;")
End If 
'################## fim paginacao 02 #######################
Rs.Close  
Set RS = Nothing
Conn.Close      
Set Conn = Nothing       
    

%> 

Link para o comentário
Compartilhar em outros sites

19 respostass a esta questão

Posts Recomendados

  • 0

taí.. gostei do codigo, vou pendurar ele tb, já que as ultimas duvidas são sobre paginação

ate mais

Link para o comentário
Compartilhar em outros sites

  • 0

To tirando o destaque desse tópico.

Coloquei um link que aponta pra ele dentro do tópico pendurado de Tutoriais!

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

PAGINAÇÃO 02

'################## paginacao 02 ########################
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'@@@@@@@ ALEX TEIXEIRA - alexct@hotmail.com @@@@@@
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

  'Coloca o Nº página atual / Nº Total de páginas

  Response.Write("<B><font color=""#006600"" size=""2"" face=""Arial""><strong> Página " & PagAtual & " de " & TotalPages & " </strong></font></B> - ")   

'Mostra os botões: Anterior e Próximo, utilizando da opção de IF 

'----------- Numeros - Calculos ---------------------------------------------

var01 = Len(PagAtual) 'Lê o tamanho do numero
var02 = var01 - 1 'subtrai um da variavel , retirando o digito menos sig.
var03 = Left(PagAtual,var02) 'obtem os digitos mais  sig. do numero
var04 = Right(PagAtual,1)    'obtem o digito menos sig. do numero
var05 = var03 & 0 ' Acrecenta ZERO no final
IF var04 <> 0 THEN        ' condição se o digito menos sig. é Zero
    inicial = var05 + 1
    final = inicial + 9  
    ELSE
    inicial = var05 - 9  
    final = var05
END IF

indice_i = var04 - 1 'ultimo digito  - 1
indice_f = 10 - var04 ' 10 - digito menos sig.


' If CInt(inicial) < 1 Then inicial = 1
      
If CInt(final) > CInt(TotalPages) Then final = TotalPages

'------------------------------------------------------------------------------


IF PagAtual > 1 THEN 

'Se for a primeira página, Mostra apenas o botão Próximo e Ultima
       Response.Write("<B><font color=""#660066"" size=""1"" face=""Arial"">") 
       Response.Write("<a href='jogos.asp?PagAtual=" &  1 & "'>")
       Response.Write("Primeira") 
       Response.Write("</a></font></B>&nbsp;&nbsp;")
       
       Response.Write("<B><font color=""#660066"" size=""2"" face=""Arial"">") 
       Response.Write("<a href='jogos.asp?PagAtual=" & PagAtual - 1 & "'>")
       Response.Write("Anterior") 
       Response.Write("</a></font></B>&nbsp;&nbsp;")

       IF PagAtual > 10 THEN

        Response.Write("<B><font color=""#660066"" size=""2"" face=""Arial"">") 
        Response.Write("<a href='jogos.asp?PagAtual=" & inicial - 1 & "'>")
        Response.Write("...") 
      Response.Write("</a></font></B>&nbsp;&nbsp;")

           ELSE

          Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">") 
        Response.Write("....") 
        Response.Write("</font></B>&nbsp;&nbsp;")

     END IF

   Else

       Response.Write("<B><font color=""#EEEEEE"" size=""1"" face=""Arial"">") 
       Response.Write("Primeira") 
       Response.Write("</font></B>&nbsp;&nbsp;")

       Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">") 
       Response.Write("Anterior") 
       Response.Write("</font></B>&nbsp;&nbsp;")

       Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">") 
       Response.Write("...") 
       Response.Write("</font></B>&nbsp;&nbsp;")

End If

'---------------------- NUMEROS  ---------------------------

For i = inicial To final
      If CInt(i)=CInt(PagAtual) Then
          Response.Write "<font color=""#660066"" size=""1"" face=""Arial"">[ <B>" & i & "</B> <font color=""#660066"">]</font>&nbsp;&nbsp;"
      END IF
      If CInt(i) < CInt(PagAtual) Then
       Response.Write "<font color=""#660066"" size=""1"" face=""Arial""><a href='jogos.asp?PagAtual=" & i & "'>" & i & "</a></font>&nbsp;&nbsp;"
      END IF
      If CInt(i) > CInt(PagAtual) Then
          Response.Write "<font color=""#660066"" size=""1"" face=""Arial""><a href='jogos.asp?PagAtual=" & i & "'>" & i & "</a></font>&nbsp;&nbsp;"
   END IF
Next

'------------------------------------------------------

IF CInt(PagAtual) <> CInt(TotalPages) THEN 

'##### CONDIÇÕES ########
'digitos mais significativos do Numero com 1 no fim > PagAtual
EX:  21   [ 22 ]  23   24  25         2 com 1 => 21 > 22 (F)
'OU
'PagAtual <= 10      E    TotalPages > 10
'EX:  ... 1  2  3  4 [ 5 ]  6  ...              5 <= 10 (V)  E   6 > 10 (F) 

IF (p1 > PagAtual) or ((PagAtual <= 10) and (TotalPages > 10)) THEN    

        Response.Write("<B><font color=""#660066"" size=""2"" face=""Arial"">")
        Response.Write("<a href='jogos.asp?PagAtual=" & final + 1 & "'>")
        Response.Write("...")
        Response.Write("</a></font></B>&nbsp;&nbsp;") 

          ELSE

        Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">")
        Response.Write("...") 
        Response.Write("</font></B>&nbsp;&nbsp;")

    END IF

       Response.Write("<B><font color=""#660066"" size=""2"" face=""Arial"">")
       Response.Write("<a href='jogos.asp?PagAtual=" & PagAtual + 1 & "'>")
       Response.Write("Próxima")
       Response.Write("</a></font></B>&nbsp;&nbsp;") 

       Response.Write("<B><font color=""#660066"" size=""1"" face=""Arial"">")
       Response.Write("<a href='jogos.asp?PagAtual=" & TotalPages & "'>")
       Response.Write("Ultima")
       Response.Write("</a></font></B>&nbsp;&nbsp;")        

  ELSE

       Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">")
       Response.Write("...") 
       Response.Write("</font></B>&nbsp;&nbsp;")

       Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">")
       Response.Write("Próxima") 
       Response.Write("</font></B>&nbsp;&nbsp;")

       Response.Write("<B><font color=""#EEEEEE"" size=""1"" face=""Arial"">")
       Response.Write("Ultima") 
       Response.Write("</font></B>&nbsp;&nbsp;")
End If 
'################## fim paginacao 02 #######################
Rs.Close  
Set RS = Nothing
Conn.Close      
Set Conn = Nothing       
    

%> 

Bom adaptei o esquema da Paginação 2 ao meu sistema, mas o que acontece é, os botoes de navegação funcionam numa boa, mas o botão de AVANÇAR +10 registros, não funciona, sempre fica apagado...

notei que esse IF é quem comanda ele:

IF (p1 > PagAtual) or ((PagAtual <= 10) and (TotalPages > 10)) THEN

Response.Write("<B><font color=""#660066"" size=""2"" face=""Arial"">")

Response.Write("<a href='jogos.asp?PagAtual=" & final + 1 & "'>")

Response.Write("...")

Response.Write("</a></font></B>&nbsp;&nbsp;")

ELSE

Response.Write("<B><font color=""#CCCCCC"" size=""2"" face=""Arial"">")

Response.Write("...")

Response.Write("</font></B>&nbsp;&nbsp;")

END IF

mas essa variavel p1, não consegui entender o que ela faz no codigo, ela so existe ai nessa linha!!!

alguém já rodo o codigo e funciono certinho??? to a 3 dias mexendo e refazendo e nada da certo, já substitui por tudo que foi variavel, mas nada muda!!!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Fernando.hevo84

olá SilverBlood, estou com o mesmo problema....

Bom, não ficou 100% , tem um erro que ainda não consegui acertar, mas já está funcional...

no luga do p1 coloquei como na linha abaixo

IF (PagAtual >= 10) or ((PagAtual <= 10) and (TotalPages > 10)) THEN

Link para o comentário
Compartilhar em outros sites

  • 0

pessoal, eu estou com um problema nesse codigo de paginação (o primeiro do tópico)

quando não há nenhuma informação no banco de dados, da erro no codigo, a página não exibe nada.....

gostaria de saber q qaudno não houver nada no banco de dados, mostra uma mensagem do tipo "nada foi emcontrado"....

como posso fazer isso???

grato

Rafael Rocha

Link para o comentário
Compartilhar em outros sites

  • 0
pessoal, eu estou com um problema nesse codigo de paginação (o primeiro do tópico)

quando não há nenhuma informação no banco de dados, da erro no codigo, a página não exibe nada.....

gostaria de saber q qaudno não houver nada no banco de dados, mostra uma mensagem do tipo "nada foi emcontrado"....

como posso fazer isso???

grato

Rafael Rocha

use

if rs.eof then

"nada"

else

paginação

end if

use apos a abertura do0 RS

Link para o comentário
Compartilhar em outros sites

  • 0

bom dia amigo.... estou tentanto utilizar esse código e tive o seguinte problema.

Tipo de erro:

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

'loop' sem 'do'

/pasta_web/WL_Studio/fotos_detalhes.asp, line 1628

LOOP

em meu código está assim:

<%

i = i+1

Count = Count + 1 'paginacao

RS.MoveNext

LOOP

'tb paginacao

%>

muito obrigado.

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
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...