Pagination partiellement fonctionnelle.
Posté : 05 févr. 2010, 22:24
Bonjour,
J'ai implémenté dans mon code un script de pagination :
Puis suite et fin du script de pagination :
Pourriez-vous apporter la solution à ce dysfonctionnement ? Merci d'avance.
J'ai implémenté dans mon code un script de pagination :
<?php
// Connexion à la base de donnée
require_once("connexionMysql.inc.php");
$ID_AUTEUR = (iSset($_GET['ID_AUTEUR']) ? $_GET['ID_AUTEUR'] : null);
$GENRE = (iSset($_GET['GENRE']) ? $_GET['GENRE'] : null);
...
// PAGINATION
/* Numero de page (1 par défaut) */
if( isset($_GET['page']) && is_numeric($_GET['page']) )
$page = $_GET['page'];
else
$page = 1;
/* Nombre d'info par page */
$pagination = 10;
/* Numéro du 1er enregistrement à lire */
$limit_start = ($page - 1) * $pagination;
// PAGINATION
$requete = "SELECT * FROM liste ";
if ( $ID_AUTEUR != null) { // permet de filtrer ma liste de livres par auteur
$requete .= " WHERE ID_AUTEUR='".$ID_AUTEUR."'";
if ( $GENRE != null) { $requete .= " and GENRE='".$GENRE."'"; }//filtre par auteur et genre
}
else
{
if( $GENRE != null) { // filtre par genre
$requete .= " WHERE GENRE='".$GENRE."'";
}
}
$requete .= " ORDER BY ".$order_by." ".$order_dir." LIMIT $limit_start, $pagination";
$resultat = mysql_query($requete) or die('Erreur SQL !'.$requete.'<br>'.mysql_error());
?>
...contenu de ma page...Puis suite et fin du script de pagination :
<div class="barrenavigation">
<?php
$requete2 = "SELECT COUNT(*) AS nb_total FROM liste ";
if ( $ID_AUTEUR != null) {
$requete2 .= " WHERE ID_AUTEUR='".$ID_AUTEUR."'";
if ( $GENRE != null) { $requete2 .= " and GENRE='".$GENRE."'"; }
}
else
{
if( $GENRE != null) { // filtre par genre
$requete2 .= " WHERE GENRE='".$GENRE."'";
}
}
$resultat = mysql_query($requete2) or die('Erreur SQL !'.$requete2.'<br>'.mysql_error());
$nb_total = mysql_fetch_array($resultat);
$nb_total = $nb_total['nb_total'];
/* Pagination */
$nb_pages = ceil($nb_total / $pagination);
echo '<p>[ Page :';
/* Boucle sur les pages */
for ($i = 1 ; $i <= $nb_pages ; $i++) {
if ($i == $page )
echo " $i";
else
echo " <a href=\"?page=$i\">$i</a> ";
}
echo ' ]</p>';
?>
</div>
Mon système de pagination fonctionne lorsqu'il s'agit de faire défiler chaque page de la liste complète de mes livres (du style [1 2 3 4 5]). Si je filtre ma liste de livres par genre, cela m'affiche bien mes livres de tel genre et le système de pagination s'adapte au nombre d'enregistrements retournés:du style "[1 2]".Mais si je clique sur la page 2 pour avoir la suite de mes livres de tel genre, c'est la page 2 de la liste complète de livres qui s'affiche... Je n'ai pas pu tester suite à un filtre par auteur, mais le problème doit être le mêmePourriez-vous apporter la solution à ce dysfonctionnement ? Merci d'avance.