Интегрироватьsql запрос для вывода getPage
Написал сниппет usergenDisplaySnippet который выводит данные из базы данных. Теперь мне этот список нужно разбить постранично. Получается у каждого пользователя в личном кабинете отображается этот список. Скачал пакет getPage и getResources и попытался интегрировать вывод таким образом. Но страница долго грузится и в итоге ничего не выдает. Может что то неправильно делаю
<?php
// Сниппет для вывода данных из таблицы Mydatabase для текущего пользователя в MODX Revo с использованием getPage
// Получаем текущего пользователя MODX
$userid = $modx->user->get('id');
if (!$userid) {
echo "Ошибка: Пользователь не авторизован.";
return;
}
// Параметры для постраничной навигации
$limit = 10; // Количество записей на странице
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $limit;
// Получение данных из таблицы Mydatabase с ограничением по количеству записей
$sql = "SELECT one,two,thre FROM Mydatabase WHERE userid = :userid LIMIT :limit OFFSET :offset";
$stmt = $modx->prepare($sql);
$stmt->bindValue(':userid', $userid, PDO::PARAM_INT);
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$userData = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Подсчет общего количества записей для постраничной навигации
$countSql = "SELECT COUNT(*) FROM Mydatabase WHERE userid = :userid";
$countStmt = $modx->prepare($countSql);
$countStmt->bindValue(':userid', $userid, PDO::PARAM_INT);
$countStmt->execute();
$totalRecords = $countStmt->fetchColumn();
if ($userData) {
echo '<h3>Данные из таблицы Mydatabase :</h3>';
echo '<table border="1">
<tr>
<th>one</th>
<th>two</th>
<th>thre</th>
</tr>';
foreach ($userData as $row) {
echo '<tr>';
echo '<td>' . htmlspecialchars($row['one']) . '</td>';
echo '<td>' . htmlspecialchars($row['two']) . '</td>';
echo '<td>' . htmlspecialchars($row['thre']) . '</td>';
echo '</tr>';
}
echo '</table>';
// Постраничная навигация с помощью getPage
$pageNav = $modx->runSnippet('getPage', [
'element' => 'usergenDisplaySnippet', // Имя текущего сниппета для повторного вызова
'total' => $totalRecords,
'limit' => $limit,
'page' => $page,
'pageNavVar' => 'pageNav',
'tplPage' => '@INLINE <a href="[[~[[*id]]]]?page=[[+page]]">[[+page]]</a>',
'tplPageCurrent' => '@INLINE <span>[[+page]]</span>',
'tplPageNext' => '@INLINE <a href="[[~[[*id]]]]?page=[[+page]]">Вперед</a>',
'tplPagePrev' => '@INLINE <a href="[[~[[*id]]]]?page=[[+page]]">Назад</a>'
]);
echo '<div class="pagination">' . $pageNav . '</div>';
} else {
echo '<p>Данных в таблице Mydatabase не найдено.</p>';
}
?>