Jump to content
Fórum Script Brasil
  • 0

Paginação - Ótimo Script


AlexCT
 Share

Question

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 - [email protected] @@@@@@
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

  '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 to comment
Share on other sites

21 answers to this question

Recommended Posts

  • 0

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

ate mais

Link to comment
Share on other 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 to comment
Share on other sites

  • 0

PAGINAÇÃO 02

'################## paginacao 02 ########################
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'@@@@@@@ ALEX TEIXEIRA - [email protected] @@@@@@
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

  '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 to comment
Share on other 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 to comment
Share on other sites

  • 0
Bom dia galera,

Não rola uma paginação dessas stilo google em asp com mysql?

Peguei um codigo aqui mesmo no forum mas não conseguir rodar ela, não aceita RS.

Valeu

Até mais

veja na minha assinatura o link da paginação

Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 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...