По просьбам трудящихся организую малекий экскурс в устройство сего творения.
1. Почему данный класс я назвал абстрактным?
Потому что я абстрагировался от построения таблицы и разбивки на страницы в общих чертах следующими параметрами:
а) в конструктор передается sql запрос для разбивки на страницы, классом проводится легкий анализ запроса и он "сам" (один из методов класса) вычисляет общее кол-во записей и добавляет order by и limit
б) для отрисовки содержимого ячеек таблицы используется механизм call back функций (call back это просто. Это значит что я передаю в массив столбцов названия функций, которые, естественно написаны заранее и вызываю согласно моему API (Application program interface), см. первый пост по ссылке и примеры там же, вызываю данные функции внутри класса по схеме $function($obj,$Fields) - это и есть мой API; см. доку по РНР в плане вызовов функций с именами, хранящимися в переменнных). Зачем это нужно? Спросите Вы. Да затем, что, например, вместо содержимого ячейки из базы Вам, например, надо отрисовать ссылку, поэтому метод заранее можно считать неопределенным - это и есть call back, который если задан, то будет вызываться для столбца на каждой строке таблицы для отрисовки содержимого.
с) Надо заполнить только массивы описания столбцов и описания таблицы, а так же свойств таблицы, солбцов и строки в плане характеристик html параметров тегов для приведения вида таблицы к тому, который Вам нужен (см. ссылку в первом посте)
д) Реализован внутренний механизм сортировки по столбцам, для этого просто надо щелкнуться на название столбца, повторный щелчок на название столбца приводит к смене направления сортировки на противоположный. Можно разрешать или запрещать сортировку по определенному столбцу (см. пример по ссылке в первом посте)
е) таким образом, мы имеем абстракцию от типа разбивки (диапазон записей или страниц), sql запроса и html вида таблицы и ее разбивки на страницы (кол-ва строк на странице и длина линейки разбивки).
ж) Данное творение возникло не на пустом месте. Просто мне очень часто приходися программить интерфейсы и использовать механизм разбивки на страницы для разных sql запросов и разных html описаний таблиц. Мне кажется, я нашел наиболее удачное решение для общего подхода к этой проблеме. (ест-но, может всего я и не углядел, так ради этого и существует клуб!)
Ромикшеф, добавь, если я че упустил или плохо объяснил