Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Pagination шаг за шагом


Автор: insy 4.10.2009, 17:19
Доброго времени суток, помогите пожалуйста разобраться как работает pagination... именно шаг за шагом, короткий алгоритм! Можно на примере CI или просто на голом php)

Заранее спасибо...

Автор: Ипатьев 4.10.2009, 17:22
а собственные идеи какие-нибудь есть?

Автор: insy 4.10.2009, 17:27
Ну как бы... Я вообщем хочу разобраться.... например берем CodeIgniter... что заносим в контроллер, что в модель, что во вьюху... на самом простом примере,...
А то в юзер гиде по CI не очень подробно написано...

Автор: Ипатьев 4.10.2009, 17:36
Вы тогда не очень удачное название теме дали.
Алгоритм выполнения программы - это одно.
Последовательность нажимания кнопочек при вызове готовой библиотеки - совсем другое. К алгоритму она не имеет отношения. 
Имеет смысл спросить на каком-нибудь специализированном форуме, посвященном этому фреймворку. Поскольку множество программистов на РНР не слишком пересекается со множеством пользователей одного из фреймворков.

Автор: insy 4.10.2009, 17:39
согласен, ну а просто на php без использования CI?

Автор: Ипатьев 4.10.2009, 17:48
Ну а без использования CI собственные идеи какие-нибудь есть?

Автор: insy 4.10.2009, 17:55
а что подразумевается по собственными идеями? как я это сам вижу?

Автор: Ипатьев 4.10.2009, 17:56
ну да
какие есть идеи по данному алгоритму. 

Автор: insy 4.10.2009, 18:04
как вариант есть таблица с огромным количеством записей нужно сделать, чтобы записи разбивались например по 40элементов, ну и соответственно можно было перемещаться... Так же реализовать кнопки "Первая" и "Последняя" страницы... ну вот как- то так...

Автор: Ипатьев 4.10.2009, 18:07
Ну, неплохая постановка задачи.
А какие идеи по реализации? 
Скажем по разбивке? Что имеется в виду под словом "разбивались"?

Автор: Kallisto 4.10.2009, 22:49
Всегда раздражали "эксперты" которые вместо решения проблемы начинают задалбывать зачем это вам и давайте думайте сами..

Итак:
При выборки из базы используется SQL запрос.

При задании запроса можно указать сколько записей и начиная с какой необходимо сделать выборку.
Это осуществляется с помощью LIMIT

Использовать очень просто:
SELECT * FROM TABLE LIMIT сколько_записей_надо

или с OFFSET
SELECT * FROM TABLE LIMIT начиная_с_какой, сколько_записей надо

Пример:
SELECT * from users limit 5 - покажет 5 юзеров
SELECT * from users limit 5,10 - покажет 10 юзеров после 5ти


Разбиение страниц работает по след. принципу, например если задана переменная $page то мы ее толкаем в запрос
Допустим надо чтобы было по 50 записей на страницу.
Нумерация страниц с 1

$perpage = 50;
$offset = (--$page)*$perpage;
$sql = "select * from users limit $offset,$perpage";

А ниже выводим страницы..

предварительно переменную $page необходимо проверить на валидность и существование


Успехов. будут вопросы - пишите

Автор: youri 5.10.2009, 08:09
Всегда раздражали "эксперты", которые дают готовое решение. Как минимум, они не дают ТС подумать. Причем часть из них хочет показаться умными. Как результат имеем "программистов", которые разрабатывают методом copy-paste и за каждым новым куском бегуют на форум ;)

Автор: Leklerk 5.10.2009, 08:58
youri,  smile 

Автор: Kallisto 5.10.2009, 09:51
Если вы считаете, что сказать человеку про ЛИМИТ, кратко объяснить для чего он  и как использовать в РНР и для решения pagination то да.. это готовое решение.

Автор: insy 5.10.2009, 13:50
Согласен, что оба участника спора правы... что собственно копипаст это не замечательно... и излишне пытающие люди - это тоже не совсем замечательно...
Просто я абсолютно не спорю  с тем, что вы понимаете, затем я собственно сюда и пришел,чтобы у вас проконсультироваться, но просто такая пытка, учитывая , что я сам собственно не особо могу понять что как мне охарактеризовать свой вопрос, и мне просто нужен простой алгоритм, как предоставил Kallisto, чтобы начать плясать и задавать дальнейшие вопросы... 
Я почему-то очень сомневаюсь товарищ Ипатьев, что вы не могли его написатьsmileМожет просто плохо поняли друг друга... 

p.s Kallisto спасибо... процесс пошел...

Добавлено через 6 минут и 46 секунд
Это не в коем случае не какое-то заявление, типа "от вас толку 0, только разговоры", Ипатьев,  отдельное спасибо, ты мне уже не раз помогал, но сейчас просто я с трудом смог объяснить  свою мысль.smile

Добавлено через 11 минут и 22 секунды
А переменная $page тут для чего используется? и что значит --$page?

Автор: youri 5.10.2009, 14:23
Цитата(insy @  5.10.2009,  13:50 Найти цитируемый пост)
А переменная $page тут для чего используется?

ну как бы название говорит за себя, м? ;)

Цитата(insy @  5.10.2009,  13:50 Найти цитируемый пост)
и что значит --$page?

попробуй выполнить
Код

$i = 2;
echo (--$i)+1, ($i--)+1

и собственно, почему не посмотреть в мануале?

Автор: insy 5.10.2009, 14:26
да, согласен, тупого включил, просто как это обычно бывает... сначала написал, потом подумалsmile

Автор: Kallisto 5.10.2009, 14:44
Цитата

А переменная $page тут для чего используется? и что значит --$page? 

Перечитайте внимательно, вникните в суть.

А про --$page это уже надо курить мануалы.

Автор: insy 5.10.2009, 14:58
Да я понял уже, спасибо! smile 

Автор: Ипатьев 5.10.2009, 15:01
Интересный вопрос пришел в голову.
Какой процент пользователей языка РНР может составить алгоритм того или иного действия. Да и вообще понимает значение слова "алгоритм". Мне кажется, что не более 20%...

Автор: insy 5.10.2009, 15:20
Хорошо же вы думаете о 80% пользователях форума. Может это вы немного не так  понимаете данное слово. В моем понимании - это последовательность действий. И прося написать алгоритм постраничной разбивки, я имел именно описать последовательность действий, т.е что за чем делать, или другими словами "шаг за шагом".

Автор: Ипатьев 5.10.2009, 15:28
Ну, хорошо ли, плохо ли, но до сих пор в этой теме не прозвучало ничего похожего на алгоритм.
И я сомневаюсь, что прозвучит. Даже после того, как код будет написан и заработает. В этом-то и заключается проблема.

Автор: youri 5.10.2009, 15:33
Цитата(Ипатьев @  5.10.2009,  15:28 Найти цитируемый пост)
И я сомневаюсь, что прозвучит. Даже после того, как код будет написан и заработает. В этом-то и заключается проблема.

ты на проектирование намекаешь?

Автор: Ипатьев 5.10.2009, 16:33
insy, правильно. Это последовательность действий, однозначно приводящая к какому-либо результату. 
Алгоритм можно составить для решения любой задачи.
Один мой знакомый рассказывал, что просил на собеседовании составить алгоритм для посещения туалета. Очень редкий корреспондент мог с первого раза справиться, оставив штаны сухими. И только у одного алгоритм не давал сбой, если менялся пол у входящих данных.
Все эти люди, при этом, без проблем пользуются туалетом. 
Отсюда вывод: составить алгоритм - непростая задача. И ее совсем не облегчает тот факт, что само действие человек совершает с легкостью. Одна сороконожка попыталась составить алгоритм переставления ног при ходьбе. С тех пор она не сделала ни шагу. 

В данном случае у нас должен быть алгоритм постраничного вывода. 
К примеру, СНАЧАЛА мы решаем, что хотим выводить первые 10 записец, потом следующие 10.
И только после этого искать конкретный SQL запрос, который выполняет нужный шаг алгоритма. 

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

алгоритм может быть представлен в виде блок-схемы, в виде программы на псевдоязыке, а может быть и написан на словах. 
Например:
Код

взять кастрюлю
налить воды
положить яйца
поставить на огонь
ждать 10 минут
снять
поставить под холодную воду.

это линейный алгоритм
но в жизни встречаются и более сложные варианты, например, с циклом:
Код

взять кастрюлю
налить воды
повторять:
  взять картофелину
  почистить
  положить в кастрюлю
  увеличить счетчик на 1
до тех пор, пор, пока счетчик меньше 5
поставить на огонь
ждать 20 минут
снять

или с условным переходом
Код

повторять:
  взять картофелину
  если (не гнилая):
    почистить
    положить в кастрюлю
    увеличить счетчик на 1
  иначе:
    выбросить
до тех пор, пор, пока счетчик меньше 5


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

Вот даже интересно. Кто из читающих данный топик напишет алгоритм нахождения наименьшего из трех чисел? 







Автор: MoLeX 5.10.2009, 16:49
Цитата(Ипатьев @  5.10.2009,  15:01 Найти цитируемый пост)
Интересный вопрос пришел в голову.



 ! 
MoLeX



Модератор: Ипатьев, для своих интересных идей создавай отдельную тему и в ней рассуждай. Предупреждаю: еще раз занесет вас за рамки обсуждаемой темы - буду награждать читательскими билетами!!! (т.к. происходит нарушение правил форума)



Автор: MoLeX 6.10.2009, 06:29

M
MoLeX
Модератор: Давайте вернёмся к теме обсуждения.

Автор: youri 6.10.2009, 08:54
раз MoLeX так ругается предлагаю продолжить http://forum.vingrad.ru/forum/topic-275566/anchor-entry1986821/0.html

Автор: sTa1kEr 6.10.2009, 09:17
Цитата(MoLeX @  6.10.2009,  07:29 Найти цитируемый пост)
Давайте вернёмся к теме обсуждения.

Цитата(Тема)

Pagination шаг за шагом


Составление программы по шагам - это и есть составление алгоритма программы. MoLeX, т.ч. зря ты на Ипатьев'а накинулся, он, наверное, единственный кто не оффтопил в этой теме.

Автор: unicuum 8.10.2009, 12:31
Цитата(sTa1kEr @  6.10.2009,  09:17 Найти цитируемый пост)
MoLeX, т.ч. зря ты на Ипатьев'а накинулся

Потому что мог.

Автор: insy 8.10.2009, 15:01
Забавно вышло, описание самого топика только в 2-х постах...

Автор: Simpliest 8.10.2009, 20:47
Цитата(sTa1kEr @  6.10.2009,  09:17 Найти цитируемый пост)
Составление программы по шагам - это и есть составление алгоритма программы. MoLeX, т.ч. зря ты на Ипатьев'а накинулся, он, наверное, единственный кто не оффтопил в этой теме. 

Пффф, фееричный топик. Впрочем Molex только подтвердил слова Ипатьева :(
Печально.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)