صفحه بندی مطالب در PHP، یکی از مهارتهای مورد نیاز برای برنامه نویسان وب است. ممکن است که ما هنگام خواندن اطلاعات از پایگاه داده، میلیونها رکورد را در یک صفحه دریافت کنیم. این کار ممکن است زمان زیادی را صرف کند و منجر به سردرگمی کاربران شود. برای مثال، بارگیری 1000 تصویر در یک صفحه، بسیار بیشتر از بارگیری 50 تصویر در همان صفحه به طول میانجامد. بنابراین، این رکوردها را جهت خوانایی و فهم بهتر با توجه به نیاز کاربر به چند صفحه تقسیم میکنیم که به آن صفحه بندی یا Pagination گفته میشود. علاوه بر این، صفحه بندی باعث بهبود تجربهی کاربری میشود. در ادامه با آموزش ساخت صفحه بندی مطالب در php ، با ما همراه باشید.
پیاده سازی صفحه بندی با PHP و MySQL
برای پیاده سازی صفحه بندی، به یک مجموعه دادهی بزرگ نیاز داریم تا صفحه بندی را روی آن اعمال کنیم. بنابراین، ابتدا باید یک پایگاه داده و جدول ایجاد کنیم. پس از آن، رکوردهای موجود در جدول را ارائه کرده و برای ایجاد صفحه بندی شروع به کدنویسی میکنیم. به طوری که دادههای واکشی شده از پایگاه داده بتوانند در چندین صفحه تقسیم شوند.
در اینجا ما دو نمونه از صفحه بندی را معرفی خواهیم کرد. مثال اول یک مثال ساده و اساسی از ایجاد صفحه بندی بدون CSS است، در حالی که در مثال دوم، ما صفحه بندی را به روشی جذاب با استفاده از CSS و bootstrap ایجاد خواهیم کرد. میتوانید خروجی هر دو را ببینید. در زیر مراحل ایجاد صفحه بندی آورده شده است.
مراحل ایجاد صفحه بندی
یک پایگاه داده و جدول ایجاد کنید. لیستی از رکوردها را در جدول ثبت کنید.
با پایگاه دادهی MySQL ارتباط برقرار کنید.
لینک صفحه بندی را برای تقسیم دادهها در چندین صفحه ایجاد کرده و آنها را به انتهای جدول اضافه کنید.
دادهها را از پایگاه داده دریافت کرده و در صفحات مختلف نمایش دهید.
مراحل کدنویسی زیر را به ترتیب دنبال کرده و یک صفحه بندی ساده ایجاد کنید.
مثال 1 - صفحه بندی مطالب در PHP و MySql
کد زیر یک مثال ساده از صفحه بندی است که در PHP با کمک پایگاه دادهی MySQL انجام میشود. این کد، دادههای واکشی شده از پایگاه داده را در چندین صفحه تقسیم میکند. در این مثال صفحه بندی، حروف الفبا در چندین صفحه نمایش داده میشوند.
ایجاد پایگاه داده
ابتدا، یک پایگاه داده با نام pagination ایجاد کرده و یک جدول در داخل آن به نام alphabet ایجاد کنید. به صورت زیر رکوردها را ایجاد کنید:
اتصال به پایگاه داده
اتصال فایل PHP به پایگاه داده یک کار ضروری است. بنابراین میتوانید دادههای ذخیره شده در پایگاه داده را در صفحهی وب نمایش دهید.
برای صفحه بندی باید حد تعداد رکوردهای نمایش داده شده در هر صفحه را تنظیم کنید. در اینجا، ما حد نتیجه را برای هر صفحه 10 قرار دادهایم، بنابراین نتایج در هر صفحه به شرح زیر نمایش داده میشود:
$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'] . '</br>';
}
نمایش پیوند صفحات در URL
استفاده از این کد URL صفحهی وب برای هر صفحه متغیر است.
اکنون، همهی کدها را با هم در یک فایل واحد قرار دهید تا صفحه بندی انجام شود.
<html>
<head>
<title> Pagination </title>
</head>
<body>
<?php
//database connection
$conn = mysqli_connect('localhost', 'root', '');
if (! $conn) {
die("Connection failed" . mysqli_connect_error());
}
else {
mysqli_select_db($conn, 'pagination');
}
//define total number of results you want per page
$results_per_page = 10;
//find the total number of results stored in the database
$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);
//determine which page number visitor is currently on
if (!isset ($_GET['page']) ) {
$page = 1;
} else {
$page = $_GET['page'];
}
//determine the sql LIMIT starting number for the results on the displaying page
$page_first_result = ($page-1) * $results_per_page;
//retrieve the selected results from database
$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'] . '</br>';
}
//display the link of the pages in URL
for($page = 1; $page<= $number_of_page; $page++) {
echo '<a href = "index2.php?page=' . $page . '">' . $page . ' </a>';
}
?>
</body>
</html>
نتیجهی کد بالا به صورت زیر میباشد:
مثال 2 - صفحه بندی مطالب در PHP و MySql
مثال زیر نمونهی دیگری از صفحه بندی است که در آن از CSS به همراه HTML، برای جذابیت بیشتر ویوی صفحهی وب استفاده کردهایم. CSS باعث خلاقیت و جذابیت بیشتر صفحهی وب میشود. از طرف دیگر، MySQL دادهها را در پایگاه داده ذخیره میکند. بنابراین، میتوانید صفحه بندی را خیلی بهتر یاد بگیرید.
ابتدا دو فایل connection.php (برای اتصال به پایگاه داده) و index1.php (برای ایجاد صفحه بندی) را ایجاد میکنیم.
<html>
<head>
<title>Pagination</title>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<style>
table {
border-collapse: collapse;
}
.inline{
display: inline-block;
float: right;
margin: 20px 0px;
}
input, button{
height: 34px;
}
.pagination {
display: inline-block;
}
.pagination a {
font-weight:bold;
font-size:18px;
color: black;
float: left;
padding: 8px 16px;
text-decoration: none;
border:1px solid black;
}
.pagination a.active {
background-color: pink;
}
.pagination a:hover:not(.active) {
background-color: skyblue;
}
</style>
</head>
<body>
<center>
<?php
// Import the file where we defined the connection to Database.
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;
}
$start_from = ($page-1) * $per_page_record;
$query = "SELECT * FROM student LIMIT $start_from, $per_page_record";
$rs_result = mysqli_query ($conn, $query);
?>
<div class="container">
<br>
<div>
<h1>Pagination Simple Example</h1>
<p>This page demonstrates the basic
Pagination using PHP and MySQL.
</p>
<table class="table table-striped table-condensed
table-bordered">
<thead>
<tr>
<th width="10%">ID</th>
<th>Name</th>
<th>College</th>
<th>Score</th>
</tr>
</thead>
<tbody>
<?php
while ($row = mysqli_fetch_array($rs_result)) {
// Display each field of the records.
?>
<tr>
<td><?php echo $row["Rank"]; ?></td>
<td><?php echo $row["Name"]; ?></td>
<td><?php echo $row["College"]; ?></td>
<td><?php echo $row["Score"]; ?></td>
</tr>
<?php
};
?>
</tbody>
</table>
<div class="pagination">
<?php
$query = "SELECT COUNT(*) FROM student";
$rs_result = mysqli_query($conn, $query);
$row = mysqli_fetch_row($rs_result);
$total_records = $row[0];
echo "</br>";
// Number of pages required.
$total_pages = ceil($total_records / $per_page_record);
$pagLink = "";
if($page>=2){
echo "<a href='index1.php?page=".($page-1)."'> Prev </a>";
}
for ($i=1; $i<=$total_pages; $i++) {
if ($i == $page) {
$pagLink .= "<a class = 'active' href='index1.php?page="
.$i."'>".$i." </a>";
}
else {
$pagLink .= "<a href='index1.php?page=".$i."'>
".$i." </a>";
}
};
echo $pagLink;
if($page<$total_pages){
echo "<a href='index1.php?page=".($page+1)."'> Next </a>";
}
?>
</div>
<div class="inline">
<input id="page" type="number" min="1" max="<?php echo $total_pages?>"
placeholder="<?php echo $page."/".$total_pages; ?>" required>
<button onClick="go2Page();">Go</button>
</div>
</div>
</div>
</center>
<script>
function go2Page()
{
var page = document.getElementById("page").value;
page = ((page><?php echo $total_pages; ?>)?<?php echo $total_pages; ?>:((page<1)?1:page));
window.location.href = 'index1.php?page='+page;
}
</script>
</body>
</html>
خروجی به صورت زیر است.
برای کسب اطلاعات بیشتر میتوانید به وب سایت رسمی PHP مراجعه کنید.
جمعبندی:
صفحه بندی مطالب در PHP، به شما کمک میکند تا مطالب فراوان بخش وبلاگ، محصولات یا حتی صفحهی جستجوی داخلی وب سایت خود را در چندین صفحه، نمایش دهید تا زمان بارگذاری صفحهی خود را کاهش داده و از سر در گم شدن کاربران جلوگیری کنید. صفحه بندی به بهبود تجربهی کاربری شما نیز کمک میکند. شما میتوانید از کدهای این مقاله برای صفحه بندی صفحات وب سایت خود استفاده کنید.
امیدواریم که مقاله آموزش ساخت صفحه بندی مطالب در php برای شما مفید باشد. شما میتوانید سوالات خود را در بخش نظرات با ما به اشتراک بگذارید.
اگر به یادگیری بیشتر در زمینهی PHP علاقه داری، با شرکت در دورهی آموزشی متخصص PHP در کمتر از یک سال به یک متخصص PHP تبدیل میشوی که آمادهی استخدام، دریافت پروژه، کسب درآمد و یادگیری مباحثی مثل لاراول هستی.
سلام خیلی خوب بود ولی ای کاش از PDO استفاده کنید چون دیگه mysqli تقریبا منسوخ شده
نازنین کریمی مقدم۰۸ اردیبهشت ۱۴۰۰، ۱۰:۰۵
سلام.
حق با شماست استفاده از mysql خیلی کمتر شده، اما هنوز طرفداران خودشو داره و براساس تعداد درخواست مقاله رو تهیه کردیم.
انشالله در آینده این موضوع رو هم پوشش میدیم.
۰۱ فروردین ۱۴۰۲، ۲۲:۱۲
کی گفته mysqli منسوخ شده برادر
MySqli بهترین و پر استفادهترین دیتابیس دنیا هستش همین طور تمامی دستورها و توابع مربوط به اون
ساناز حسینی۰۳ اسفند ۱۳۹۹، ۱۸:۰۹
سلام
توو دوره آموزش متخصص php اگر امکانش هست ساخت سایت فروشگاهی رو هم بذارین
سپاس
نازنین گودرزی۰۳ اسفند ۱۳۹۹، ۱۸:۳۰
سلام وقت بخیر. این موضوع در سرفصلها نیست و پروژهها و مینی پروژههای دیگری انجام میشه.
اصغر۰۳ دی ۱۳۹۹، ۰۸:۱۶
مطالب خوبی بود بیشتر برای جدولهایی که تعداد رکورد محدودی دارن کاربردی هستش
وقتی تعداد رکورد میلیونی میشه عملا جواب نمیده
یعنی کوئری اولی که تعداد رکوردها رو میگیره بعد از روی اون کوئری دوم رو میسازی که این خودش کلی پردازش و زمان میبره
حالا حساب کنین بخوایین جستجویی هم روش اعمال کنین با دستور like
شروع رایگان یادگیری برنامه نویسی
کلیک کنید 👇
دوره الفبای برنامه نویسی با هدف انتخاب زبان برنامه نویسی مناسب برای شما و پاسخگویی به سوالات متداول در شروع یادگیری موقتا رایگان شد: