2008-11-14 2 views
0

Я имею в виду, что самый эффективный способ получить информацию о количестве элементов вашей страницы и сделать запрос sql с помощью LIMIT, который вам нужен. или я должен получить все элементы, а затем обрезать массив с помощью php-функций?Как выполнить управление страницей?

теперь я делаю 2 вопроса: сначала для подсчета всех элементов и для получения предметов, которые мне нужны с LIMIT.

Хорошо, я буду более конкретным. Например, мне нужно показать вопрос на моей странице и 20 ответов на этот вопрос. Внизу показано управление страницей: ссылки на следующую, предыдущую страницу и так далее. Я хочу показать правильное количество ссылок (количество ответов/20), и когда я перейду к любой ссылке, я хочу получить правильные ответы (например, с 41 по 60 на третьей странице). Итак, что лучший способ получить количество элементов (ответов), чтобы показать правильное количество ссылок и получить правильные ответы для каждой ссылки?

+0

Я понятия не имею, что вы пытаетесь выполнить, можете ли вы переформулировать вопрос? – 2008-11-14 08:14:06

+0

Попробуйте найти разбиение на страницы, есть вопросы, которые уже были заданы вопросы – 2008-11-14 09:09:43

ответ

1

Я предполагаю, что вы хотите подсчитать количество строк, которые вы будете читать, чтобы сделать какую-то разбивку на страницы или подобное? Я не понимаю вашу потребность в LIMIT в контексте вашего вопроса. Однако, если вам просто нужно подсчитать количество строк, используйте один из следующих.

Вы выбираете количество всех строк, такие как:

select count(*) as counted, name, address 
from contact 

Или найденные строки:

SELECT SQL_CALC_FOUND_ROWS, name, address 
from contact 

Это может быть MySQL конкретным Я не уверен.

Update:

Для пагинацией вы могли бы сделать что-то вроде следующего - (Psuedocode)

$ строки = массив ($ результат)
$ num_rows = SQL_CALC_FOUND_ROWS
$ per_page = 20
$ страницы = CEIL ($ num_rows/$ per_page)

страница
$ rows_this_page = Массив()
$ rows_this_page = get_values ​​($ строк (мин индекс) $ PAGE_NUMBER * $ per_page - $ per_page (макс индекс) $ PAGE_NUMBER * $ per_page - 1)

+0

Большое вам спасибо, мне нужен LIMIT, чтобы получить правильные предметы (ответы) или я sholdn 'сделать это? – user37590 2008-11-14 08:39:36

2

Я думаю your'e пытается скажем, вы хотите знать, сколько предметов/ответов есть в запросе, но только чтение до 20 пунктов в момент времени, для разбивки на страницы.

Во-первых: Вам действительно нужно искать пакет разбивки на страницы; у многих и многих людей была одна и та же проблема, и, вероятно, существуют и свободные/открытые и проприетарные решения для вашего языка программирования и структуры. (Если вы говорите, какой язык вы используете, я уверен, что кто-то может рекомендую решение для вас.)

Во всяком случае, я знаю, что я хотел бы знать, как работают вещи, так это то, как он обычно делает:

Насколько я знаю, код разбивки страницы вычисляет страницы, выполняя один запрос, используя select count(*) from tblX where something, разделите это число на число элементов на страницу и используйте потолок (например, 4.1 => 5).

Для сведения к результатам поиска на странице a новый необходим запрос; не волнуйтесь, что запрос счет ужасен намного быстрее, чем получить каждый результат, отбрасывающий те, которые вам не нужны. НЕ ДЕЛАЙТЕ ТАК (вот рецепт для того, чтобы стать главной новостью на this page). Что-то вроде select * from tblX where something limit Y offset Z, где Y - количество элементов на странице, а Z - номер (requested_page - 1)*Y; страница 1 будет иметь смещение 0, стр. 2 имеет смещение 20 (если это то, что Y) и т. д.

Но не пытайтесь реализовать это вручную, это ненужно, утомительно и подвержено ошибкам, гораздо лучше использовать свою настройку времени готовое решение.

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