У меня есть таблица VID и некоторые записи в нем. По умолчанию первые 5 записей отображаются на странице. Если пользователь нажимает кнопку, jquery запускает ajax, который запускает php-скрипт и извлекает следующие 5 строк и возвращает ответ, который заменяет предыдущие записи на странице и пр. Проблема в том, что смещение становится больше, чем записи, оставленные в таблице. Скажем, у меня 15 записей. Сначала запрос занимает первые 5 записей:
$start = $_POST['start_forward'];
$query = "SELECT * FROM vid ORDER BY datev DESC LIMIT $start,5"
($_POST['start_forward']
скрытое поле ввода, которое увеличивается каждый раз на 5, начиная с 0.
Поэтому в следующий раз, когда пользователь нажимает кнопку $ start, теперь 5. Затем в следующий раз 10. И когда он достигает 15 — отображать нечего, поскольку существует всего 15 записей. Поэтому я должен быть уверен, что всегда есть как минимум 5 записей для отображения. Если меньше — я хочу получить недостающие записи в начале столбцов. Итак, в данном случае — когда $ start os 15, я хочу, чтобы он снова был равен 0, чтобы я мог получить записи из начала снова. Это должно быть как бесконечный цикл. И если общее количество записей равно 18. Тогда, когда $ start равно 15, я хочу получить две другие недостающие записи в начале столбца. Так что, если рассчитать его по id. Идентификаторы окончательных ответов должны быть 16, 17, 18, 1 и 2. Последние 2 должны быть извлечены с самого начала.
Я искал информацию и нашел:
$query = "SELECT FOUND_ROWS();";
$result = mysqli_query($conn, $query);
Я знаю, что это будет подсчитывать общее количество строк в таблице, но я не могу обернуть голову, как использовать его в моем случае. Любая помощь?
Я думаю, что jquery-код здесь не имеет значения, так как это обычный ajax-скрипт, который отправляет переменную $ start_forward в php-скрипт.
Спасибо заранее.
После получения строк из базы данных с помощью имеющегося у вас запроса вы можете посчитать количество строк, например, с помощью:
$count = $result->num_rows;
Тогда, если $count
недостаточно высокий (менее 5), вы можете повторить запрос, на этот раз с другим LIMIT
:
$query = "SELECT * FROM vid ORDER BY datev DESC LIMIT " . (5 - $count);
Не забудьте также отправить эту сумму (5 - $count
) с вашим ответом ajax.
Вы можете сравнить в PHP, если смещение превышает общее число (num_rows
) и если оно выше, вы просто вычитаете общее число, пока результат не становится отрицательным (рекурсивная функция).