Bonjour les développeurs :-)
J'ai fais un code PHP pour associer les articles aux catégories et afficher les catégories qui n'ont rien. J'ai ajouter une limite page par page à chaque catégorie pour limiter le nombre d'article par affichage.
Le problème est que ma pagination est dépendante de toutes les catégories. Et que si j'ai un article dans une catégorie mais que dans un autre, j'en ai plusieurs. La catégorie qui en a moins, il n y aura plus d'affichage.
Mes deux TABLES:
Mon code PHP :
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 CREATE TABLE IF NOT EXISTS `categorie` ( `id` int(11) NOT NULL AUTO_INCREMENT, `categorie` varchar(222) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; INSERT INTO `categorie` (`id`, `categorie`) VALUES (1, 'VOITURES'), (2, 'ORDINATEURS'), (3, 'NOURRITURE'), (4, 'JOUETS'); CREATE TABLE IF NOT EXISTS `article` ( `id` int(11) NOT NULL AUTO_INCREMENT, `categorie_id` int(11) NOT NULL, `article` varchar(222) NOT NULL, PRIMARY KEY (`id`), KEY `categorie_id` (`categorie_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ; INSERT INTO `article` (`id`, `categorie_id`, `article`) VALUES (1, 2, 'dell'), (2, 2, 'hp'), (3, 1, 'Minoune'), (4, 1, 'carcasse'), (5, 3, 'pommes'), (6, 2, 'clone');
Le code PHP fonctionne très bien, mes catégories ainsi que les articles s'affichent respectivement.
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 <?php include 'config_open_db.php'; $sql="SELECT * FROM categorie"; $rs=mysqli_query($conn,$sql); if(!$rs) die("Probleme : ". mysqli_error($conn)); echo '<table align="center">'; while($row=mysqli_fetch_array($rs)){ echo '<tr>'; echo '<td bgcolor="#ddd">'.$row['categorie'].'</td>'; if( isset($_GET['page']) && is_numeric($_GET['page']) ) $page = $_GET['page']; else $page = 1; $pagination = 1; $limit_start = ($page - 1) * $pagination; $asql=" SELECT article.id, article.article, article.categorie_id FROM article WHERE article.categorie_id = ".$row['id']." LIMIT $limit_start, $pagination "; $ars=mysqli_query($conn,$asql); if(!$ars) die("Probleme : ". mysqli_error($conn)); while($arow=mysqli_fetch_array($ars)){ echo '</tr><td> - '.$arow['article'].'</td><tr>'; } echo '</tr><tr><td>'; $nb_total = mysqli_query($conn,'SELECT COUNT(*) AS nb_total FROM article WHERE article.categorie_id = '.$row['id']); $nb_total = mysqli_fetch_array($nb_total); $nb_total = $nb_total['nb_total']; $nb_pages = ceil($nb_total / $pagination); if ($page > 1) echo ' <a href="?page='.($page-1).'"><</a> '; else echo ' < '; echo '<strong>'.$page.'</strong> of '.$nb_pages; if ($page < $nb_pages) echo ' <a href="?page='.($page+1).'">></a> '; else echo ' > '; echo '<hr></td></tr>'; } echo '</table>'; mysqli_close($conn); ?>
C'est le page par page qui est un problème. Si je n'avais qu'une seule catégorie a afficher, je n'aurais pas à poster mais je veux afficher toutes les catégories avec leur contenu.
Si je change de page dans une catégorie, ça change partout. Et si j'ai rien dans une catégorie, ça va incrémenté de 1 quand même.
Correct : 1 of 3
pas correct : 5 of 3
La pagination est au plus simple possible, juste avec un précédent et un suivant.
Si quelqu'un a une idée pour ne pas que mes articles que ça incrémente pas quand je clique sur les autres "suivant".
De l'aide serait apprécié.
Partager