آموزش صفحه بندی یا Pagination در PHP

آموزش صفحه بندی یا Pagination در PHP

زمانی که تصمیم بر اجرا و توسعه یک وب سایت گرفته اید باید بدانید که قرار دادن تمام مطالب دیتابیس در یک صفحه موجب بارگذاری ضعیف و استفاده از بیشترین زمان کاربران می شود. به همین دلیل اهمیت نحوه صفحه بندی در زبان برنامه نویسی محبوب PHP به میان می آید و شما را دعوت می کنیم تا در اولین فرصت از این مزیت صفحه بندی یا Pagination در PHP استفاده نمایید. اما اگر آشنایی کافی با این موضوع ندارید با مطالعه منبع زیر می توانید از نکات ریز و درشت آن آگاه شوید.
مفهوم مراحل Pagination و صفحه بندی در وب سایت

صفحه بندی یا چیست؟

PHP یک زبان سمت سرور برای مقابله با پایگاه داده مورد استفاده در پروژه است. همچنین مفهوم صفحه بندی PHP، به فرآیند نمایش داده ها در چندین صفحه به جای نمایش همه اطلاعات در یک صفحه گفته می شود. رایج ترین مثال برای صفحه بندی، صفحه نتیجه جستجو در Google است که در هر سرچ کاربر هزاران نتایج تقسیم بندی شده در هر صفحه را برای شما نمایش می دهد.

مزایا صفحه بندی یا Pagination در PHP

  1. خوانایی داده ها را افزایش می دهد.
  2. داده ها طبق درخواست کاربر بازیابی می شوند.
  3. اسکرول های طولانی کاربران را کاهش می دهد.
  4. دید حرفه ای به ظاهر وب سایت ها می بخشد.
  5. موجب صرفه جویی در زمان بارگذاری صفحات می گردد.
  6. بار کمتری روی سرور قرار می گیرد.
  7. از درخواست های زیاد در HTTP جلوگیری می شود.
  8. امکان افزایش تبلیغات در هر صفحه برای کسب درآمد بیشتر دارید.

معایب صفحه بندی یا Pagination در PHP

  1. ممکن است به دلیل تفکیک صفحات با افت رتبه مواجه شوید.
  2. اعمال هزینه های غیر ضروری غیرمستقیم مانند استایل کردن، نشانه گذاری، تفکیک داده ها و ...
  3. در برخی از پروژه ها ممکن است جستجو داده های خاص را دشوار کند.
  4. بودجه خزش موتورهای جستجو را به هدر می دهد.
مزایا و معایب مراحل Pagination

مراحل صفحه بندی وب سایت در PHP

برای ساخت صفحه بندی در وب سایت باید مجموعه داده بزرگ داشته باشیم تا مراحل را بر روی آن اجرا کنیم. به همین دلیل مراحل زیر با در نظر گرفتن کاربران تفکیک شده است تا بهترین نتیجه را بگیرید:

1- ایجاد پایگاه داده و جدول

پس از اینکه پایگاه داده و جداول خود را ایجاد کردیم باید Record ها را در جدول ارائه کنید و برای ایجاد صفحه بندی شروع به کدنویسی نمایید. در نظر داشته باشید که برای بررسی بهتر، مثال ها را به 2 نوع تقسیم کرده ایم یک مثال ساده و اساسی از ایجاد صفحه بندی بدون CSS و دیگری با استفاده از CSS و Bootstrap.

2- ارتباط با پایگاه داده MySQL

پس از ایجاد پایگاه داده (Database) و تشکیل جدول فهرستی از رکوردها را در جدول لیست کنید. پیوند صفحه بندی درست کرده و داده ها را در چندین صفحه تقسیم و به پایین جدول اضافه کنید. سپس مثال های زیر را برای صفحه بندی دنبال کنید.
  • مثال برای Pagination بدون CSS

کد زیر صفحه بندی را با کمک پایگاه داده MySQL در PHP انجام می دهد. پس باید در صفحه بندی حروف الفبا ایجاد می کنیم تا در چندین صفحه نمایش قرار بگیرد. یک پایگاه داده با نام Pagination ایجاد کنید و جدولی به نام Alphabet بسازید. 
مراحل Pagination بدون CSS
اکنون باید فایل PHP به پایگاه داده متصل شود. پس کد اتصال پایگاه داده را در همان فایل نوشته و به صورت جداگانه در فایل نگهداری کنید. فقط باید توجه کنید که ما در این مثال تمام کوئری ها را بر اساس فرمت MySQL نوشته ایم:


$conn = mysqli_connect('localhost', 'root', '');
if (!$conn) {
die("Connection failed" . mysqli_connect_error());
}
else {
mysqli_select_db($conn, 'pagination');
}


وارد کردن دستور زیر می تواند شماره صفحه ای که در حال حاضر کاربر در آن قرار دارد را تعیین کند. بهتر است به صورت پیش فرض عدد 1 را انتخاب کرده و ادامه دهید:

if (!isset ($_GET['page']) ) {
$page = 1;
} else {
$page = $_GET['page'];
}

این مرحله فرمول صفحه بندی را برای محدودیت تعداد رکوردهای نمایش داده شده در هر صفحه ایجاد می کند که در مثال ما بر روی عدد 10 تعیین شده است و با اطلاعات Page1 - A to J (1-10) همچنین Page 2 - K to T (11-20) و Page3 - U to Z (21-26) نمایش داده می شود:

$results_per_page = 10;
$page_first_result = ($page-1) * $results_per_page;

دستور زیر می تواند تعداد کل صفحات را برای شما اجرا کند:

$query = "select *from alphabet";
$result = mysqli_query($conn, $query);
$number_of_result = mysqli_num_rows($result);

//determine the total number of pages available
$number_of_page = ceil ($number_of_result / $results_per_page);

براساس تقسیم بندی که شما انجام داده اید دستورالعمل زیر را جهت بازیابی داده ها و نمایش در صفحه وب وارد کنید:

$query = "SELECT *FROM alphabet LIMIT". $page_first_result . ',' $results_per_page;
$result = mysqli_query($conn, $query);

//display the retrieved result on the webpage
while ($row = mysqli_fetch_array($result)) {
echo $row['id'] . ' ' . $row['alphabet']. '';
}

برای نمایش لینک صفحات در URL دستور زیر را وارد کنید:

for($page = 1; $page<= $number_of_page; $page++) {
echo '' . $page. '';

در آخرین کد باید تمام کدها را در یک فایل واحد قرار داده و پروسه Pagination را تمام کنید:
مراحل Pagination بدون CSS
خروجی به صورت زیر خواهد بود:
مراحل Pagination بدون CSS

  • مثال Pagination با CSS و Bootstrap

در این مثال برای جذاب تر کردن نمایش صفحه وب از CSS به همراه HTML استفاده شده است. تمام کدها را در یک فایل به جز اتصال پایگاه داده جمع آوری کرده ایم و برای ادامه دادن مراحل دو فایل Connect.php و Index1.php را ایجاد می کنیم. پس برای فایل Connect.php دستور زیر را بزنید:


$conn = mysqli_connect('localhost', 'root', '');
if (!$conn) {
die("Connection failed" . mysqli_connect_error());
}
else {
mysqli_select_db($conn, 'pagination');
}
?>

و برای ایجاد فایل Index1.php دستور زیر را وارد کنید:
مراحل Pagination در PHP با CSS و Bootstrap

در ادامه دستورات زیر را اجرا نمایید:
مراحل Pagination در PHP با CSS و Bootstrap

خروجی دستورالعمل های بالا به شکل زیر خواهد بود:

مراحل Pagination در PHP با CSS و Bootstrap
نکته مهم! توجه نمایید که کد موجود در داخل تگ Style استایل دهی و تنظیم ظاهر جدول و صفحه بندی به کمک Bootstrap ایجاد شده است.

در ادامه کد مناسب ایجاد صفحه بندی را وارد می کنیم. برای این کار پایگاه داده را ایجاد کرده و جدول Student را داخل آن می سازیم. ویژگی هایی مانند Name Rank ،Name ،College ،Score و Provide را به تعداد 25 در Record در نظر می گیریم.
مراحل Pagination در PHP با CSS و Bootstrap
حال فایل PHP را به پایگاه داده متصل خواهیم کرد. توجه داشته باشید که برای این مرحله از پسوند Mysqli به کمک در تمام کوئری ها استفاده شده است. شما می توانید کد اتصال پایگاه داده را در یک فایل جداگانه و یا در همان فایل بنویسید تا در زمان نیاز در فایل PHP استفاده کنید:



$conn = mysqli_connect('localhost', 'root', '');
if (!$conn) {
die("Connection failed" . mysqli_connect_error());
}
else {
mysqli_select_db($conn, 'pagination');
}

مرحله بعد از ایجاد داده ها Fetch کردن داده ها برای نمایش در صفحات وب است. برای این کار بعد از برقرار شدن ارتباط در فایل Connection.php باید با کمک کلمات کلیدی Require_once در هر یک از صفحات تعریف شده باشند:

require_once "connection.php";

$per_page_record = 4; // Number of entries to show in a page.
// Look for a GET variable page if not found default is 1.
if (isset($_GET["page"])) {
$page = $_GET["page"];
}
else {
$page=1;
}

//determine the sql LIMIT starting number for the results on the displaying page
$start_from = ($page-1) * $per_page_record;

$query = "SELECT * FROM student LIMIT $start_from, $per_page_record";
$rs_result = mysqli_query ($conn, $query);

با دستور زیر هر Record ذخیره شده در ستون های جدول نشان داده می شود:

while ($row = mysqli_fetch_array($rs_result)) {
// Display each field of the records.
?>

};
?>

این مرحله به صورت اختصاصی لینک صفحه بندی را بر عهده می گیرد که می توانید لینک های Previous، Next و عددی را مطابق دلخواه خود ایجاد کنید:

if($page>=2) {
echo " Prev ";
}

for ($i=1; $i<=$total_pages; $i++) {
if ($i == $page) {
$pagLink .= ".$i."">".$i." ";
}
else {
$pagLink .= "
".$i."
";
}
};
echo $pageLink;

if($page<$total_pages){
echo " Next ";
}

اگر که از CSS استفاده نکرده اید صفحه بندی به شکل زیر خواهد بود:

Pagination بدون CSS
اما اگر از CSS در فایل index1.php استفاده کرده باشید، Pagination به شکل زیر نمایان خواهد شد:

Pagination با CSS
برای زمانی که تعداد صفحات بیش از حد انتظار است می توانید با وارد کردن کد زیر کاربران را دقیقاً به صفحه دلخواه شان هدایت کنید:

function go2Page()
{
var page = document.getElementById("page").value;
page = ((page>)?:((page<1)?1:page));
window.location.href = 'index1.php?page='+page;
}

علاوه بر مواردی که در بالا اشاره شد می توانید جهت بهتر کردن ظاهر جدول از Bootstrap در index1.php با کمک تگ link آمده در دستور زیر استفاده نمایید:

href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">



سخن آخر

این یک آموزش کلی از نحوه صفحه بندی یا Pagination در PHP بود که در پروسه طراحی وب سایت مزیت های زیادی را به شما و کاربران ارائه می کند. امیدواریم مورد استفاده شما کاربران عزیز قرار گرفته باشد و از مطالعه آن لذت برده باشید. اگر تجربه استفاده از Pagination در طراحی وب سایت ها را دارید نظرات خود را با ما به اشتراک بگذارید.

چقدر این پست مفید بود؟ روی یک ستاره کلیک کنید تا به آن امتیاز دهید!
پست های پیشنهادی

دیدگاه های اخیر

مشاهده بیشتر