Ir para conteúdo

POWERED BY:

Arquivado

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

lote14

[Resolvido] Paginação com url amigável

Recommended Posts

Olá pessoal estou precisando de um help de vocês, ok?

 

Tenho este código que é uma página que exibo com os tópicos de um fórum paginado:

 

<%
'exibe um loop com todos os posts
set rs = Conn.Execute("minha consulta ao banco")

'paginação
registros = 30 'registros por página
pagina = Request.QueryString("pagina")

If pagina = "" Then
pagina = 1
redireciona_ultima="ok"
End If

rs.PageSize = registros

'cria o numero de colocação
u=cint(pagina)
n=0
i=0
do while i<u
i=i+1 
n=n+registros
loop

If rs.EOF Then
Response.Write "# Nenhum registro encontrado para sua busca"
Else
rs.AbsolutePage = pagina

While Not rs.EOF AND x < rs.PageSize
x = x + 1
n=n+1 
%>

meus registros	

<%rs.movenext
wend%>

</div><!--content forum post-->
	<%anterior = pagina - 1
	proxima = pagina + 1
	ultima = rs.PageCount
	primeira = 1
	ultm2 = FormatNumber(rs.PageCount - 1,0)
	%>
	<div id="content_paginacao">
		<%If pagina <> 1 Then
		Response.Write "<a href=forum_post.asp?topico_id="&topico_id&"&pagina="&primeira&">« Primeira</a> "
		End If

		If pagina > 1 AND pagina <> 2 Then
		Response.Write "<a href=forum_post.asp?topico_id="&topico_id&"&pagina="&anterior - 1&">"&anterior - 1&"</a> "
		End If

		If pagina > 1 Then
		Response.Write "<a href=forum_post.asp?topico_id="&topico_id&"&pagina="&anterior&">"&anterior&"</a>"
		End If
Response.Write "<span class='active'>"&pagina&"</span>"

		If Not rs.EOF Then
		Response.Write "<a href=forum_post.asp?topico_id="&topico_id&"&pagina="&proxima&">"&proxima&"</a> "
		End If

		If Not rs.EOF AND pagina <> ultima AND pagina <> ultm2 Then
		Response.Write "<a href=forum_post.asp?topico_id="&topico_id&"&pagina="&proxima + 1&">"&proxima + 1&"</a>"
		End If

		If Not rs.EOF Then
		Response.Write "<a href=forum_post.asp?topico_id="&topico_id&"&pagina="&ultima&">Última »</a>"
		End If	

>>>>>>>>> redireciona para última página
		if (redireciona_ultima="ok" and rs.recordcount>registros) then
           response.Redirect "http://www.gabarite.com.br/forum_post.asp?topico_id="&topico_id&"&pagina="&ultima&""
           end if
		%>
 </div><!--content paginacao-->


 

os links para entendimento:

 

http://www.site.com.br/forum/684-pagina-qualquer << primeira página, pois [pagina=""]
http://www.site.com.br/forum/forum_post.asp?topico_id=467&pagina=2
http://www.site.com.br/forum/forum_post.asp?topico_id=467&pagina=3
http://www.site.com.br/forum/forum_post.asp?topico_id=467&pagina=4

 

A lógica é o seguinte quando clico no link de primeira pagina que esta lista na pagina anterior ele é enviado para a pagina do código que postei e faz assim:

 

cliquei neste link http://www.site.com.br/forum/684-pagina-qualquer

 

Se for a primeira, com [pagina=""] então verifica se existe outras paginas internas se sim redireciona para ultima.

 

http://www.site.com.br/forum/forum_post.asp?topico_id=467&pagina=4 ultima pagina

 

 

Meio complicado de explicar isso: Tipo este fórum www.discussao.net quando clicamos em um link do tópico a pagina lista os posts e exibe diretamente os ultimos. Como faço isso sem redirecionar!?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não sei se entendi bem, mas para ver os últimos tópicos você pode usar um exemplo assim:

 

você pode antes recuperar o ultimo registro incluido, você pode usar o SQL Last()

A função Last() retorna o último valor da coluna selecionada.

 

SELECT LAST(column_name) FROM table_name

 

existem alguns tópicos sobre este assunto no forum, da´uma pesquisada...

 

no SQL SERVER, você pode recuperar essa valor com

 

SELECT @@IDENTITY

 

no MySQL você pode usar o LAST_INSERT_ID()

 

========

 

ultimo registro e somar + 1 e inserir no bd

<%@ Language=VBScript %>
<% Option Explicit %>
<%
'conexao teste com  mdb
Dim localbd, bd

Set bd = Server.CreateObject("ADODB.Connection")
localbd = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath("banco.mdb") 
bd.Open localbd 

Dim sql, rs
Dim cd_pedido

Set rs = Server.CreateObject("ADODB.RecordSet")

if Request.Form("btenvia") = "Gerar Numero" then
       'Novo numero
       SQL = "SELECT MAX(N_PEDIDO)+1 AS ULITMO_PEDIDO FROM PEDIDO"
       Set rs = bd.Execute (sql)
       cd_pedido = rs.Fields("ULITMO_PEDIDO").Value 

       'inserindo novo numero
       bd.Execute ("INSERT INTO PEDIDO (N_PEDIDO) VALUES (" & cd_pedido & ")")
       rs.Close

end if

'verificando numero
SQL = "SELECT MAX(N_PEDIDO) AS ULITMO_PEDIDO FROM PEDIDO"
Set rs = bd.Execute (sql)
cd_pedido = rs.Fields("ULITMO_PEDIDO").Value 


rs.Close
Set rs = Nothing

bd.Close
Set bd = Nothing
%>
<html>
<head>
<title>Numero Sequencial</title>
</head>
<body>
<center>
<form  id="frm" action="Numero_Sequencial.asp" method="post">
Numero do ultimo pedio:<%=cd_pedido%><br>
<input type="submit" id="btenvia" name="btenvia" value="Gerar Numero" />
</form>
</center>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo consegui resolver. Valeu!

 

Quando entro na página, entro na pagina 1, certo?

 

Fiz o seguinte, como exibo a paginação de 30 registros, peguei o total de registros (30) e dividi pelo total de posts (exemplo 901), arredondei para cima (com uma função)dai tenho a última página da paginação.

 

pagina = arredCima(rs.RecordCount/registros) 'obtem a ultima pagina

 

Meio complicado de explicar mais o importante é que resolvi.

 

Obrigado pelo apoio, até!!!

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.