بسم الله الرحمن الرحيم ..
الحمد لله رب العالمين ..
هذي يا أخواني طريقة سهلة لعمل تعدد الصفحات .. و إذا في انتقادات نبهوني ترى آنة صغير في الـphp ..
أحب أنبه أن الكلام كأنه ما بين مدرس و تلميذه .. فكل شي مكتوب ما بين [ القوسين ] للتلميذ [ إلي أهو آنة ] .. و الباقي للمدرس إلي أهو آنة ..
نبدأ الشغل ..
.:: أول شي ::.
نفهم الفكرة وانحدد المعطيات [ :con2: .. يعني اشلون ؟؟ ] .. سهلة !! آنة أقولك ..
.:: الفكرة .:. المعطيات ::.
الفكرة : تعدد الصفحات .. يعني أني أحدد عدد من الصفوف أخرجهم للمستخدم .. ويكون عدد الصفوف الكلي أكبر من عدد الصفوف المخرجة للمستخدم .. ويكون فيه لينك إلى نفس الصفحة إذا ظغطنا عليه يحولنا على نفس الصفحة ولكن بمخرجات جديدة ..
المعطيات : الموجود عندنا عدة أشياء :
1- رقم الصفحة إلي أحنا فيها ..
2- عدد الصفوف المخرجة ..
3- نقطة البداية في كل صفحة .. [ :con2: .. يا استاذي أنت اتقول سهلة !! وين هذي يبيلها شغل ] .. لحظة يبة أنطر اشوي ما فيك صبر .. ..
4- العدد الكلي للصفوف ..
ألحين ركز معاي شوي لا اتنح ..
1- رقم الصفحة إلي أحنا فيها .. هذي سهلة .. نقدر انخلي اللينك يكون فيه متغير يحمل رقم الصفحة ؟؟ أي يبة نقدر .. [ هذي وحدة عدت على خير ] .. ههه ترى الموضوع سهل و ما يحتاج ..
2- عدد الصفوف المخرجة .. [ هذا صعب اشوي :con2: ] .. أقول لا اتذمر وايد .. هذا أنت اتحدده .. بعد أكو شي أسهل منه ..
3- نقطة البداية في كل صفحة .. هذي مصيبة المصايب [ إذا المعلم يقول مصيبة المصايب اشراح انقول احنا ] .. و دام هذي مصيبة المصايب راح أعطيك إياها على البراد ..
شوف .. [ ] لا اتنح .. المسألة سهلة .. مجرد معادلة رياضية .. [ آنة ما صدقت أخلص من مدرس الرياضيات يانا هذا :anger2: ] .. لا يبى لا .. هذي غير .. هذي سهلة وايد .. بس فيها ظرب و طق و كسور و رظوظ .. قصدي أنها سهلة ..
المعادلة هي بكل بطاطا : ( رقم الصفحة الحالية * عدد الصفوف المخرجة للمستخدم ) - عدد الصفوف المخرجة للمستخدم ..
سهلة صح ؟؟ [ :anger2: كل هذا الكلام واتقول سهلة ] .. لحظة اشوي صبرك علي .. خلني أعطيك مثال أول بعدين تعال تحلطم علي ..
4- العدد الكلي للصفوف .. عاد هذي أسهل شي .. نحط الاستعلام وبعدين انطلع عدد الصفوف ..
شوف يبى ..
نفرض أن الصفحة الحالية رقمها 1 .. و عدد الصفوف المخرجة للمستخدم 10 ..
انطبق المعادلة وانشوف ..
( 1 * 10 ) - 10 = 0
إذن .. هذي نقطة البداية 0 .. سهلة ؟؟ ولا صعبة ؟؟ [ :eek2: هذي أسهل من ما لت مدرس الرياضيات ] ..
طيب خلنا من النظريات إلى العمليات ..
.:: ثاني شي ::.
راح انعين رقم الصفحة عن طريق GET إلي اتكون مع المتصفح .. [ انزين و إذا ما في GET راح يكون المتغير فاظي يعني empty ] .. كلامك صح .. 100% .. علشان جذي لازم ناخذ تدابيرنا وانتوكل على الله ..
أول شي لازم انعين متغير وانسميه مثلاً $page وانعرفة على أنه أهو رقم وليس كلام ..
كود PHP:
$page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]);
طيب .. ليلحين كل شي تمام .. عينا المتغير $page و عرفناه على أنه أهو رقم وليس كلام .. و المهم كذلك أن أحنا عطيناه رقم 1 إذا كان empty .. و إذا كانت $_GET["page"] ممررة عن طريق العنوان راح ياخذ قيمتها ..
حلو .. ألحين في مشكلة راح اتواجهنا من قبل الأطفال ( المخترقين ) .. [ شنو أهي :con2: ] .. شوف معاي .. إذا قام الطفل و مرر كلام في العنوان مثلاً :
http://localhost/index.php?page=kldfjd
هذا الفعل .. راح يولد إيرور .. علشان جذي أحنا لازم ناخذ تدابيرنا .. لازم نعطيه أمر يخليه يتحاشى الكلام .. أو الحرف .. وياخذ الأرقام فقط .. وكذلك ما يطلع إيرور .. فالأمر التالي راح يحل المشكلة باختصار
كود PHP:
$page = ($page == 0 ? 1 : $page);
خلصنا من تحديد الصفحة الحالية .. ألحين انحدد عدد الصفوف إلي راح انطلعها من الداتابيس .. فعلشان انخلص من هذي الخطوة الطويلة .. راح انعرف متغير على أن يحدد لنا الصفوف إلي نبيها .. بكل بساطة ..
ألحين نطبق المعادة الرياضية .. [ :eek2: هذي السهلة ] .. وراح نعطي الناتج متغير وانسميه $startpoint ..
كود PHP:
$startpoint = ( $page * $perpage ) - $perpage;
و الحل على الكمبيوتر إن يطلعة .. [ أشوة افتكينا من شي على الأقل ] ..
ألحين يا وقت الاستعلام و عواقبة الوخيمة هاهاهاهاه .. قصدي عواقبة السهلة ..
كود PHP:
$query = "SELECT * FROM table limit $startpoint, $perpage";
$result = mysql_query($query);
$num = mysql_num_rows($result);
ألحين أحنا سوينا الاستعلام المطلوب و حددنا عدد الصفوف .. وطلعنا عدد الصفوف !! .. تدرون ليش أحنا طلعنا عدد الصفوف مع أن أحنا حددناهم من قبل ؟؟ .. [ عاد هذي صعبة و الله .. :con2: ] .. أسكت فشلتنا و آنة معتمد عليك ..
آنة طلعت عدد الصفوف علشان إذا كان عدد الصفوف الباقية 3 ما يكرر العملية حتى 10 لأن احنا حددنا عدد الصفوف المخرجة 10 .. وهذي سهلة ..
ألحين ظبط شغلك علشان اتطلع المخرجات على الشكل إلي أنت تبيه وهذي آنة أخليها حقك ..
بعد المخرجات مالتك راح نبدي في شغلنا إلي أهو تعدد الصفحات ..
في شغلة تغافلت عنها عمداً و إهيا إلي راح انسويها ألحين ؟؟ اتعرفون شنو أهيا ؟؟ .. [ أيي آنة أعرف .. أهيا العدد الكلي للصفوف ] :funny: صح .. هذي الإجابات ولا بلاش بس فاظي اتصيد علي ها ؟؟ .. بس آنة أوريك :anger1: ..
العدد الكلي للصفوف سهل و الكل يعرف يطلعة
كود PHP:
$num = mysql_num_rows(mysql_query("SELECT * FROM table"))
جذي انكون طلعنا العدد الكلي للصفوف ..
ألحين نفرض أن عدد الصفوف الكلي 63 صف .. و المطلوب أن انطلع 10 صفوف في كل صفحة .. الموضوع سهل .. بالقسمة 63/10 يطلع الناتج 6.3 .. لكن هل يوجد 0.3 صفحة ؟؟ لا .. لا يوجد .. لذلك نحتاج إلى أن نجبر العدد 6.3 إلى العدد 7 حتى نعرض باقي الصفوف في الصفحة رقم 7 .. وننتهي .. ولعمل هذا يمكننا أن نستعين بالدالة الأساسية ( ceil ) وظيفتها جبر الأعداد العشرية إلى أعداد صحيحة ..
طيب .. الآن نفسر الكلام السابق بالكود التالي :
كود PHP:
$pagesnum = @ceil( $num / $perpage );
الآن عرفنا كم صفحة نحتاج .. فيجب علينا عمل تكرار لاخراج الأرقام و الروابط عن طريق هذا الكود :
كود PHP:
for ($i=1; $i<=$pagesnum; $i++)
{
الآن نقوم بالاشتراط من أجل التنسيق .. وهو كالتالي :
نشترط أولاً إذا كان رقم التكرار لا يساوي رقم الصفحة .. فهنا يعطينا لينك ..
أما إذا كان لا يساويه فيجب أن يكون تحته خط و بدون لينك ..
كود PHP:
if ($i != $page)
{
$z = "<a href='". $_SERVER['PHP_SELF'] ."?page=$i'>$i</a>";
}
else
{
$z = "<u>$i</u>";
}
بكل بساطة الآن نقوم بإخراج أرقام الصفحات عن طريق echo :
ولا تنسى إغلاق قوس التكرار
وهذا هو الكود كامل :
كود PHP:
$page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]);
$page = ($page == 0 ? 1 : $page);
$perpage = 10;
$star = $page * $perpage;
$startpoint = $star - $perpage;
$query = "SELECT * FROM table limit $startpoint, $perpage";
$result = mysql_query($query);
$num = mysql_num_rows($result);
//تقوم باستخراج بياناتك ..
$num = mysql_num_rows(mysql_query("SELECT * FROM table"))
$pagesnum = @ceil( $num / $perpage );
for ($i=1; $i<=$pagesnum; $i++)
{
if ($i != $page)
{
$z = "<a href='". $_SERVER['PHP_SELF'] ."?page=$i'>$i</a>";
}
else
{
$z = "<u>$i</u>";
}
echo "[$z] ";
}