Ir para conteúdo
Fórum Script Brasil
  • 0

Paginacao Getrows


sergiotp

Pergunta

E ae glr... tudo certo? Espero q sim...

Resolvi estudar um pouco de getrows e minha duvida é a seguinte... Peguei o codigo q ta no tópico de funcoes aq forum e resolvi tentar fazer uma paginaçao com o banco de dados de um site de imobiliaria q eu to fazerndo aq.... Entaum a paginaçao deu certinho... porem so foi printado na pagina a minha segunda coluna do banco de dados...

E eu quero printar na tela o banco de dados todo... o que pode ta ocorrendo???

Como já disse o código é o mesmo do tópico de funcoes aq, so muda o nome dos campos...

Código:

<%
Set Conexao = Server.CreateObject("ADODB.Connection")
Dim Dbq6
Dbq6 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../database/database.mdb") & ";Persist Security Info=False;Jet OLEDB:Database Password="
Conexao.Open Dbq6
%>
<%
pagina = request("pagina")
if pagina = "" then
pagina = 1
else
pagina = cint(pagina)
end if

SQL="SELECT * FROM imoveis ORDER by id DESC"
SET RS = Server.CreateObject("Adodb.recordset")
RS.Open SQL,Conexao,3,3
if not rs.eof then
imoveis = rs.getrows()
end if
rs.close
set rs = nothing

total = ubound(imoveis,2)
registros = 10
paginas = total / 10

if cint(paginas) * registros < total then
paginas = cint(paginas) + 1
end if

if pagina = 1 then
inicio = 0
else
inicio = cint(registros) * (pagina) - 10
end if

fim = cint(inicio) + 9
if cint(fim) > cint(total) then
fim = cint(total)
end if
%>
Mostrando os dados:
<%
FOR I=inicio TO fim
	response.write imoveis(1,i) & "<br>"
next
%>

Queria mostrar todos os registros... deem uma mao ae glr

Desde já agradeço a atenção...

Abraços

Link para o comentário
Compartilhar em outros sites

21 respostass a esta questão

Posts Recomendados

  • 0

hmmm acho que sou o mais indicato para te ajudar, já que fui eu que criei esse monstro ahuahuahua

então se eu entendi, você quer mostar todos ? então não seria mais uma paginação ? é isso ?

ou você gostaria de mostrar outras colunas, alem de sei al só o tipo, ou só a locailização ?

explica melhor que te ajudo =)

OBS: Tenhp que mudar uma coisa nesse codigo amanhã, um pequeno bugzinho =P

Link para o comentário
Compartilhar em outros sites

  • 0

Bom eu quero mostrar todos os dados do banco de dados... ow seja todas as colunas... e o codigo so ta me mostrando uma... Eu vi o que o urso mando ali e vo tentar arrumar o meu codigo aq... mas é isso ae q eu quero DackAle...

O banco não ta nem estão grande nem estão pequeno... to fazendo com getrows mais pra estudo meu mesmo..

Entaum é isso

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Ta vamo la entaum deixa eu intender... pois não sou bom em arrays ainda to aprendendo....

isso aq oh

TotalColunas = UBound(ArrRs,1)
porque o 1 ali? Quando você fez ArrRs = Rs.GetRows ele pega todo o banco e armazena na variavel arrrs certo? dai não intendi o array ali q tem o 1... Agora esse aq:
  For U =  0 To (TotalColunas-6)

porque o -6?

Bom me expliquem ae.. to apredendo e queria saber o funcionamento disso ae...

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

<%
FOR I=inicio TO fim
response.write imoveis(1,i) & " - " & imoveis(2,i) & "<br>"
next
%>
você pode colocar manualmente as que você quer como aqui emcima ou
<%
FOR I=inicio TO fim
FOR U=LBOUND(imoveis,1) TO UBound(imoveis,1)
response.write imoveis(U,I)
NEXT
response.write "<br>"
NEXT
%>

achop que isso funciona, não tentei, mas joguei um looping dentro do outro, me da um toque ae se der erro ou se der certo...

Link para o comentário
Compartilhar em outros sites

  • 0

Fala brother, na paz?... deu certo... eu testei a segunda opção... ele me mostrou todas as colunas porem sem ordem nenhuma

um exemplo de como os dados estão sendo imprimidos...

29ComercialtestetestetestetestetestetstsedfafdsadfsfdfddfffdfdfafdafadfaffadfdfdffdfafdafTrue53526633580021/3/2005

27Chacara3000 m2Rua Chico Dalbert5Lapa3Belissima chacara para fins de semana e feriados. Possui campo de futebol gramado, piscina, churrasqueira, quadra de tenis e muito mais para o seu lazer. A casa possui uma sala com lareira, sala de TV, cozinha ampla.150,00concluidaaluguelimagens/fotos/14.jpgFachadaLinda chacaraFalse22817814574522/10/2003 01:15:58

26casa800m²Rua José Pedro da Silva333Lapa53Cozinha, 3 banheiros, lavanderia, garagem para dois carros, etc...1.000.000,00concluídocompra24x com juros de 5% ao mêsimagens/fotos/13.jpgfachadaGaragem grande, cozinha, etcTrue32814869184017/2/2003 18:19:45

25casa800m²Rua José Pedro da Silva333Lapa53Cozinha, 3 banheiros, lavanderia, garagem para dois carros, etc...1.000.000,00concluídocompra24x com juros de 5% ao mêsimagens/fotos/12.jpgfachadaGaragem grande, cozinha, etcFalse70926216195717/2/2003 18:19:45

23Sitio7000m2Rua GuaiubaLapa5teste500.000,00Concluídacompraimagens/fotos/9.jpgFachadatesteFalse31104269858922/10/2003 01:24:52

22Chacara3000 m2Rua Chico Dalbert5Lapa3Belissima chacara para fins de semana e feriados. Possui campo de futebol gramado, piscina, churrasqueira, quadra de tenis e muito mais para o seu lazer. A casa possui uma sala com lareira, sala de TV, cozinha ampla.150,00concluidaaluguelimagens/fotos/6.jpgFachadaLinda chacaraFalse24521624381122/10/2003 01:15:58

9terreno100m²Rua José Pedro da Silva1234LapaPlano, etc12.000,00construçãocompra10x sem jurosimagens/fotos/15.jpgfrentehttp://www.alpw.com/pni/imagens/fotos/ter_01.gifcimaPlana, etcTrue44529678980518/2/2003 02:05:18

8terreno100m²Rua José Pedro da Silva777LapaPlano, etc15.000,00construçãocompra12x sem jurosimagens/fotos/2.jpgfachadaPlana, etcFalse51812723683518/2/2003 02:05:09

7comercial60m²Rua José Pedro da Silva666LapaSala, Banheiro, garagem, etc...75.000,00construçãocompra24x com juros de 5% ao mêsimagens/fotos/3.jpgfachadaLugar estratégico, esquina, etcTrue34239277216617/2/2003 18:55:22

6comercial50m²Rua José Pedro da Silva555LapaSala, Banheiro, garagem, etc...600,00concluídoaluguelbimestralimagens/fotos/10.jpgfachadaLugar estratégico

hehehe testei a segunda opçao e deu isso...

Agora já no primeiro exemplo deu certo...

<%
FOR I=inicio TO fim
response.write imoveis(1,i) & " - " & imoveis(2,i)  & " - " & imoveis(3,i)  & " - " & imoveis(4,i)  & " - " & imoveis(5,i) &"<br>"
next
%>

se eu for colocando imoveis(x,i) onde x é o numero da coluna ele vai me exibir de acordo com a coluna q eu solicitar....

So o primeiro exemplo q não exibiu certinho, é falta de tag html pra separar direitnho porque exibindo ele ta, e achei ele mais pratico q o segundo...

Bom ta ae DackAle.. Abraço brother

Link para o comentário
Compartilhar em outros sites

  • 0
ph34r.gif

Pra que usar GetRows?

Pra consumir mais recursos do servidor?

Dá uma olhada

http://scriptbrasil.com.br/forum/index.php...ndpost&p=254487

Pera utilizar GetRows, mais recursos do servidor ? blink.gif

Que eu saiba e li GetRows é muito melhor que trabalhar com recordset e utiliza menos recursos, logico se for igual ao cyber falou, se for muitos dados, acaba ficando ruim pra paginação já que ele sempre vai pegar todos os registros...

Link para o comentário
Compartilhar em outros sites

  • 0

ph34r.gif

Pra paginação o Recordset é melhor mesmo. tongue.gif

E ao invés de dar esses loops toscos em Arrays ou RecordSets tentem isso:

aTabela="<table border=1><tr><td>"&RecordSet.GetString(2,-1,"</td><td>","</td></tr><tr><td>")&"</table>"
aTabela=Replace(aTabela,"<tr><td></table>","</table>")
Response.Write(aTabela)
ou isto:
Set RecordSet=Connection.Execute("Select '<tr><td class=""formato"">',Str(IdHotel),'</td><td>',Hotel,'</td><td>',Estrelas,'</td></tr>' From Hoteis")
aTabela="<table border=1>"&RecordSet.GetString()&"</table>"
Response.Write(aTabela)

tá? cool.gif

Link para o comentário
Compartilhar em outros sites

  • 0

ph34r.gif

No Access:

Tabela: Registros

Campos:

IdRegistro Autonumeração

Registro Texto

Para página com 10 linhas:

SELECT *,
 1+Fix((DCount(IdRegistro,'Registros','IdRegistro<'+Str([IdRegistro])))/10) AS NumeroDaPagina
FROM Registros
ORDER BY IdRegistro
Para página com 20 linhas:
SELECT *,
 1+Fix((DCount(IdRegistro,'Registros','IdRegistro<'+Str([IdRegistro])))/20) AS NumeroDaPagina
FROM Registros
ORDER BY IdRegistro

Link para o comentário
Compartilhar em outros sites

  • 0
Não recomendo voce usar paginação com getrows caso o BD seja grande, pois voce não tera nenhum ganho de performance, pois voce estara criando um array muito grande para usar apenas 10 registros, para paginação recomendo usar as propriedades do recordset.

Desenterrando esse tópico...

Cyber, isso que você disse é uma realidade que nunca pensei, embora tenha sempre usado apenas o Recordset para paginações.

No mais, uso sempre getrows.

O que você diria sobre uma tabela com 20.000 registros para serem paginados?

Usaria recordset ou getrows?

Poste aí uma paginação que você use, só copia e cola e deixo que o resto eu me viro para entender.

Eu uso uma paginação legal, mas queria ver como é a sua.

Mas essa história de um array enorme, onde vamos apenas usar 10registros, é bem coerente!

No mysql, podemos fazer até um array exatamente com a quantidade de registros que quisermos, mas no acess, não tem como, pelo menos que eu saiba.

No mysql você usaria o LIMIT(X,Y)

Digamos para a primeira página: limit(1,10)

2ªpage: limit(11,20)

3ºpage: limit(21,30)

etc...

Comente aí!

Abraços brother!

Link para o comentário
Compartilhar em outros sites

  • 0

Salve salve...

também to curioso pra ver a sua paginação cyber.. posta ai pra gente ver..

Eu nunca tive um banco com mais de 500 registros, por enquanto não...

o que to usando em um site de comercio tem 100 e poucos registros ainda, e to usando getrows pra paginar e tals...E ta legal...

Bom posta a sua ai pra gente ver cyber..

No mais é isso..

Abraços..

Link para o comentário
Compartilhar em outros sites

  • 0

olá

uma vez, eu li uma logica feita pelo brother dackale, que achei legal.

você faz o select no banco, pegando somente os registros que vai mostrar na tela. assim, fica mais eficiente do que a paginação do recordset.

pois, aquelas propriedades, tb buscam do banco todos os registros, mas mostram na tela somente quantos você especificar.

Para terem uma prova disso, vejam o select..

Em algum momento do select, você está especificando o numero de registros que está trazendo do banco?

Axo q não não é??

então.. a logica do dack, era simples.. e funcional!

você seleciona os 10 primeiros.. exemplo:

sql = "select campo from tabela where id>0 and id<10"

assim, ele pega somente os 10 primeiros.

depois, quando o cara clicar para abrir a proxima pagina, você precisa selecionar do 11 em diante, não é??

então.. por exemplo.. no link, você coloca especifica qual registro deve ser o proximo.. ae você faz o select de novo:

sql = "select campo from tabela where id>10 and id<20"

e assim vai..

Interessante né?

Assim, o select não pega todos os registros.. e sim somente aqueles que devem ser mostrados na tela!

Muito funcional isso aí.. só ter imaginaçao.

Bem.. fica dada minha sugestao!

Abração

Link para o comentário
Compartilhar em outros sites

  • 0

Essas coisas são boas em termos de performance!

Mas quanto ao de tamanho de código e trabalhera pra nós, putz.

Né não dark0? hehe

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

aham

é possivel deixar boa performance no codigo sim, mas com certeza não vai ser tão facil assim

Link para o comentário
Compartilhar em outros sites

  • 0

Guto, sobre tamanho de codigo eu até acho um desafio, no começo eu fazia um codigo para sei la veirifcar um email, com 20 linhas hoje faço com 5, ao passar do tempo, com a experiencia você consegue ir melhorando seus proprios codigos acho legal =)

Dark0, é assim mesmo, só que poderia ser feito assim

SQL="SELEC TOP 10 * FROM tabela WHERE id < " & request("id") & " ORDER BY id DESC"

que dai ele pega os 10 registros menores que o ID passado... porque menor porque no caso mandamos ordenar por decrescente ou seja 98, 97, 95, 95... então queremos os 10 menores que o ID passado... dai na hora de fazer os links pra paginação é só por o id no link exemplo

<a href="pagina.asp?pagina=" & pagina & "&id=" & ultimo_id & ">Link</a>"

dai é só pegar o ultimo ID da pagina guarda-lo e por no link prontinho... como você disse só ter criatividade =P

Abração

Link para o comentário
Compartilhar em outros sites

  • 0

Claro dackale.

Com javascript hj em dia eu ando fazendo miséria com o q fazia antigamente!

Com ASP, eu faço um código muito pikeno já...

Quanto a isso de usar o TOP 10, é meio inviável, pois ele pode retornar tanto menos quanto mais de 10 registros, não é bem certo... depende do seu WHERE OU ORDER BY... vai ser de acordo.

Se você tiver uma tabela com estes dados

id_user - pontos_do_user

1 - 10

2 - 10

3 - 5

dae no select: "SELECT TOP 2 from tabela ORDER BY pontos ASC"

Ele vai retornar 3 REGISTROS, pois o user 1 e user 2 tem pontos iguais. saca?

O ideal seria apenas passar via querystring o registro de inicio.

pagina.asp?iniciar=11

Dae fazer

Select * from tabela ... alguma coisa q usasse o 11 como parametro..como o dark0 falou antes.

só pensar.

mas é mta mao.

se eu fizer algo aki qlqr hora, eu dou de mao beijada pra vocês.

abraços!

obs.: aff, não tenho mais saco de ficar nos fóruns.. sad.gif

Link para o comentário
Compartilhar em outros sites

  • 0

guto isso que você citou daria "erro" em qualquer consulta, eu mesmo no começo de ASP apanhei muito porque queria retornar 5 registro, colava o TOP 5 e me retornava 9 registros, até entender disso do TOP e ORDER juntos... dependendo da consulta que o cara for fazer no select ou ele muda o order by ou passa um parametro a mais tipo

ORDER BY pontos,id DESC (não lembro se é assim que se poe dois campos, faz tempos q não ordeno por 2...rsss), que dai o ID desempata no caso...

mas ai é aquilo, o cara tem que ter um pouco de noção de ASP e SQL né... se não o cara fica meio perdido...rs

quando tiver tempo vou tentar refazer a paginação com recordset ainda mais...

e voltando ao tamanho é documento ahahuhuahua é muito legal você ver os p*** codigos e ver que você hj em dia consegue fazer a mesma aplicação com muitoo menos linha ou até paginas, antigamente eu fazia uma pagina pra mostrar os dados uma pra inserir, uma pra fazer o processo de inserir, outra pra editar, oputra pra fazer o processo de editar, uma pra pagar, uma pra confirmar... enfim cada sessão da área administrativa tinha umas 8 paginas... agora consigo fazer 4 no MAXIMO pra cada, alem que uso a mesma pagina pra apagar de todo o site, só passando parametros... acho legal você ver suas evoluções pessoais, chega a ser gratificante =)

OBS: Eu tb to sem paciencia... rsss, sei la o que aconteceu...

OBS 2: Odeio JS com todas as minhas forças tongue.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...