Bonjour,
je rencontre un problème actuellement que je n'arrive pas à résoudre :
j'ai une page lsnews.php qui affiche la liste des news, sur cette page dans un formulaire l'on peut cocher différentes chexkbox (préalablement selectionner dans un table "cat") pour choisir les catégories des news que l'on affichera en cliquant sur un bouton ok
mais voila, la page lsnews affiche 10 résultats par page. Donc dès que l'on a effectuer son choix des catégories des news à afficher et que l'on clique sur Ok , les 10 premieres s'affichent correctement, cependant en cliquant sur le lien de la page 2 pour voir les 10 prochaines news, les valeurs des checkbox cochés ne sont plus transmises aux pages suivantes et donc on se retrouve avec une page blanche...
ce qui est bizarre c'est que le du chiffrage des pages est juste.
Comment peut-on se rendre sur la page avec les 10 prochains résultats tout en ayant que certaines catégories à afficher (choisi au tout début avec le formulaire) ????
Comment transmettres les catégories cochés au tout début sur les pages suivantes qui affichent le reste des résultats???
Merci d'avance pour votre aide
qq morceau de code :
La boucle qui récupère les différentes catégories pour les afficher avec un checkbox et le bouton ok qui permet d'afficher les news des catégories sélectionnées :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <form method="post" action="?page=lsnews&affichage"> while($donnees_cat = mysql_fetch_array($requete_cat)) { ?><td width="8%"> <table cellpadding="0" cellspacing="0" border="0" width="100%"><tr> <td><input type="checkbox" class="checkbox" id="list" name="news[]" value="<? echo $donnees_cat['cat']; ?>" /></td> </tr><tr><td height="2px"></td></tr></table></td> <td width="92%" class="txt_cat" align="left"><img src="./img/cat/<? echo $donnees_cat['icone']; ?>" border="0" alt="cat" /> <? echo $donnees_cat['cat']; ?></td><? } <input type="submit" value="Afficher"></form>
on affiche les news des catégories selectionnées :
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 if (isset($_GET['affichage'])) //si on choisi des catégories spécifiques sinon on fait un affichage normal des news (toutes les catégories) { $sql = 'SELECT n.id, n.titre, n.cat, n.icone, n.pseudo, n.contenu, n.timestamp, c.cat, c.icone FROM news n LEFT JOIN cat c ON n.cat=c.cat'; if(!empty($_POST['news'])) { /* On complète la requête avec une clause de tri */ $sql .= ' WHERE n.cat="'.$_POST['news'].'"'; for ($i = 0, $c = count($_POST['news']); $i < $c; $i++) { $sql .= ' OR n.cat="' . $_POST['news'][$i] . '"'; } $sql .= ' ORDER BY timestamp DESC LIMIT ' . $from . ', ' . $limit_par_page .''; $requete_liste_news = mysql_query($sql); ?> while ($donnees = mysql_fetch_array($requete_liste_news)){ //affichage des news }
Système de pagination :
-en haut de la page :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $limit_par_page = 5; if (isset($_GET['p']) AND !empty($_GET['p'])) { $p = intval($_GET['p']); } else { $p = 1; } $from = ($p - 1) * $limit_par_page;
-en bas de la page :
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 $sql2 = 'SELECT count(id) AS nbnews FROM news'; $sql2 .= ' WHERE cat="'.$_POST['news'].'"'; for ($i = 0, $c = count($_POST['news']); $i < $c; $i++) { $sql2 .= ' OR cat="' . $_POST['news'][$i] . '"'; } $reqsql2 = mysql_query($sql2); $donnees2 = mysql_fetch_assoc($reqsql2); $nb_pages = ceil($donnees2['nbnews'] / $limit_par_page); if ($donnees2['nbnews'] <= $limit_par_page) { echo ''; } else { for ($i=1 ; $i<=$nb_pages ; $i++) { if ($i == $p) { echo $i; } else { echo '<a href="?page=lsnews&affichage&p='.$i.'">'.$i.'</a>'; } } }
Partager