Pagination ne marche pas

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

  1. Modérateur
    Dans tes tests, il y a un cas où tu ne lui assigna aucune valeur :

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

    0
    1. Modérateur
      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
      1. ça marche, je vais voir ça, merci pour votre aide !
        0