2010-04-11 3 views
3

У меня есть запрос MySQLPHP и MySQL Разбиение

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

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

ответ

13

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

<?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 
+0

Но, как я могу создать ссылки на другие страницы? – Francesc

+0

Выберите COUNT для всех результатов, соответствующих вашему предложению where, разделите число, которое вы получаете на значение perPage, и получите общее количество страниц, затем просто выполните цикл for, чтобы эхо-ссылки на каждую страницу. –

+0

Но для предыдущего? Можете ли вы привести пример, пожалуйста? Я новичок. Спасибо – Francesc

1

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

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

+0

Вы можете поставить пример для кода PHP, пожалуйста? – Francesc

+2

Google - ваш друг: http://www.phpeasystep.com/phptu/29.html –

4

Использование LIMIT.

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

40 - это количество записей, которые нужно пропустить, 10 - это количество для отображения.

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

+0

Нет ничего по-настоящему неправильного в использовании конкатенации строк для построения SQL-запроса, если данные, как известно, безопасны. –

+0

@code_burgar: Это не даст неправильный результат, но это приведет к появлению нового плана запроса для каждого нового набора параметров. Вы должны использовать параметры привязки. –

-1

Я начал с Googling немного. Нет недостатка в информации по этому вопросу.
(Это довольно распространенный вопрос.)

+0

Вы можете проголосовать за меня все, что хотите ... но вы знаете, что я прав :) – Atli

+0

Я не проголосовал за вас. – Francesc

Смежные вопросы