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!
Logíca Paginação
Started By corvox, 22/02/2009, 20:18
7 replies to this topic
#1
Posted 22/02/2009, 20:18
#2
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?
Tem certeza que era isso que você queria perguntar?
#3
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!
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!
#5
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!
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
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.
Até mais
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.
Até mais
Crab - Ex-Administrador Geral fórum WMO
canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
#7
Posted 25/02/2009, 21:33
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.
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!!
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...
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.
att,
Muller Dias
ex-administrador Fórum WMO
Muller Dias
ex-administrador Fórum WMO
#8
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
A sessão eu viajei...
A lógica que que passei precisava de uma sintaxe prática e vc executou essa parte
Até mais
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
A sessão eu viajei...
A lógica que que passei precisava de uma sintaxe prática e vc executou essa parte
Até mais
Crab - Ex-Administrador Geral fórum WMO
canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)