Показать три товара и перемещаться внутри выбранной страницы

Результат настоящих запросов через PDO_ODBC. Собственные учебные объекты после наблюдений удалены.

Результат выполнения
НаблюдениеРезультат
Категорияwiring: всего 6 товаров
СтраницаOFFSET 1, FETCH 3: ID 2, 3, 4
Позиция 2Клемма | 200
Позиция 3Лента | 300
Позиция 4Хомут | 400
FIRST / LAST2 / 4
ABS 2 / REL -13 / 2
ABS 0, затем NEXTfalse, затем ID 2
rowCount: forward / scroll-1 → -1 / 3
Файлpage.csv: три выбранных товара
Полученные строки и наблюдения
{
    "forward_rows": [
        {
            "id": "2",
            "title": "Клемма",
            "price_cents": "200"
        },
        {
            "id": "3",
            "title": "Лента",
            "price_cents": "300"
        },
        {
            "id": "4",
            "title": "Хомут",
            "price_cents": "400"
        }
    ],
    "row_count": {
        "forward_before": -1,
        "forward_after": -1,
        "scroll_before": 3
    },
    "count_query": 6,
    "positions": {
        "first": {
            "id": "2",
            "title": "Клемма",
            "price_cents": "200"
        },
        "last": {
            "id": "4",
            "title": "Хомут",
            "price_cents": "400"
        },
        "absolute_2": {
            "id": "3",
            "title": "Лента",
            "price_cents": "300"
        },
        "relative_minus_1": {
            "id": "2",
            "title": "Клемма",
            "price_cents": "200"
        },
        "absolute_0": false,
        "next_after_0": {
            "id": "2",
            "title": "Клемма",
            "price_cents": "200"
        }
    }
}

result.json содержит те же данные. Реквизиты входа сюда не записываются.