السلام عليكم تعلمت درس جديد من خلال بحثى على الانترنت واحببت اضيفة
والدرس هو تقسيم بيانات جدول على عدة صفحات
ونبدأ مباشرة فى الدرس
اولا ناسس الاتصال بقاعدة البيانات فى ملف من منصل conf.php
<?php
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "";
$mysql_database = "test";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password)
or die("Opps some thing went wrong");
mysql_select_db($mysql_database, $bd) or die("Opps some thing went wrong");
?
>
ببساطة يتم الاعلان عن المتغيرات اللازمة للاتصال بقاعدة البيانات ومن ثم المتغير bd الذى يحمل الاتصال .
والان الملف الرئيسى وليكن اسمة nav.phph
<?php
include("config.php");
if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; };
$start_from = ($page-1) * 10;
اولا تم تضمين ملف الاتصال
ومن ثم نختبر المتغير page الذى سوف يتم تمريرة من خلال رابط لاحق ونضع بقيمتة او نضععة 1 اذا كان فى بداية التشغيل اخر يحمل قيمة بداية عرض السجلات اعتماد على المتغير page
ثم
$sql = "SELECT * FROM countries ORDER BY name ASC LIMIT $start_from,10";
جملة select بيانات الجدول مرتبة حسب الاسم ونستخدم الجملة LIMT والتى تاخذ متغيرين بداية العرض و عدد السجلات
ثم عرض البيانات داخل جدول html بسيط هكذا
$rs_result = mysql_query ($sql)or die(mysql_error());
echo "<table border='1' width='100%' style='border: 3px double #FF0000'>";
echo "<tr style='color: #000000; border: 3px double #0000FF; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; background-color: #00FFFF'> <th>Name</th><th>ID</th> ";
echo " </tr>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_assoc($rs_result))
{
echo "<tr style='color: #000000; border: 3px double #0000FF; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; background-color: #CCFFFF'>";
echo "<td align='center'>" . $row['name'] . "</td>";
echo "<td align='center'>" . $row['id'] . "</td>";
echo "</tr>";
}
echo "</table>";
ثم
$sql = "SELECT COUNT(name) FROM countries";
$rs_result = mysql_query($sql);
$row = mysql_fetch_row($rs_result);
$total_records = $row[0];
$total_pages = ceil($total_records / 10);
for ($i=1; $i<=$total_pages; $i++) {
echo "<a href='nav.php?page=".$i."'>".$i."</a> ";
};
?>
استخدمنا select count لمعرفة عدد سجلا الجدول وتم وضعها داخل متغير row
ثم المتغير total_page لمعرفة عدد الصفحات ثم جملة for وداخلها الرابط الخاص بالتنقل بيت الصفحات اعتمادا على المتغير page الذى يتم اختباره فى بداية الصفحة
وهنا استخدمنا الارتباط التشعبى لتمرير المتغير خلال نفس الصفحة والان الكود كامل
اتمنى لكم التوفيق
<?php
include("config.php");
if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; };
$start_from = ($page-1) * 10;
$sql = "SELECT * FROM countries ORDER BY name ASC LIMIT $start_from,10";
$rs_result = mysql_query ($sql)or die(mysql_error());
echo "<table border='1' width='100%' style='border: 3px double #FF0000'>";
echo "<tr style='color: #000000; border: 3px double #0000FF; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; background-color: #00FFFF'> <th>Name</th><th>ID</th> ";
echo " </tr>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_assoc($rs_result))
{
echo "<tr style='color: #000000; border: 3px double #0000FF; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; background-color: #CCFFFF'>";
echo "<td align='center'>" . $row['name'] . "</td>";
echo "<td align='center'>" . $row['id'] . "</td>";
echo "</tr>";
}
echo "</table>";
$sql = "SELECT COUNT(name) FROM countries";
$rs_result = mysql_query($sql);
$row = mysql_fetch_row($rs_result);
$total_records = $row[0];
$total_pages = ceil($total_records / 10);
for ($i=1; $i<=$total_pages; $i++) {
echo "<a href='nav.php?page=".$i."'>".$i."</a> ";
};
?>
ملحوظة يجب تغير اسماء الجدول والحقول على حسب قاعدة البيانات الخاصة بك مرفق ملف sql به الجدول المستخدم وكذلك ملف php
وهذة صورة لنتائج الكود
