Paginación

  • Paginar consiste en mostrar una lista parcial de elementos. Una porción o página del contenido de una tabla.
  • Para realizar la paginación debemos saber: número de página y elementos por página.
  • En MySql hay que usar la cláusuala LIMIT dentro del SELECT:
$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";
//tomar 10 registros de Orders a partir del 16
$sql = "SELECT * FROM Orders LIMIT :pagesize OFFSET :offset";
//para consultas preparadas
  • Veamos un método paginate en un modelo User:

    public function paginate($size = 10)
    {
        if (isset($_REQUEST['page'])) {
            $page = (integer) $_REQUEST['page'];
        } else {
            $page = 1;
        }
        $offset = ($page - 1) * $size;


        $db = User::db();
        $statement = $db->prepare('SELECT * FROM users LIMIT :pagesize OFFSET :offset');
        $statement->bindValue(':pagesize', $size, PDO::PARAM_INT);
        $statement->bindValue(':offset', $offset, PDO::PARAM_INT);
        $statement->execute();
        $users = $statement->fetchAll(PDO::FETCH_CLASS, User::class);
        return $users;
    }
  • Con esto tenemos la selcción de los registros de página. Ahora hay que buscar la información para construir una lista de páginas: número de páginas, y posición en la que estamos.
$sql = "SELECT count(id) as count FROM Orders";
//contar registros para poder preparar los enlaces.
  • De nuevo en el model User:
    public static function rowCount()
    {
        $db = User::db();
        $statement = $db->prepare('SELECT count(id) as count FROM users');
        $statement->execute();
        $rowCount = $statement->fetch(PDO::FETCH_ASSOC);
        return $rowCount['count'];
    }

results matching ""

    No results matching ""