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 : Sélectionner tout - Visualiser dans une fenêtre à part
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) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.