Bonjour,
Je m'embrouille complètement la tête sur une histoire de pagination. Ma difficulté principale est que ma pagination doit se faire en fonction de plusieurs critères (moteur de recherches) et de la catégorie sélectionnée.
Je précises que les critères sont différents en fonction de la catégorie ou l'on se trouve.
Pour le moment et pour effectuer la pagination, j'effectue une première requête qui me permet de compter le nombre de résultat, de pages, etc... en fonction de la catégorie et des critères de recherches.
Suite à cette requête, j'en effectue une seconde pour prendre en compte le trie selectionné et la limite de pages (LIMIT ".$premiereEntree." , ".$messagesParPage.") .
Premier soucis :
Y a t'il plus simple ou suis je obligé de me taper 2 requêtes successives pour chacune des catégories de la même façon ?
Ensuite vient l'affichage de la pagination avec la même rengaine...
Second soucis :
Suis-je obligé de me taper X fois le code de pagination en fonctions des catégories ou y a t'il plus simple ?
Pour ceux ou celles qui ont compris mon soucis, un petit coup de neurones serait bienvenu ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 <?php //Nombre de messages par page. $messagesParPage=2; if($categorie==1){ //on compte tout en fonction des critères de recherches $retour_total=mysql_query("SELECT COUNT(*) AS total FROM MATABLE WHERE ici_mes_criteres WHERE id_categorie = ".$categorie." "); //On récupère le contenu de la requête dans $retour_total $donnees_total=mysql_fetch_assoc($retour_total); //On range sous la forme d'un tableau. $total=$donnees_total['total']; //On compte le nombre de pages. $nombreDePages=ceil($total/$messagesParPage); if(isset($_GET['page'])) { $pageActuelle=intval($_GET['page']); if($pageActuelle>$nombreDePages) { $pageActuelle=$nombreDePages; } } else { // La page actuelle est la n°1 $pageActuelle=1; } // On calcul la première entrée à lire $premiereEntree=($pageActuelle-1)*$messagesParPage; //-----Ici je me retape la requête en double juste pour faire passer ORDER BY et LIMIT-----// $query = mysql_query("SELECT mes_champs FROM MATABLE WHERE ici_mes_criteres WHERE id_categorie = ".$categorie." ORDER BY ".$trie." LIMIT ".$premiereEntree." , ".$messagesParPage." "); } //Ici on refait la même chose pour 10 autres catégories else if($categorie==2){ //double requête pour les critères de sélections et comptage des pages } else if($categorie==3){ //double requête pour les critères de sélections et comptage des pages } //etc... //Ici la pagination $suivant=$pageActuelle+1; $precedent=$pageActuelle-1; if($categorie==1){ //Si la variable est plus grand ou égal if($precedent>=1){ echo '<a class="pagination" title="Page précédente" href="?page='.$precedent.'&trie='.$_GET['trie'].'&plein-de-criteres-passer-par-$_GET-en-fonction-de-la-categorie=...">« Page précédente</a>'; } //Si la variable est plus petit ou égal if($suivant<=$nombreDePages){ echo '<a class="pagination" title="Page suivante" href="?&page='.$suivant.'&trie='.$_GET['trie'].'&plein-de-criteres-passer-par-$_GET-en-fonction-de-la-categorie=...">Page suivante »</a>'; } } else if($categorie==2){ //Si la variable est plus grand ou égal if($precedent>=1){ echo '<a class="pagination" title="Page précédente" href="?page='.$precedent.'&trie='.$_GET['trie'].'&plein-de-criteres-passer-par-$_GET-en-fonction-de-la-categorie=...">« Page précédente</a>'; } //Si la variable est plus petit ou égal if($suivant<=$nombreDePages){ echo '<a class="pagination" title="Page suivante" href="?&page='.$suivant.'&trie='.$_GET['trie'].'&plein-de-criteres-passer-par-$_GET-en-fonction-de-la-categorie=...">Page suivante »</a>'; } } //etc...on recommence le code de pagination pour chaque catégorie ?>
Merci
Partager