Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu tenho um album de fotos na seguinte estrutura:
album: id, titulo, descricao, data...
fodos: id, album_id, thumb, large, data...
Se eu faço um SELECT JOIN nesse album e faço a listagem dos dados, eu vou acabar repetindo várias vezes os álbuns, para cada imagem que este tiver.
Queria saber como fazer para paginar esses dados organizando pelos albuns, por exemplo, listando os álbuns, e dentro de cada album mostrando uma ou duas imagens se tiver.
Para fazer a listagem eu já sei. Crio um array de albuns e outro de fotos e depois associo no foreach. Mas como fazer isso numa paginação?
Eu utilizo esse script para paginação: http://jpinedo.webcindario.com/scripts/paginator/
Ele faz a paginação em cima de uma consulta MySql..
Tem alguma forma de fazer a paginação em um array? Tipo, eu faço a consulta no banco, e gero um array com os valores da consulta, para então paginar. Se tiver como, eu já consigo desenrolar...
Eu consegui fazer pelo CakePhp.
Faço as associações das tabelas e ele retorna um array com os dados...
Pelo Cake tá tranquilo, agora falta saber como fazer pelo "php puro";
Viva ,
Tenta fazer essa consulta utilizando o count assim contas as linhas de determinada tabela e somente devolves essas linhas .
Exemplo de paginação com MySQL:
album: id, titulo, descricao, data...
fotos: id, album_id, thumb, large, data...
Primeira página
SELECT SQL_CALC_FOUND_ROWS
album.id AS id,
album.titulo AS titulo,
album.descricao AS descricao,
DATE_FORMAT(album.data, '%d/%m/%Y') AS data,
(SELECT fotos.large FROM fotos WHERE fotos.album_id = album.id LIMIT 0,1) AS imagem_destaque,
(SELECT fotos.thumb FROM fotos WHERE fotos.album_id = album.id LIMIT 1,1) AS imagem_thumb_1,
(SELECT fotos.thumb FROM fotos WHERE fotos.album_id = album.id LIMIT 2,1) AS imagem_thumb_2
FROM album
LIMIT 0,20;
Segunda
LIMIT 20,20;
E assim por diante
LIMIT 40,20;
Descobrindo o total sem LIMIT
SELECT FOUND_ROWS() AS total;
A paginação via sql é justamente para não carregar todos os resultados no banco e não criar variáveis gigantes em script.