Jump to content


Photo

Logíca Paginação


  • Faça o login para participar
7 replies to this topic

#1 corvox

corvox

    That's No Easy Way Out

  • Usuários
  • 434 posts
  • Sexo:Masculino

Posted 22/02/2009, 20:18

Galera, qual a logica da paginação digamos de 23 resultados exibindo 1 por pagina, qnd chegar napag 11 ele exibir da 11 a 21 ex, 11 12 13 14 ... 21 e qnd chegar na 21 ele exibir até a 31, to quebrando a cabeça aqui mas não consigo pensar em uma fórmula pra elaborar o for, quem puder me ajudar eu agradeço!

#2 fiote

fiote

    12 Horas

  • Usuários
  • 191 posts
  • Sexo:Masculino
  • Localidade:Vila Velha - ES
  • Interesses:PHP

Posted 23/02/2009, 03:37

Se na 11 exibe 11~21, e na 21 exibe 21~31, você está simplesmente pegando a página atual+10.

Tem certeza que era isso que você queria perguntar?
[ FFTOnline.Net ]
Developed by Fiote, Powered by Mootools.

#3 corvox

corvox

    That's No Easy Way Out

  • Usuários
  • 434 posts
  • Sexo:Masculino

Posted 23/02/2009, 15:54

Sim fiote, o problema é que eu não quero que qnd eu esteja na 12 ele exiba 12 + 10 e sim 11 + 10

Exemplo

Eu na pág 11
11, 12, 13, 14, 15, 16, 17, 18 ,19 ,20 , 21

Eu na pág 12 até a pag 20
11, 12, 13, 14, 15, 16, 17, 18 ,19 ,20 , 21

Eu na pág 21
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31

Entendeu? Como poderia fazer se puder me ajudar eu agradeço!

#4 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 24/02/2009, 21:58

($pag - 1) + 10

Não seria isso?
Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#5 corvox

corvox

    That's No Easy Way Out

  • Usuários
  • 434 posts
  • Sexo:Masculino

Posted 25/02/2009, 19:32

Olá Dudu Balboa,

Não seria pois vou tentar explicar melhor

Eu na pag 12 iria imprimir da 12 em diante, eu não quero comer a pag 11 entendeu ? Como ficaria o for tem como tu me fazer um exemplo ? Passar a var $_GET['pagina'] ??

vlw! :)

#6 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 25/02/2009, 19:43

olha... olhando por cima acho que o fio de linha estaria em saber qual é a última página que será exibido naquela determinada listagem e aí comparando se está na última página daquela listagem exibiria mais 10

Exemplificando da forma que vc mesmo citou:

... está na página 1

então exibirá da página 1 até a 11
sabe-se que a última desse primeiro bloco de listagem é 11

então verifica-se se está na 11...
se na comparação resultar que entrou na página 11 então ele listaria da 11 até a 21 e assim por diante.

A moral não é saber se é a página 11, acho que vc entendeu isso, e sim saber se é a 11º de cada bloco de listagem de páginas.

Continuando no exemplo...
... sabendo então que acabou de entrar na página 11, listaria da página 11 até a 21 e já pega um novo valor para a última página dessa nova listagem e assim consecutivamente...

$_SESSIONS['number_pag'] quem sabe hehehe

Bom...
talvez funcione...
talvez seja uma furada...
mas foi o que eu pensei no momento.

(y)Até mais

#7 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 25/02/2009, 21:33

:ponder:

Eu pegaria o número da página, subtrairia -1 e pegaria o resto da divisão por 10.

($num - 1) % 10

O que acontece? Vamos supor que a página seja a 11, nesse caso $num=11.

Subtração: 11 - 1 = 10
Resto da divisão: 10 % 10 = 0

Não sei se você já calculou o resto de uma divisão, mas o operador % calcula justamento o resto da divisão. No exemplo acima, o resultado foi zero porque 10 / 10 é igual a 1 e não sobra nenhum resto. Tente se lembrar das aulas de matemática da 1ª série. :P

Quando a gente estava começando a aprender divisão, a gente ia dividindo número por número e se caso o último número não fosse divisível, a gente colocava ele como resto. Nessa época a gente nem imaginava que existia números decimais.

Vamos supor que o número da página agora seja 12. Se subtrairmos -1 e dividir por 10, o resto será 1. E se for 18? O resto será 7. E se for 20? O resto será 9. E se for 21? Opa!!

Na hora que chegar na página 21...

Subtração: 21 - 1 = 20
Resto da divisão: 20 % 10 = 0

Note que agora deu ZERO novamente, porque 20 / 10 é igual a 2 e não sobra resto.

Chega de bla bla bla!! <_<

Acho que você já percebeu que o resultado sempre será ZERO se a página for a primeira/última da listagem. Não entendeu? Vou ser mais claro, só retorna ZERO nas páginas 1, 11, 21, 31, 41, 51, 61, 71, 81... e assim por diante.

Bingo!! :D

Agora é só trabalhar em cima do FOR.

$num = isset($_GET['num']) ? $_GET['num'] : 1;
$resto = ($num - 1) % 10;

for ($i=($num - $resto); $i<=(($num - $resto) + 10); $i++) {
	echo $i .', ';
}

Eu até queria explicar o que eu fiz nesse FOR, mas eu já digitei muito... :lol:

Tente entender o que eu fiz, se você não entender eu explico.

Crab, eu pensei em utilizar blocos também, sem dúvida funciona. De 1 até 11 é o bloco 1, de 11 até 21 é o bloco 2, e assim por diante. Talvez seja possível mesclar com a minha solução, verificando o resto da divisão a gente pode dispensar a sessão.

(ok2)
att,
Muller Dias
ex-administrador Fórum WMO

#8 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 25/02/2009, 22:14

Sim sem.ponto... a sessão foi só um davaneio... ele pediu a lógica e eu em conteúdo qis dizer que ele tem que saber qual é á última página que ele quer apresentar em cada listagem e obviamente a última é a mesma primeira da outra listagem.

Sendo assim com o que vc fez foi ilustrar de uma forma prática e com código o que eu falei na lógica :D

A sessão eu viajei...

A lógica que que passei precisava de uma sintaxe prática e vc executou essa parte ;)

(y) Até mais




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq