У меня есть запрос MySQLPHP и MySQL Разбиение
SELECT * FROM 'redirect'
WHERE 'user_id'= \''.$_SESSION['user_id'].' \'
ORDER BY 'timestamp'`
Я хочу постраничной 10 результатов на странице. Как мне это сделать?
У меня есть запрос MySQLPHP и MySQL Разбиение
SELECT * FROM 'redirect'
WHERE 'user_id'= \''.$_SESSION['user_id'].' \'
ORDER BY 'timestamp'`
Я хочу постраничной 10 результатов на странице. Как мне это сделать?
Вот хорошая отправная точка:
<?php
// insert your mysql connection code here
$perPage = 10;
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
$startAt = $perPage * ($page - 1);
$query = "SELECT COUNT(*) as total FROM redirect
WHERE user_id = '".$_SESSION['user_id']."'";
$r = mysql_fetch_assoc(mysql_query($query));
$totalPages = ceil($r['total']/$perPage);
$links = "";
for ($i = 1; $i <= $totalPages; $i++) {
$links .= ($i != $page)
? "<a href='index.php?page=$i'>Page $i</a> "
: "$page ";
}
$r = mysql_query($query);
$query = "SELECT * FROM 'redirect'
WHERE 'user_id'= \''.$_SESSION['user_id'].' \'
ORDER BY 'timestamp' LIMIT $startAt, $perPage";
$r = mysql_query($query);
// display results here the way you want
echo $links; // show links to other pages
Используйте предложение LIMIT запроса, чтобы ограничить количество результатов, полученных из базы данных.
Вы можете поставить пример для кода PHP, пожалуйста? – Francesc
Google - ваш друг: http://www.phpeasystep.com/phptu/29.html –
Использование LIMIT.
SELECT *
FROM redirect
WHERE user_id = '35251'
ORDER BY timestamp
LIMIT 40, 10
40 - это количество записей, которые нужно пропустить, 10 - это количество для отображения.
Есть также несколько проблем с вашим PHP. Вы используете backticks (не одинарные кавычки), чтобы окружать имена таблиц и столбцов. И вы не должны использовать конкатенацию строк для построения запроса.
Нет ничего по-настоящему неправильного в использовании конкатенации строк для построения SQL-запроса, если данные, как известно, безопасны. –
@code_burgar: Это не даст неправильный результат, но это приведет к появлению нового плана запроса для каждого нового набора параметров. Вы должны использовать параметры привязки. –
Но, как я могу создать ссылки на другие страницы? – Francesc
Выберите COUNT для всех результатов, соответствующих вашему предложению where, разделите число, которое вы получаете на значение perPage, и получите общее количество страниц, затем просто выполните цикл for, чтобы эхо-ссылки на каждую страницу. –
Но для предыдущего? Можете ли вы привести пример, пожалуйста? Я новичок. Спасибо – Francesc