Pagination ne marche pas

Fermé
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 - 17 mars 2021 à 15:22
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 - 18 mars 2021 à 22:32
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

NHenry Messages postés 15156 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 29 septembre 2024 335
17 mars 2021 à 15:54
Dans tes tests, il y a un cas où tu ne lui assigna aucune valeur :

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

0
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
17 mars 2021 à 16:14
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 )


0
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 1
Modifié le 18 mars 2021 à 22:33
ça marche, je vais voir ça, merci pour votre aide !
0