PHP & MySQL Разбиение на страницы

У меня есть запрос MySQL

SELECT * FROM 'redirect'
WHERE 'user_id'= \''.$_SESSION['user_id'].' \' 
ORDER BY 'timestamp'`

Я хочу нумеровать страницы 10 результатов на страницу. Как я могу сделать это?

5
задан Yacoby 11 April 2010 в 10:25
поделиться

3 ответа

Вот хорошая отправная точка:

<?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
20
ответ дан 18 December 2019 в 06:11
поделиться

Используйте LIMIT .

SELECT *
FROM redirect
WHERE user_id = '35251' 
ORDER BY timestamp
LIMIT 40, 10

40 - сколько записей нужно пропустить, 10 - сколько отображать.

Есть также несколько проблем с вашим PHP. Вы используете обратные кавычки (а не одинарные кавычки), чтобы заключить имена таблиц и столбцов. И вы не должны использовать конкатенацию строк для построения вашего запроса.

4
ответ дан 18 December 2019 в 06:11
поделиться

Используйте ограничение LIMIT запроса, чтобы ограничить количество результатов, которые вы извлекаете из базы данных.

См .: http://dev.mysql.com/doc/refman/5.1/en/select.html

2
ответ дан 18 December 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: