أهلًا بك،
يساعدنا شرط LIMIT الخاص بـ MySQL في إنشاء ميزة ترقيم الصفحات؛ فهو يستخدم الوسيطتين الوسيط الأول كـ OFFSET والوسيط الثاني عدد السجلات التي سيتم إرجاعها من قاعدة البيانات.
قم باتباع هذه الخطوات البسيطة لإنشاء ترقيم الصفحات في PHP:
الحصول على رقم الصفحة الحالية
سيحصل هذا الرمز على رقم الصفحة الحالي بمساعدة GET Array_$، لاحظ أنه في حالة عدم وجوده، فسيتم تعيين رقم الصفحة الافتراضي على 1.
if (isset($_GET['pageno'])) {
$pageno = $_GET['pageno'];
} else {
$pageno = 1;
}
صيغة ترقيم الصفحات php
يمكنك دائمًا إدارة عدد السجلات التي سيتم عرضها في الصفحة عن طريق تغيير قيمة no_of_records_per_page$ للمتغير.
$no_of_records_per_page = 10;
$offset = ($pageno-1) * $no_of_records_per_page;
الحصول على إجمالي عدد الصفحات
$total_pages_sql = "SELECT COUNT(*) FROM table";
$result = mysqli_query($conn,$total_pages_sql);
$total_rows = mysqli_fetch_array($result)[0];
$total_pages = ceil($total_rows / $no_of_records_per_page);
بناء استعلام SQL لترقيم الصفحات
$sql = "SELECT * FROM table LIMIT $offset, $no_of_records_per_page";
إنشاء أزرار ترقيم الصفحات
يتم تقديم هذه الأزرار للمستخدمين كصفحة تالية وصفحة سابقة، حتى يتمكنوا من التنقل بسهولة بين صفحاتك. هنا نستخدم زر ترقيم الصفحات من bootstrap، يمكنك استخدام الأزرار الخاصة بك إذا كنت تريد ذلك.
<ul class="pagination">
<li><a href="?pageno=1">First</a></li>
<li class="<?php if($pageno <= 1){ echo 'disabled'; } ?>">
<a href="<?php if($pageno <= 1){ echo '#'; } else { echo "?pageno=".($pageno - 1); } ?>">Prev</a>
</li>
<li class="<?php if($pageno >= $total_pages){ echo 'disabled'; } ?>">
<a href="<?php if($pageno >= $total_pages){ echo '#'; } else { echo "?pageno=".($pageno + 1); } ?>">Next</a>
</li>
<li><a href="?pageno=<?php echo $total_pages; ?>">Last</a></li>
</ul>
دعنا نجمع كل الشيفرة البرمجية في صفحة واحدة
<html>
<head>
<title>Pagination</title>
<!-- Bootstrap CDN -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<?php
if (isset($_GET['pageno'])) {
$pageno = $_GET['pageno'];
} else {
$pageno = 1;
}
$no_of_records_per_page = 10;
$offset = ($pageno-1) * $no_of_records_per_page;
$conn=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
die();
}
$total_pages_sql = "SELECT COUNT(*) FROM table";
$result = mysqli_query($conn,$total_pages_sql);
$total_rows = mysqli_fetch_array($result)[0];
$total_pages = ceil($total_rows / $no_of_records_per_page);
$sql = "SELECT * FROM table LIMIT $offset, $no_of_records_per_page";
$res_data = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($res_data)){
//here goes the data
}
mysqli_close($conn);
?>
<ul class="pagination">
<li><a href="?pageno=1">First</a></li>
<li class="<?php if($pageno <= 1){ echo 'disabled'; } ?>">
<a href="<?php if($pageno <= 1){ echo '#'; } else { echo "?pageno=".($pageno - 1); } ?>">Prev</a>
</li>
<li class="<?php if($pageno >= $total_pages){ echo 'disabled'; } ?>">
<a href="<?php if($pageno >= $total_pages){ echo '#'; } else { echo "?pageno=".($pageno + 1); } ?>">Next</a>
</li>
<li><a href="?pageno=<?php echo $total_pages; ?>">Last</a></li>
</ul>
</body>
</html>
هذا كل شئ!
المصدر: مقال How to create Pagination with PHP and MySql لموقع myprogrammingtutorials.
كل التوفيق..