إنشاء تعدد الصفحات باستخلاص بيانات قاعدة البيانات


الدرس :-

لسلام عليكم و رحمة الله و بركاته .
أحببت أن أضع بين أيديكم كود تعدد الصفحات .
للأمانة :
الكود من ترجمتي و شرحي و هو مأخوذ عن
http://ww.phpromania.net
اسم المبرمج :Think Pink
تاريخ وضع الكود :18 \ 10 \ 2004


قبل أن نبدأ :
هذا الكود العادي لاستخراج البيانات من قاعدة البيانات :



كود PHP:
<?php
//نستدعي ملف الاتصال بقاعدة البيانات
include(\"config.php\");
// نعطي الأمر باستدعاء الجدول الذي يعنينا
$sql = \"SELECT * FROM table ORDER BY date DESC \";
$result = mysql_query($sql);
while(
$row=mysql_fetch_array($result)) {
echo \" هنا نضع ما نريد استخراجه من قاعدة البيانات 
, كل شخص و حسب العناصر يللي بالجدول يللي يشتغل عليها \";
}
//ننهي الإتصال بقاعدة البيانات
mysql_close();
//نغلق الملف
?>


طيب , هذا الكود لو استعملناه سيستخرج البيانات من الجدول كلها في صفحة واحدة حتى لو كانوا 100 نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

شو نسوي ؟

نشوف الكود الأول , و نزيد عليه بالترتيب الإضافات و بعدين إن شاء الله نسوي الكود النهائي .
طيب .
بسم الله الرحمن الرحيم .


كود PHP:
<?php
//نستدعي ملف الاتصال 
include(\"config.php\");

//نضع الشرط الذي على أساسه سيتم عرض الصفحة
//و معناه أنه إذا لم يتحقق شرط التعددية في الصفحات
//فستكون الصفحة المعروضة هي الصفحة الأولى 
//و إلا فستتكون التعددية في الصفحات 
if(!isset(
$_GET['pag'])){
$pag = 1;
} else {
$pag = $_GET['pag'];
}

//نضع الكود الذي يحدد لنا عدد المعلومات المستخرجة
// من الجدول و طبعا نختار الرقم يللي نريده و أنا حطيته عشرة
$max_results = 10;

//نضع كود الذي يحدد لنا الحد الذي على 
//اساسه سيتم استخراج البيانات من الجدول
//عملية البدء تساوي الصفحة مضروبة عدديا 
//بالعدد الأقصى للبيانات المستخرجة
// و من حاصل الضرب يتم إنقاص الرقم الذي يرمز للعدد الاقصى للبيانات
$start = (($pag * $max_results) - $max_results);

//الآن نضع كود استخراج
//البيانات من الجدول 
//و هو تماما ما كتبته في الكود الأول 
//في بداية الموضوع
//مع إضافة الحد الذي سيتم الوقوف عنده
$sql = \"SELECT * FROM اسم الجدول ORDER BY date DESC LIMIT $start$max_results \";
$result = mysql_query($sql);
while(
$row=mysql_fetch_array($result)) {
echo \" هنا نضع ما نريد استخراجه من قاعدة البيانات 
, كل شخص و حسب العناصر يللي بالجدول يللي يشتغل عليها \";
}

//نعطي استعلام عن العدد الموجود في الجدول
//المجموع الكلي للنتائج يساوي ما استخلصناه من الجدول عن طريق تحديد الأي دي 
//العدد الإجمالي للعناصر المستعرضة يساوي القيمة العددية للمجموع الكلي مقسوما على
//القيمة العددية للحد الأقصى للبيانات المستخرجة 
$total_res = mysql_result(mysql_query(\"SELECT COUNT(id) FROM table\"),0);
$total_col = ceil($total_res / $max_results);

//نضع الكود الشرطي الذي يظهر لنا كلمة\"السابق\" للعودة إلى الصفحة السابقة
//حيث توجد البيانات المرتبة على حسب ما قررنا ان نستخلص من الجدول
//و هكذا , إذا كانت الصفحة أكبر من واحد فإن المستعرض هو الصفحة المعروضة مع إنقاص الرقم واحد
//و في هذه الحالة ستظهر كلمة السابق التي بالضغط عليها سنرجع صفحة واحدة إلى الخلف
if(
$pag > 1){
$prev = ($pag - 1);
echo \"<a href=\\"
\".$_SERVER['PHP_SELF'].\"?pag=$prev\\"السابق </a> \";
}

//الآن نضع الكود الذي يظهر لنا رقم الصفحة التي نتواجد فيها
//وهو عدد ثابت لا يمكن الضغط عليه 
for(
$i = 1; $i <= $total_col$i++){
if((
$pag) == $i){
echo \"
$i \";
}
else {
echo \"<a href=\\"
\".$_SERVER['PHP_SELF'].\"?pag=$i\\">$i</a> \";
}
}

//نضع الكود الشرطي الذي يظهر لنا كلمة\"التالي\" للذهاب إلى الصفحة التالية
//حيث توجد البيانات المرتبة على حسب ما قررنا ان نستخلص من الجدول
//و هكذا , إذا كانت الصفحةأصغر من العدد الكلي للصفوف فإن المستعرض هو الصفحة المعروضة مع زيادة الرقم واحد
//و في هذه الحالة ستظهر كلمة التالي التي بالضغط عليها سنذهب صفحة واحدة إلى الأمام
if(
$pag < $total_col){
$next = ($pag + 1);
echo \"<a href=\\"
\".$_SERVER['PHP_SELF'].\"?pag=$next\\" التالي </a>\";
}

//ننهي الملف
?>


أتمنى أن أكون قد وفقت في الشرح , و أي سؤال أنا حاضر إن شاء الله