PHP/mySQL jointure et pagination
Salut,
Soit les 3 tables suivantes :
Table articles :
ID |
STATUS |
DATE |
TITRE |
CORPS |
1 |
pub |
201706071433 |
titre du billet 1 |
corps du billet 1 |
2 |
dep |
201706091112 |
titre du billet 2 |
corps du billet 2 |
Table associations :
IDART |
IDTAG |
1 |
2 |
1 |
3 |
1 |
4 |
1 |
5 |
1 |
6 |
2 |
4 |
2 |
3 |
Table tags :
ID |
TAG |
1 |
Non classé |
2 |
cuisine |
3 |
loisir |
4 |
maison |
5 |
mode |
6 |
musique |
Le résultat d'une requête qui est la jointure des 3 tables me retourne un paquet de lignes dont certaines ont plusisurs fois le même ID (normal lorsqu'un article à plusieurs tags).
Mon problème est que je voudrais afficher 5 articles par page.
Or mon article 1 comporte 5 tags et si je fais la requête suivante je me retrouve avec 1 articles et ses 5 tags, soit 5 lignes de l'article 1 :
Code:
1 2 3 4 5 6 7
| select * from articles
inner join associations on
associations.idart = articles.id
inner join tags on
associations.idtag = tags.id
order by articles.id
limit 0,5 |
Du coup j'ai trouvé ceci (qui est bien mieux) 8-) :
Code:
1 2 3 4 5 6 7 8
| select * from articles
inner join associations on
associations.idart = articles.id
inner join tags on
associations.idtag = tags.id
where idart >= 1
and idart <= 5
order by articles.id |
Comment savoir ou on en est lorsque l'utilisateur voudra paginer.
Imaginon qu'on en soit à la 2ème page donc aux articles 6 à 10 : comment dans mon liens pour les résultats suivant (soit une autre page, soit un AJAX) je sais que je dois retrouver les articles 11 à 15 ?
Je pense à un cookie ou à un passage de params en GET ou POST...
Qu'est-ce que vous utilisez ?
Merci.