> ## Documentation Index
> Fetch the complete documentation index at: https://reduardo.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Paginación

> Sistema de paginación para productos y bitácora

# Paginación

El sistema implementa paginación en todas las vistas que manejan listados de datos.

## Configuración por Vista

| Vista | Registros por página | Modelo |
| - | - | - |
| Catálogo público | 9 (grid 3×3) | `buscarPublico()` |
| Admin - Productos | 10 | `obtenerPaginado()` |
| Admin - Bitácora | 15 | `LogModel::obtenerPaginado()` |

## Implementación

### En el Modelo

```php theme={null}
public function obtenerPaginado(int $pagina = 1, int $porPagina = 10): array
{
    $offset = ($pagina - 1) * $porPagina;
    $sql = 'SELECT * FROM productos ORDER BY id DESC LIMIT :limit OFFSET :offset';
    $stmt = $this->conexion->prepare($sql);
    $stmt->bindParam(':limit', $porPagina, PDO::PARAM_INT);
    $stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
    $stmt->execute();
    return $stmt->fetchAll();
}
```

### En el Controlador

```php theme={null}
$pagina = max(1, (int) ($_GET['pagina'] ?? 1));
$porPagina = 10;
$totalProductos = $this->productoModel->contarTotal();
$totalPaginas = max(1, (int) ceil($totalProductos / $porPagina));
$pagina = min($pagina, $totalPaginas);
$productos = $this->productoModel->obtenerPaginado($pagina, $porPagina);
```

### En la Vista

Los controles de paginación usan el componente **Pagination** de Bootstrap 5 con:

* Botones Anterior / Siguiente
* Números de página con página activa resaltada
* Deshabilitados en los extremos
* Contador: "Página X de Y (Z registros)"


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.