Пагинация PHP | Комплект 1
PHP в основном используется для хранения и отображения данных из базы данных в соответствии с требованиями пользователя. Например, давайте подумаем, что мы организовали соревнование, и теперь у нас есть задача показать таблицу лидеров. Наше мероприятие было очень успешным, и в нем приняли участие более десяти тысяч человек. Теперь, если нам нужно отобразить весь список на одной странице, страница будет очень длинной, поэтому это может быть не лучший способ показать список. Что мы можем сделать, так это распределить весь список на нескольких страницах. Этот метод распределения единого списка на нескольких страницах известен как разбиение на страницы. Давайте теперь посмотрим на преимущества и недостатки разбиения на страницы.
Недостатки разбивки на страницы
- Давайте представим событие, в котором количество внешних зрителей значительно меньше, поэтому, если вы публикуете таблицу лидеров, возможно, что несколько участвующих пользователей захотят отслеживать таблицу лидеров, но не всю таблицу лидеров. Пользователь будет склонен видеть свой собственный рейтинг и эффективность обладателя высшего ранга. Таким образом, если мы распределяем таблицу лидеров на несколько страниц, мы должны предоставить специальный способ, чтобы пользователь мог перейти на страницу, где его имя пользователя присутствует в списке ранжирования. Во многих случаях это кажется слишком большим, и поэтому разбиение на страницы в таких случаях можно игнорировать.
- Разбиение на страницы - это чистые накладные расходы, т.е. разбиение на страницы - это дополнительная функция, которая может быть реализована за счет дополнительной разметки, стилизации, а также логики. Таким образом, имея небольшой набор данных, содержащий сотни записей, часто игнорируется использование разбивки на страницы.
Преимущества разбивки на страницы
- В одном из недостатков мы узнали, что разбиение на страницы само по себе является накладными расходами, но разбиение на страницы также может избавить нас от загрузки большого количества информации за один раз. Например, давайте представим себе веб-страницу галереи, которая должна отображать большой список изображений. Теперь для отображения тысяч изображений на одной странице потребуются тысячи HTTP-запросов, которые сделают страницу очень невосприимчивой, тогда как с помощью разбиения на страницы мы можем показать ограниченное количество изображений на странице, что ограничивает HTTP-запросы и, кроме того, создает более эффективную страницу.
- Всегда лучше использовать разбиение на страницы для средних и крупных проектов, потому что разбиение на страницы не только делает веб-страницу быстрее и эффективнее, но и делает ее более точной и профессиональной.
Реализация разбивки на страницы
Теперь, чтобы реализовать разбиение на страницы, нам сначала нужен большой набор данных, к которому мы будем применять разбиение на страницы. Для простоты этого мини-проекта мы будем использовать Bootstrap и минимальный явный стиль. Видя успех предыдущего соревнования ProGeek Cup 1.0, мы рассмотрим возможность создания таблицы лидеров ProGeek Cup 2.0, поэтому давайте сначала создадим разметку.
Мы постараемся сделать всю страницу максимально простой, содержащей заголовок, краткое описание и саму таблицу лидеров.
Разметка
Before starting with the fetch and show cycle of PHP let us first set up the basic interface of the table. After creating a folder in the “WWW” folder/ “htdocs” folder and creating an “index.php” file, I used the following markup to get a basic table interface as shown below.
<!DOCTYPE html> < html > < head > < title >ProGeeks Cup 2.0</ title > < link rel = "stylesheet" css/bootstrap.min.css"> </ head > < body > < div class = "container" > < br > < div > < h1 >ProGeeks Cup 2.0</ h1 > < p >This page is just for demonstration of Basic Pagination using PHP. </ p > < table class="table table-striped table-condensed table-bordered"> < thead > < tr > < th width = "10%" >Rank</ th > < th >Name</ th > < th >College</ th > < th >Score</ th > </ tr > </ thead > < tbody > </ tbody > </ table > </ div > </ div > </ body > </ html > |
Обратитесь к следующей статье для более подробного описания использования таблицы в Bootstrap. Теперь, когда нам удалось разработать базовую разметку, мы должны подготовить наши данные.
Данные
If we want to use pagination we must have quite a good amount of data to distribute among pages. Now you may search for sample datasets or create your own. Now for simplicity, I used the following python script to create a fake rank list to be shown on the webpage. By using the random library the data generated is less obvious and using CSV format it can be directly imported into MySQL.
import csv, random firstNames = [ "Anuran" , "Bappa" , "Deep" , "Dhanraj" , "Harsh" , "Sabyasachi" , "Saptarshi" , "Sayan" , "Shubham" , "Sampriti" , "Susmita" , "Pronab" , "Vaskar" , "Sanjeeb" , "Anirudh" ] lastNames = [ "Pandit" , "Das" , "Bhattacharjee" , "Rathi" , "Agarwal" , "Mishra" , "Garg" , "Pal" , "Khan" , "Ganguly" , "Dutta" , "Mukherjee" , "Lodhi" , "Malhotra" , "Gupta" ] collegeNames = [ "IIT Delhi" , "IIT Kharagpur" , "BIT Mesra" , "JIT" , "Jadavpur University" , "IIT Roorkee" , "KGEC" , "SMIT" , "EIEM" , "CGEC" , "JGEC" , "IISC Bangalore" , "IIIT Allahabad" , "IIT Kanpur" , "IIT BHU" ] dataTemplate = [[ "Rank" , "Name" , "College" , "Score" ]] Rank, maxScore = 1 , 3000 for x in xrange ( 1500 ): i = random.randint( 0 , 14 ) j = random.randint( 0 , 14 ) k = random.randint( 0 , 14 ) entry = [ str (Rank), firstNames[i] + " " + lastNames[j], collegeNames[k], str (maxScore)] dataTemplate.append(entry) maxScore - = random.randint( 1 , 3 ) Rank + = 1 targetFile = open ( "pagination.csv" , "w" ) with targetFile: writer = csv.writer(targetFile) writer.writerows(dataTemplate) print "Done" |
В приведенном выше коде мы взяли три списка имен, фамилий и названий колледжей. Наш мотив - составить фальшивый рейтинг-лист. Мы будем повторять 1500 раз, каждый раз мы будем генерировать три случайных индекса, чтобы получить случайное имя, случайную фамилию и колледж. Мы также сгенерируем четвертое случайное целое число, которое будет обозначать разницу в счете с предыдущим обладателем ранга. Теперь, когда у нас есть файл CSV, мы перейдем к «phpmyadmin» и импортируем файл для создания новой таблицы. Ниже приведен рисунок, поясняющий всю процедуру и результат.
Теперь, когда мы настроили нашу базу данных, а также выполнили разметку, у нас в основном есть готовая основа, и нам нужно только перейти к самой части PHP. Судя по объему этой статьи, будет лучше, если мы начнем со следующей статьи, которая будет полностью сосредоточена на реализации базовой системы нумерации страниц.