estou fazendo uma paginacao no braco!!! com sql… é mais para aprendizagem!!!
seguinte listeis meus registros que estao no banco… ate ai tudo normal…
consegui fazer listar somente quantos eu quero por pagina, mas ai entra o problema:
tenho 10 registros no banco de dados… quero que por “pagina” ele liste apenas os primeiros 5, depois quando eu clicar em PROXIMO eu quero que ele liste os outros cinnco e assim por diante… claro na mesma pagina!!!
Postar a sua lógica de paginação seria o mais viável nesse caso, mas o que agora é possível lhe dizer é que você pode passar um parâmetro pela URL pra indicar qual registro iniciar a amostragem. Exemplo:
Você irá basear essa paginação no uso do método ResultSetabsolute() que, através de um parâmetro int move o cursor para determinada posição. Usaremos o parâmetro “start” para indicar a partir de qual registro iremos mostrar.
Então é simples:
// abre o bd, cria o ResultSet, etcintstart=request.getParameter("start");if(start!=null){objResultSet.absolute(start);}else{objResultSet.moveFirst();start=1;}for(intrecord=1;record<=5;record++){// imprime registroobjResultSet.moveNext();}
Então, os links para “Próxima página” deverão ser algo do tipo:
Acredito que deva haver alguma(s) maneira(s) de fazer isso mais “elegantemente”, mas essa foi a idéia quem e veio à cabeça nesse momento. Qualquer dúvida, poste aí.
F
febeckers
<%intLimitePagina=5;intPrimeiraPagina=1;Class.forName("org.postgresql.Driver");Connectioncon=DriverManager.getConnection("jdbc:postgresql://localhost/postgres","postgres","postgres2");Statementst=con.createStatement();Statementst2=con.createStatement();ResultSetrs=st.executeQuery("SELECT * FROM imovel LIMIT "+LimitePagina+"/"+PrimeiraPagina+"");ResultSetrs2=st2.executeQuery("SELECT count(*) as c FROM imovel");rs2.next();intTotalRegistros=Integer.parseInt(rs2.getString("c"));intTotalPaginas=Math.round(TotalRegistros/LimitePagina);if(PrimeiraPagina>0){%>[<ahref="?=1">PrimeiraPágina</a>][<ahref="?=<%=PrimeiraPagina-LimitePagina%>">Anteriores</a>]<%}%><%if(PrimeiraPagina<(TotalPaginas*LimitePagina)-LimitePagina){%>[<ahref="?=<%=PrimeiraPagina+LimitePagina%>">Próximo</a>][<ahref="?=<%=(TotalPaginas*LimitePagina)-LimitePagina%>">Ultima</a>]<%}while(rs.next()){%>
cara ta ai todo o codigo desde conexao, listagem e criacao dos links…
so tem um detalhe ele NÃO ta funcionando a parte de navegacao…
sera que tu podes me ajudar?? hehe ou me expolicar o que eu estou fazendo de errado??
abraco te mais!!!
Barroso
Cara não pode usar DisplayTag é muito facil de configurar e fica perfeito!!!
F
febeckers
na verdade eu nao sei usar esse tal de displaytag…
e queria ver a diferenca entre os dois…
e tbm queria enteder melhor como funciona no SQL…
Y
Yky_Mattshawn
Cara, eu não tenho muita noção sobre o uso da clásula LIMIT.
F
febeckers
cara o LIMIT serve pra “limitar” qts registros virao por paginas entendeu??
no meu caso eu quero que liste 5 registros por pagina, criei uma variavel para armazenar quantos registros eu quero que mostre… e dei o select…
mas assim oh ele ta listando perfeitamente, cria os links e tudo certinhu, so que os links nao estao funcionando…
tenho eu em mente que seja por causa do Parametro da URL e eu nao saco muito disso entende?? se vc pudesse me dar uma ajudinha nesse quesito, o resto eu consigo terminar…
abraco!
Y
Yky_Mattshawn
Mas eu não entendi pq voc~e usou aquela concatenação de:
LimiteRegistros + “/” + PrimeiraPagina
O que isso define?
F
febeckers
cara estou usando Postgres…
e postgres ao contrario de outro bancos quando se trata de LIMIT ele comeca ler ao contrario…
acompanha o raciocinio…
se fosse com outro banco de dados o limit funcionaria da seguinte maneira…
selecione todos os registros da tabem imovel a contar de 1 ate 5 ( select * from imovel limit 1/5)
no postgres e ao contrario seri (select * from imovel 5/1)
entendeu?
F
febeckers
tem alguem que sabe o que estou fazendo de errado???