Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dedindol

[Resolvido] Paginação

Recommended Posts

olá galera, ói eu dinovo.....esse sistema tá me deixando careca...rsrs

 

to com um problema na páginação de depoimentos em uma página do meu site.

 

eu tenho a página que mostra os depoimentos pronta:

 

CODE

<%

Dim Vid

 

Vid = Request.QueryString("id")

 

Call AbreConn()

 

sql = "Select * From tbdepo Where indepo=" & 4

 

Set rs = conn.Execute(sql)

 

'Setando a variável foto para receber o nome da imagem do banco de dados

foto = Rs("imagem")

 

%>

 

<link href="inc/estilos.css" rel="stylesheet" type="text/css">

<style type="text/css">

<!--

body {

margin-left: 0px;

margin-top: 0px;

margin-right: 0px;

margin-bottom: 0px;

}

-->

</style><table width="195" height="365" border="0" cellpadding="0" cellspacing="0">

<tr>

<td valign="top"><table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">

<tr>

<td width="182" height="100%" background="images/index_r19_c2.gif"><table width="100%" height="100%" border="0" cellpadding="2" cellspacing="2">

<tr>

<td height="20"><img src="images/index_r24_c33.gif" alt="Depoimentos" width="116" height="12"></td>

</tr>

<tr>

<td height="235" valign="middle" class="azul_marinho"><table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td class="azul_marinho"><p align="justify"><%Response.Write(Replace(rs("depoimento"), Chr(13) & Chr(10), "<br />"))%></p> </td>

</tr>

<tr>

<td class="azul_marinho"> </td>

</tr>

<tr>

<td height="15" class="azul_marinho"><strong><%=rs("nome")%></strong></td>

</tr>

<tr>

<td height="15" class="azul_marinho"><%=rs("cargo")%></td>

</tr>

<tr>

<td height="15" class="azul_marinho"><%=rs("empresa")%></td>

</tr>

</table> </td>

</tr>

</table></td>

<td width="14" height="100%" background="images/index_r12_c41.gif"> </td>

</tr>

<tr>

<td height="105" colspan="2" valign="bottom"><table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="99" height="105" rowspan="3" background="images/index_r19_c2.gif"><table width="100%" height="105" border="0" cellpadding="2" cellspacing="2" class="azul_marinho">

<tr>

<td align="right" valign="bottom">< 2 de 10 > </td>

</tr>

</table></td>

<td width="97"><img src="images/index_r30_c36.gif" width="97" height="23"></td>

</tr>

<tr>

<td height="46"><table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="23"><img src="images/index_r32_c36.gif" width="23" height="46"></td>

<td width="73" height="46" align="center" valign="middle"><img src="../fotos<%=foto%>"></td>

</tr>

</table></td>

</tr>

<tr>

<td width="97"><img src="images/index_r33_c36.gif" width="97" height="36"></td>

</tr>

</table></td>

</tr>

</table></td>

</tr>

</table>

 

<%

rs.Close()

Set rs = Nothing

 

Call FechaConn()

%>

´

Agora me pediram para colocar paginação nessa página, como não sei fazer isso eu peguei um código pronto aqui no forum mesmo:

 

CODE

<!--#Include File="conexao.asp"-->

 

<%

Call AbreConn()

 

'Vamos criar o objeto Record Set -> neste caso é necessário declará-lo,

'pois vamos utilizar algumas funções deste objeto

Set RS = Server.CreateObject("adodb.recordset")

 

RS.PageSize = 1 'quantidade de registros por página. Você pode alterar sem conforme precise.

 

'Vamos fazer a busca na tabela contatos

SQ = "select * from tbdepo"

RS.Open SQ,Conn,3,3

 

'Vamos agora verificar exceções do tipo “fim de arquivo” (EOF), se a página atual é menor

'que zero, se é maior que o número total de páginas, etc.

IF RS.EOF then

Response.Write "nenhum registro encontrado"

Response.End 'paramos o programa

ELSE

'Definindo em qual pagina o visitante está

IF Request.QueryString("pagina")="" then

intpagina=1

ELSE

IF cint(Request.QueryString("pagina"))<1 then

intpagina=1

ELSE

IF cint(Request.QueryString("pagina"))> RS.PageCount then

intpagina=RS.PageCount

ELSE

intpagina=Request.QueryString("pagina")

END IF

END IF

END IF

END IF

'Fim das verificações de exceções

 

'Usamos a propriedade AbsolutePage para dizer ao RS que página ele esta

RS.AbsolutePage=intpagina

 

' Inicia o contador que vai controlar os registros mostrados

intrec=0

 

'Enquanto o contador for menor que a quantidade de registros mostrados ou

' não for o final do arquivo

While intrec < RS.PageSize and not RS.EOF

'------------------- AQUI VEM TUDO O QUE SEÁ PAGINADO -----------------------

response.write RS("nome") & " - " & RS("empresa") & " - " & RS("imagem") & "<BR>"

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

RS.MoveNext

 

' Acrescenta +1 ao contador

intrec=intrec+1

'Se for EOF (fim de arquivo), imprimir branco na tela

IF RS.EOF then

response.write " "

END IF

Wend 'fim do loop

 

'Vamos verificar se não é a página 1, para podermos colocar o link “anterior”.

IF intpagina > 1 then

%>

<a href="paginacao.asp?pagina=<%=intpagina-1%>">Anterior</a>

<%

END IF

 

'Se não estivermos no último registro contado, então é mostrado o link p/ a próxima página

IF strcomp(intpagina,RS.PageCount) <> 0 then

%>

<a href="paginacao.asp?pagina=<%=intpagina + 1%>">Próxima</a>

<%

END IF

%>

o arquivo de inlusão "conexão.asp" é o que estou utilizando nas demais páginas e as variáveis estão corretas de acordo com as que já utilizo para mostrar na página de depoimentos.

 

Antes de ir colocando esses códigos na página de depoimentos eu fui testar pra ver se funcionava, mas deu o seguinte erro:

 

ADODB.Recordset error '800a0cb3'

 

Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype.

 

/novo/adm/paginacao.asp, line 40

A linha 40 é essa aí:

 

RS.AbsolutePage=intpagina

Alguém pode me ajudar?

 

Valeu galera...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A é..esqueci de mensionar...

 

o banco de dados é my sql.....será qeu tem alguma coisa ha ver?

 

alguém sabe como posso corrigir isso ou fazer uma paginação que funcione...rsrs

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

talvez esta versao do mysql nao tenah suporte a alguma propriedades do recordset que esta tentando usar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente acho que o problema é que não há suporte do my sql para a propriedade "AbsolutePage"

 

A solução que achei é a seguinte...Por via das dúvidas postarei esse código como dica na seção de dicas...se eu tiver errado me corrijam por favor...

 

CODE
<%

 

cn.open

'pega a pagina atual

pagina = request.ServerVariables("SCRIPT_NAME")

 

'numero de registros por pagina...

pageSize = 3

 

if(len(Request.QueryString("p")) = 0 )then

paginaAtual = 1

else

paginaAtual = CInt(Request.QueryString("p"))

end if

 

' conta o numero de registros...

sql = "SELECT COUNT(*) AS total FROM noticias"

set rs = cn.execute(sql)

 

'total de registros

recordCount = Cint(rs("total"))

 

'calculamos o numero de paginas...

 

pageCount = Clng(recordCount / pageSize)

 

If pageCount < 1 then

pageCount = 1

end if

 

rs.Close()

 

 

Flag1 = INT(paginaAtual / pagesize)

 

PI = INT(Flag1 * pagesize)

 

IF PI = 0 THEN

PI = 1

END IF

PF = PI + pagesize - 1

 

' selecionamos os registros...

sql = "SELECT * FROM noticias LIMIT " & (paginaAtual - 1) * pageSize & " , " & pageSize

 

set rs = cn.execute(sql)

 

do while not rs.eof

' aqui entra o q você quer exibir

Response.Write rs("id_noticia") &" - "& rs("titulo_noticia") & "<br>"

rs.MoveNext()

loop

 

rs.Close()

set rs = nothing

cn.Close()

set cn = nothing

 

Response.Write ("<B><strong> Página " & paginaAtual & " de " & pagecount & " </strong></B><br>")

' cria os links de pagians...

IF CInt(paginaAtual) > 1 THEN

Response.Write "<a href='"&pagina&"?p=1'>Primeira</a> "

Else

Response.Write "<font color=""#ADADAD"">Primeira</font> "

END IF

 

if CInt(paginaAtual) > 1 then

Response.Write "<a href='"&pagina&"?p=" & paginaAtual - 1 &"'>Anterior</a> "

Else

Response.Write "<font color='#666666'>Anterior</font>  "

END IF

 

for i=1 to pageCount

Response.Write("<a href='"&pagina&"?p=" & i & "'>" & i & "</a> ")

next

 

 

IF (CInt(paginaAtual) < pagecount) THEN

IF CInt(PF) <> pagecount THEN

Response.Write "<a href='"&pagina&"?p=" & paginaAtual+1 & "'>Próxima</a> "

END IF

Else

Response.Write "<font color=""#ADADAD"">Próxima</font> "

END IF

 

 

IF (CInt(paginaAtual) <> pagecount) THEN

IF CInt(PF) <> pagecount THEN

Response.Write "<a href='"&pagina&"?p=" & pagecount & "'>Última</a> "

END IF

Else

Response.Write "<font color=""#ADADAD"">Última</font> "

END IF

%>

 

 

esse aí funcionou perfeitamente,

 

valeu galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao para MYSQL com versoes que nao aceitam as propriedades de RS deve-se usar o LIMIT e efetuar os calculos necessario

 

Parabens pela solução

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.