Ir para conteúdo

POWERED BY:

Arquivado

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

RF programação

[Resolvido] ASP paginação quase funcionado

Recommended Posts

Amigos,

quando eu faço uma busca, filtrando por data e pelo campo palavra,

a paginação cria os links certinho. Ex: [1] 2 3 4

mas ao clicar em qualquer um dos links criados, EX: 1 [2] 3 4

ele exibe todos os dados do banco, paginando tudo!!! :(

as 4 páginas que foram encontradas, se transformam em um monte de páginas.

 

Obs>

Acho que tenho que passar alguma informação a mais pelo link, mas não sei como fazer :(

Alguém podia analisar o meu código? Obrigado!


<!-- #include file="conexao.asp" -->
<%
Session.LCID = 1046
XPalavra = request.form("Palavra")
      dim dteInicial      
      dteInicial = ("1000-01-01")  
      dim dteFinal      
      dteFinal = ("9999-01-01")
%>

<%
Set rs = Server.CreateObject("ADODB.Recordset")
Const numpag=10 'quantidade por pagina
Conexao.CursorLocation=3 'AdUseClient

intpg=cint(Request.QueryString("pg"))

if intpg=0 then intpg=1
'***************************************
'AQUI FICA O SELECT
'***************************************
set rs = conexao.execute ("SELECT * FROM Tabela WHERE NOME like '%"+XPalavra+"%' and DATA BETWEEN '"& dteInicial &"' and '"& dteFinal &"' ORDER BY NOME ASC")

IF rs.EOF then 
Response.Write "<div align=""center"" class=""TextoNegritoCinzaEscuro""><br><br>NENHUM REGISTRO ENCONTRADO!</span></div>"
else
rs.PageSize=numpag
rs.AbsolutePage=intpg
end if 

a=0 
i=0
while a < numpag and not rs.EOF
a=a+1
i=i+1
'***************************************
'Conteúdo
'***************************************
%>

<% =rs("NOME") %><% NOME=rs("NOME") %>
<% =rs("DATA") %><% DATA=rs("DATA") %>

'***************************************
'Fim do Conteúdo
'***************************************
<%
Rs.MoveNext()
Wend
%>

<font face="Arial,Verdana" size="2" color="#484848">
<%
for a = 1 to rs.PageCount
if a <> intpg then 

Response.Write " <a href='"&pagina&"?pg=" & a & "'>" & a & "</a> "
else
Response.Write "<b>[ "& a & " ]</b>"

end if
next
%>
</font>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se isso te ajuda:

 

<%
	query1 = "" 'AQUI FAÇO O SELECT
	set paginacao = Server.CreateObject("ADODB.RecordSet")
	paginacao.CursorLocation = 3
	paginacao.CursorType = 0
	paginacao.LockType = 1
	paginacao.PageSize = 15
	paginacao.Open query1, con, 3, 3   'EXECUTANDO A QUERY
    
	if not(paginacao.BOF or paginacao.EOF)then
	
		Dim intpagina
		if Request.QueryString("pg") = "" then
			intpagina = 1 'Primeira página
		else
			intpagina = Request.QueryString("pg")
		end If

		Dim TotalPages 'Pega o número total de páginas
		TotalPages = paginacao.PageCount
		paginacao.AbsolutePage = intpagina  'Configura a página atual
			
		'CONTADOR QUE CONTROLA A EXIBIÇÃO DOS REGISTROS
		intrec = 0
		
		query2 = "SELECT COUNT(*) AS total FROM (" & query1 & ")"
		set total_paginacao = con.execute(query2)
%>
	<form name="form" method="post">

	</form>
	<table width="720">
		<tr>
			<td colspan="6"><b><%=total_paginacao("total")%> voto(s) encontrado(s) (Detalhamento: a partir de 20/02/2009)</b></td>
		</tr>
		<tr>
			<td colspan="6"> </td>
		</tr>
							   
	<table>
		<tr>
			<td bgcolor="<%=bgColorTabelaHead%>" width="150" align="center"><b>Conteúdo 1</b></td>
			<td bgcolor="<%=bgColorTabelaHead%>" width="150" align="center"><b>Conteúdo 2</b></td>
		</tr>
<%
	        do while (intrec < paginacao.PageSize and not paginacao.EOF)
				if(bgFlag)then
					bgColor = bgColor1
					bgFlag = 0
				else
					bgColor = bgColor2
					bgFlag = 1
				end if
%>
		<tr>
			<td bgcolor="<%=bgColor%>" align="center"><%=paginacao("xyz")%></td>
                         <td bgcolor="<%=bgColor%>" align="center"><%=paginacao("qwerty")%></td>

		</tr>
<%
			intrec = intrec + 1
			paginacao.MoveNext
       		loop
%>
		</table>
		<br>
		<tr>
			<td colspan="6"> </td>
	    </tr>
<%
        if(TotalPages > 1)then
%>
	<tr>
			<td colspan="6" align="center">
				<table width="550">
					<tr>
						<td valign="top">
<%
            'VERIFICANDO SE NÃO ESTAMOS NA PRIMEIRA PÁGINA, PARA PODERMOS INSERIR O LINK "ANTERIOR"
            if intpagina > 1 then
                'HABILITAMOS O LINK
%>
				<a href="pagina.asp?pg=1" class="itemArea"><b>Primeira</b></a>  
				 	
				<a href="pagina.asp?pg=<%=intpagina - 1%>" class="itemArea"><b>Anterior</b></a>
<%				
			else
				'NÃO HABILITAMOS O LINK
                response.write("Primeira  ")
				response.write("Anterior")
			end If
%>
				</td>
				<td colspan="2" align="center" valign="top">
<%
			
			'---------- Numero de numeros para ser mostrados ----
			
			max_n_mostrados = 10
            
			intervalo = int(max_n_mostrados /2)
			inicio = intpagina - intervalo
			final = intpagina + intervalo

			if cint(inicio) < 1 Then 
			inicio = 1
			final = max_n_mostrados
			end if
			
			if cint(final) > cint(TotalPages) then final = TotalPages
				for i = inicio to final
					if cint(i)=cint(intpagina) then
					response.write(i & " ")
					end if
					
					if cint(i) < cint(intpagina) then
%>
					<a href="pagina.asp?pg=<%=i%>" class="itemArea"><b><%=i%></b></a> 
<%
					end if
	
					if cint(i) > cint(intpagina) then
%>
					<a href="pagina.asp?pg=<%=i%>" class="itemArea"><b><%=i%></b></a> 
<%
					end if
				Next
%>
			</td>
			<td align="right" valign="top">
<%
				'------------------------------------------------------

				if cint(intpagina) <> cint(TotalPages) then 

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

%>
				<a href="pagina.asp?pg=<%=intpagina + 1%>" class="itemArea"><b>Próximo</b></a>  

				
				<a href="pagina.asp?pg=<%=TotalPages%>" class="itemArea"><b>Última</b></a> 
<%
				else
		        'NÃO HABILITAMOS O LINK
                response.write("Próximo  ")
				response.write("Última")
            
			end if 
%>
						</td>
					</tr>
				</table>
			</td>
		</tr>
<%
        end if
    else
%>
        <table>
            <tr>
                <td><font color="#ff0000"><b>Não há detalhes.</b></font></td>
            </tr>
        </table>
		<br>
<%
    end if

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo, onde você pode escolher em palavra exata,and e or

'------------- SEARCH
'******************************************************
'******************************************************

On Error Resume Next



PAGE_SIZE = 20  ' display number of results


strURL = Request.ServerVariables("URL") ' the URL or Query string



'------------- q = the input text


strSearch = Request.QueryString("q") ' the input text

If strSearch = "" Then

 Server.htmlencode(Trim(Request.Form("q")))

End If


strSearch = Replace(strSearch, "'", "''")


'----------- p = RESULT PAGING

IF isnumeric(Request.QueryString("p")) = True OR Request.QueryString("p") = "" THEN

				  ' Retrieve page to show or default to the first
				  If Request.QueryString("p") = ""  OR Request.QueryString("p") < 1 Then
				  	iPageCurrent = 1
				  Else
				  	iPageCurrent = CInt(Request.QueryString("p"))
			  	  End If

ELSE

iPageCurrent = 1


END IF

p = iPageCurrent



'----------------- t = SELECTED TABLE

IF isnumeric(Request.QueryString("t")) = True OR Request.QueryString("t") = "" THEN

				  ' Retrieve t

				  If Request.QueryString("t") = ""  OR Request.QueryString("t") < 1 Then
				  	searchTable = 1 '1
				  Else

				  	searchTable =  1 'CInt(Request.QueryString("t"))

			  	  End If

ELSE

searchTable = 2 '1

END IF


'------------------- m = SEARCH METHOD

IF isnumeric(Request.QueryString("m")) = True OR Request.QueryString("m") = "" THEN

				  ' Retrieve m
				  If Request.QueryString("m") = ""  OR Request.QueryString("m") < 1 Then
				  	strMethod = 2
				  Else
				  	strMethod = CInt(Request.QueryString("m"))
			  	  End If

ELSE

strMethod = 2


END IF



'---------------THE FORM
%>

                  <form method="get" action="<%= strURL %>">
					<p>
					<input type="radio" name="m" value="1" <% IF strMethod = 1 THEN response.write "checked=""checked""" END IF%> />
                    	E
                    	<input type="radio" name="m" value="2" <% IF strMethod = 2 OR strMethod = "" THEN response.write "checked=""checked""" END IF%> />
                    	OU
                    	<input type="radio" name="m" value="3" <% IF strMethod = 3 THEN response.write "checked=""checked""" END IF%> />
                   	Exato</p>

					<p><input type="text" class="input3" name="q" value="<%= Trim(strSearch) %>" /></p>

                    <p><input type="submit" value="Procura" />
                    <br /><br /></p>

                  </form>
                  <%



If strSearch <> "" Then


		Session("strSearch") = strSearch

		IF isnumeric(Request.QueryString("t")) = True OR Request.QueryString("t") = "" THEN

						  ' Retrieve t

						  If Request.QueryString("t") = ""  OR Request.QueryString("t") < 1 Then
							searchTable = 1 '1
						  Else

							searchTable = 1 'CInt(Request.QueryString("t"))

						  End If

		ELSE

		searchTable = 1' 1

		END IF




		' THE TABLES

		Select Case searchTable

			Case CInt("1")

					dbTable = "tMessages"
					'strDBPath = Server.MapPath("/blogg/blog.mdb")


			Case CInt("2")

					'dbTable = "events"
					'strDBPath = Server.MapPath("")

			Case Else

					dbTable = "tMessages"
					'strDBPath = Server.MapPath("")


		End Select



'------------------ SQL



				  'SPLIT STRING INTO ARRAYS
				  'FOR and AND or CLAUSE SQL


'----------------- SQL tMessages blog table

IF searchTable = "1" THEN
IF strMethod < 3 THEN


			If strMethod = 1 Then
			strSplit = Replace(strSearch," "," and ")
			Else
			strSplit = Replace(strSearch," "," or ")
			End If


			colTerms = split(strSplit," and ",-1,1)

			iUpperTerms = UBound(colTerms)

			strWhereClause = ""



			'FIELD CLAUSES

			nr = 0
			Do while nr <= 5

			nr = nr + 1

			searchField = CInt(nr)

			Select Case searchField

				Case CInt("1")

					strTableInClause = "fDate"

				Case CInt("2")

					strTableInClause = "fHeadline"

				Case CInt("3")

					strTableInClause = "fMessage"

				Case CInt("4")

					strTableInClause = "fAuthor"

				Case CInt("5")

					strTableInClause = "fnota"
				
				'Case Else


			End Select


				  For iLoop = LBound(colTerms) to iUpperTerms
					orTerms = split(colTerms(iLoop)," or ",-1,1)
					iUpperOrTerms = UBound(orTerms)
					strWhereClause = strWhereClause & ""

						for iOrLoop = LBound(orTerms) to iUpperOrTerms
								strWhereClause = strWhereClause & strTableInClause & " LIKE '%" & Trim(orTerms(iOrLoop)) & "%' "

							if iOrLoop < iUpperOrTerms then
								strWhereClause = strWhereClause & " OR "
							end if
						next

						strWhereClause = strWhereClause & ""

						if iLoop < iUpperTerms then
								strWhereClause = strWhereClause & " AND "
						end If

				  Next

				  if nr <= 4 then
				  strWhereClause = strWhereClause & " OR "
				  end if

		Loop


ELSE

' METHOD 3 EXACT PHASE WHERE

strWhereClause = "fDate LIKE '%" & strSearch & "%' OR fHeadline LIKE '%" & strSearch & "%' OR fMessage LIKE '%" & strSearch & "%' OR fAuthor LIKE '%" & strSearch & "%'  OR fnota LIKE '%" & strSearch & "%'"

END IF


strWhereClause2 = "WHERE (" & strWhereClause & ") AND (online = CBool(-1))"

' ORDER BY
strOrderClause = "ORDER BY fdate DESC"



	IF strMethod = 3 THEN

		strSQL = "SELECT * FROM "& dbTable &" "& strWhereClause2 &" "& strOrderClause &";"

	ELSE

		strSQL = "SELECT * FROM "& dbTable &" "& strWhereClause2 &" "& strOrderClause &";"

	END IF


END IF

Response.write strSQL

'---------- END SQL tMessages BLog




'--------- CONNECTION OPEN & EXE SQL


	Set myRecSet = Server.CreateObject("ADODB.Recordset")
	myRecSet.PageSize  = PAGE_SIZE
	myRecSet.CacheSize = PAGE_SIZE

	' constants
	adOpenStatic = 3
	adLockReadOnly = 1
	adCmdText = &H0001


	myRecSet.Open strSQL, sConn, adOpenStatic, adLockReadOnly, adCmdText


	iRecordCount = myRecSet.RecordCount
	iPageCount   = myRecSet.PageCount



			   ' THE RESULT COUNTER

				strCountRecord = iRecordCount

				If iPageCurrent = 1 Then

				  		strCount = strCountRecord - iRecordCount + 1

				Else

						strCount = iPageCurrent * PAGE_SIZE - PAGE_SIZE + 1

						'strCountRecord -  + * iPageCurrent

				End If



	If iRecordCount = 0 Then


		%>			<p>Desculpa, sua busca não retornou resultados.<br />
                    Sua Busca por - <b><%=strSearch%></b> - não retornou documentos.</p>

                  <%
	Else

		myRecSet.AbsolutePage = iPageCurrent

		If iRecordCount <= PAGE_SIZE then
		toRecord = iRecordCount
		else
		toRecord = strCount + PAGE_SIZE - 1
		End if
		If toRecord => iRecordCount then
				toRecord=  iRecordCount
		End if

		%>

                        <p>Mostrando  resultado <%=strCount%> - <%=toRecord%> de <%=iRecordCount %>. Paginas <%= iPageCurrent %> / <%= iPageCount %>. </p>
						<br /><p>
                        <%

		If iPageCurrent > 1 Then
			%>
                        <a href="<%= strURL %>?m=<%= Server.URLEncode(strMethod) %>&t=<%= Server.URLEncode(searchTable) %>&q=<%= Server.URLEncode(strSearch) %>&p=<%= iPageCurrent - 1 %>" title="Previous">
                        ‹‹</a>
                        <%
		End If


		For I = 1 To iPageCount
			If I = iPageCurrent Then

			%>

                        <%= I %>
                        <%
			Else
				%>
                        <a href="<%= strURL %>?m=<%= Server.URLEncode(strMethod) %>&t=<%= Server.URLEncode(searchTable) %>&q=<%= Server.URLEncode(strSearch) %>&p=<%= I %>" title="<%= I %>"><%= I %></a>
                        <%
			End If
		Next 'I

		If iPageCurrent < iPageCount Then
			%>
                        <a href="<%= strURL %>?m=<%= Server.URLEncode(strMethod) %>&t=<%= Server.URLEncode(searchTable) %>&q=<%= Server.URLEncode(strSearch) %>&p=<%= iPageCurrent + 1 %>" title="Next"> ››</a>
                        <%
		End If
		%></p>

        <%

'----------------THE RESULT LOOP


		Do While Not myRecSet.EOF And myRecSet.AbsolutePage = iPageCurrent


					intNumMatches = 0
					allregText = ""
					regWriteOut = ""

					If strSearch = " " then
						strSearch = ""
					End if

					Set objRegExp = New RegExp
					objRegExp.Global = True
					objRegExp.IgnoreCase = True


					If dbTable = "tMessages" then
					allregText = myRecSet.Fields("fDate").Value & " " & myRecSet.Fields("fHeadline").Value & " " & myRecSet.Fields("fMessage").Value & " " & myRecSet.Fields("fAuthor").Value
					End If


					allregText = Replace(allregText, "<", "", 1, -1, 1)
					allregText = Replace(allregText, ">", "", 1, -1, 1)
					allregText = UTFtoISO(allregText)

					If strMethod = 3 then

					'Set the pattern to search for
					objRegExp.Pattern = strSearch

					'Search the file for the phrase
			 		Set objMatches = objRegExp.Execute(allregText)

					'Get the number of times the phrase is matched
					intNumMatches = objMatches.Count

					End if

					If strMethod < 3 then

					sarySearchWord = Split(strSearch, " ")
					For intSearchLoopCounter = 0 to UBound(sarySearchWord)

					'Set the pattern to search for
					objRegExp.Pattern = "" & sarySearchWord(intSearchLoopCounter) & ""

					'Search the file for the phrase
					Set objMatches = objRegExp.Execute(allregText)

					intNumMatches = intNumMatches + objMatches.Count

					Next
					End if



			 		If intNumMatches => 1 Then

					If intNumMatches > 1 then
					regWriteOut = "" & intNumMatches & " hits."
					Else
					regWriteOut = "" & intNumMatches & " hit."
					End If

			 		End If

					Set objRegExp = Nothing



			%>


					<% IF dbTable = "tMessages" THEN %>
					<p><br /><br />
					<%=strCount%>. <a href="default.asp?id=<%= myRecSet.Fields("id").Value %>" title="<%=myRecSet.Fields("fHeadline").Value%>"><%= myRecSet.Fields("fHeadline").Value %></a>
					<br /><%= RemoveHTML(Left(myRecSet.Fields("fMessage").Value,instrrev(Left(myRecSet.Fields("fMessage").Value,280),"")))%>
					<br />
					Postado: <%= year(myRecSet.Fields("fdate").Value)  & "-" & right("00" & cstr(month(myRecSet.Fields("fdate").Value)),2) & "-" & right("00" & cstr(day(myRecSet.Fields("fdate").Value)),2) & ". " & regWriteOut%>
					</p>
					<% END IF%>


           <%


						strCount = strCount + 1
			myRecSet.MoveNext
		Loop


'----------------THE RESULT LOOP END
		%>
                    	<br /><br /><p>
                        <%

		If iPageCurrent > 1 Then
			%>
                        <a href="<%= strURL %>?m=<%= Server.URLEncode(strMethod) %>&t=<%= Server.URLEncode(searchTable) %>&q=<%= Server.URLEncode(Session("strSearch")) %>&p=<%= iPageCurrent - 1 %>" title="Previous">‹‹</a>
                        <%
		End If


		For I = 1 To iPageCount
			If I = iPageCurrent Then
				%>

                        <%= I %>
                        <%
			Else
				%>
                        <a href="<%= strURL %>?m=<%= Server.URLEncode(strMethod) %>&t=<%= Server.URLEncode(searchTable) %>&q=<%= Server.URLEncode(Session("strSearch")) %>&p=<%= I %>" title="<%= I %>"><%= I %></a>
                        <%
			End If
		Next 'I

		If iPageCurrent < iPageCount Then
			%>
                        <a href="<%= strURL %>?m=<%= Server.URLEncode(strMethod) %>&t=<%= Server.URLEncode(searchTable) %>&q=<%= Server.URLEncode(Session("strSearch")) %>&p=<%= iPageCurrent + 1 %>" title="Next">››</a>
                        <%
		End If
		%>

                    <%

		End If

%></p>
<%

		' CLOSE & DISPOSE

		myRecSet.Close
		Set myRecSet = Nothing
		End If



'---------------- SEARCH END

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que jogar o que foi buscado na query string para ele filtrar:

 

troque isso:

XPalavra = request.form("Palavra")

por isso

XPalavra = request.querystring("Palavra")

e adicione essa query no seu SQL e tbm aqui

Response.Write " <a href='"&pagina&"?pg=" & a & "&XPalavra="&request.querystring("Palavra")&"'>" & a & "</a> "

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Ted k',

Acho que é por aí,

mas ainda não deu certo, agora ele faz paginação de todos os dados.

Antes:

Ao fazer a busca aparecia

[1] 2 3 4 :)

e ao clicar no link 2 aparecia todos links

1 [2] 3 4 5 6 7 8 9 10 :(

 

Agora:

Aparece todos os links de uma só vez

[1] 2 3 4 5 6 7 8 9 10 :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode pegar um exemplo correto, funcionando perfeitamente, e dar uma analisada, e depois verifica seu code, ja k naun esta cdando erro , mas pode ser uma logica diferente k esta fazendo...

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dei um response.write no XPalavra e não tá passando o valor!!

 

XPalavra = request.querystring("Palavra")

 

Ao invés de usar o Request.QueryString use apenas Request. Isso trás uma pequena perda de performance, mas é melhor em seu caso.

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.