Pagination ne marche pas

Signaler
Messages postés
203
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
9 juin 2021
-
Messages postés
203
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
9 juin 2021
-
Bonjour, j'essaie de mettre en place un système de pagination.
Cependant, il semble y avoir un problème au niveau de la variable $currentPage ("undefined variable"). Pourtant, je lui ai bien assigné une valeur:

// définit deuxième borne de l'intervalle
    define("usersPerPage", 25);
    $usersPerPage = 25;

    // définit première borne de l'intervalle
    $queryCol = $pdo -> query("SELECT id FROM utilisateur");
    $usersTotal = $queryCol->rowCount(); //nombre de colonnes dans la table
    $pageMax = ceil($usersTotal/usersPerPage); // page max = 4

    
    if (isset($_GET['page']) && !empty($_GET['page']) && ctype_digit($_GET['page'])==1){
        if($_GET['page'] > $pageMax){
            $currentPage = $pageMax;
        }
    }
    else{
        $currentPage = $_GET['page'];
    }

    $firstUserOfPage = ($currentPage-1)*usersPerPage;
    echo $firstUserOfPage;


De plus, la dernière ligne
echo $firstUserOfPage;
me renvoie -25, ce qui n'a absolument aucun sens.

Auriez-vous une idée d'où cela peut venir ?


Configuration: Windows / Firefox 86.0

3 réponses

Messages postés
14810
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021
296
Dans tes tests, il y a un cas où tu ne lui assigna aucune valeur :

if(...)
{
if(...)
{
Assignation
}
}
else
{
Assignation
}

Messages postés
33124
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021
3 635
Bonjour,

conditions qui peuvent être simplifiées par l'écriture ternaire

    // définit deuxième borne de l'intervalle
    define("usersPerPage", 25);
    $usersPerPage = 25;

    // définit première borne de l'intervalle
    $queryCol = $pdo -> query("SELECT id FROM utilisateur");
    $usersTotal = $queryCol->rowCount(); //nombre de lignes dans la table
    $pageMax = ceil($usersTotal/usersPerPage); // page max = 4

    $page = !empty($_GET['page']) && ctype_digit($_GET['page'])==1 ? intval($_GET['page']) : 1;
    $currentPage = $page > $pageMax ? $pageMax : $page;

 // un peu de debug pour voir ce qui se passe ...
     echo "<br>page : " . $page ;
     echo "<br>currentPage : " . $currentPage ;

    $firstUserOfPage = ($currentPage-1)*usersPerPage;
    echo $firstUserOfPage;



NB : La méthode rowCount en PDO est déconseillée sur des requêtes de type "SELECT" ( voir la doc officielle )


Messages postés
203
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
9 juin 2021
1
ça marche, je vais voir ça, merci pour votre aide !