النتائج 1 إلى 3 من 3

الموضوع: [تعدد الصفحات] تحليل ثم برمجة مع شرح من برمجتي يناسب جميع انظمة القوالب

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    3,006

    [تعدد الصفحات] تحليل ثم برمجة مع شرح من برمجتي يناسب جميع انظمة القوالب



    [
    السلام عليكم ورحمة الله وبركاته
    كيف حالكم جميعا ؟ ان شاء الله انه يكون الجميع بخير

    المهم نبدأ بدرسنا لليوم

    عنوان الدرس:
    الدرس هو عبارة عن شرح وتحليل لفكرة تعدد الصفحات، في النهاية راح يتكون عندنا كود لتعدد الصفحات يناسب جميع انواع القوالب. ويعمل بقوة ان شاء الله، لانه كثير نجد في القسم مواضيع بعنوان تعدد الصفحات في السمارتي والعديد من المواضيع المماثلة التي تعقد الموضوع مع العلم انه الموضوع بسيط جدا والخ.

    فكرة الدرس:
    فكرة تعدد الصفحات، هي قسم نتائج استعلام معين الى عدة اقسام، طبعا فائدته معروفة ، بدل ما نعمل استعلام بالف سجل ونعرضهم مرة واحدة، راح يثقل على السيرفر وراح يصعب قراءة الناتج، اذن نقوم بعمل تقسيم للنتائج بحيث نخفف على السيرفر ونخفف ايضا على القارئ ونسهل عليه
    اذن الفكرة
    انه لما نطلب صفحة معينة تعطينا فقط النتائج التي تنتمي لهذه الصفحة مثل المنتديات مثلا. والمفتاح الذي يحدد هو رقم الصفحة ، وايضا عدد النتائج التي سنعرضها في كل صفحة تحدد ايضا ما هي النتائج التي ستخرج لنا

    شرح الفكرة:
    في البداية نضع نص الاستعلام الذي نريد ان ننفذه ، مثلا
    كود PHP:
    $query="SELECT * FROM news ORDER BY id DESC"
    طبعا من الملاحظ انه ما نفذنا الاستعلام فقط وضعناه دون تنفيذ
    الان نريد ان نحدد عدد النتائج لكل صفحة
    كما في الكود
    كود PHP:
    $rowsPerPage=10
    في حالتنا هذه وضعنا عدد النتائج هو 10 طبعا قابل للزيادة او النقصان حسب انت ماذا تحتاج

    الخطوة التالية هي حساب عدد كل النتائج ومعرفة عدد الصفحات اللازمة لنا
    عن طريق الكود التالي
    كود PHP:
     $num=mysql_num_rows(mysql_query($query));
     
    $pagesNum=ceil($num/$rowsPerPage); 
    قسمنا عدد النتائج على عدد النتائج لكل صفحة ثم اخذنا قيمة اكبر عدد صحيح عن طريق دالة ceil
    الدالة معروفة وظيفتها عند متخصصين الرياضيات ويسموها اكبر عدد صحيح ورمزها [number] ويوجد ايضا واحدة اخرى اسمها floor بتاخذ اصغر رقم صحيح لكن احنا هنا بيعنينا اكبر عدد صحيح فقط

    الخطوة التالية
    نريد عن طريق GET ان نأخذ رقم الصفحة من المستخدم
    كود PHP:
     $page=intval($_GET[page]); 
    طبعا دالة انتفال للحماية من ادخال اي رموز غير مرغوب فيها
    الان في الخطوة التالية
    اما المستخدم سيدخل رقم صحيح ومقبول ، او راح يدخل شي خاطئ
    لذلك راح نحصر جميع الاحتمالات عن طريق جملة شرطية

    كود PHP:
    if($page==""||$page==0||$page==1||$page>$pagesNum||$page<0)
     {
     
    $page=1;
     
    $startIndex=0;
     
    $endIndex=$rowsPerPage;
     }
     else {
     
    $startIndex=($page-1)*($rowsPerPage);
     
    $endIndex=$rowsPerPage;
     } 
    واضح من الكود انه في اذا ادخل المستخدم 1 او 0 او لم يدخل شي او حتى ادخل رقم سالب او حتى ادخل رقم اكبر من عدد الصفحات، سيحوله الى الصفحة الاولى
    وسيكون البداية من الصفر وعدد العناصر هو الذي حددناه بالاعلى

    اما في حال ادخل رقم صفحة مسموح فإنه سيقوم باحتساب النتائج المطلوبة كما هو موضح بنص else
    فقط دقق في الكود لمدة 10 ثوان وستعرف بالضبط كيف يعمل الكود

    الان نجري الاستعلام
    كود PHP:
     $result=mysql_query("$query LIMIT $startIndex,$endIndex"); 
    ثم عن طريق جملة تكرارية نخرج النتائج ونخزنها في مصفوفة ، فيكون لدينا النتائج المطلوبة فقط في الصفحة التي ادخلنا رقمها

    كود PHP:
    while($rows=mysql_fetch_array($result))
     {
     
    $newsdata[]=$rows;
     } 
    بعد استخرجنا المعلومات ووضعناها في مصفوفة ، لم يتبق علينا سوى طباعة الصفحات
    انا استخدمت متغير واسميته $pagination لوضع ارقام الصفحات فيه كما هو موضح بالاسفل
    كود PHP:
    $pagination="";
     for(
    $i=1;$i<=$pagesNum;$i++)
     {
      if(
    $page==$i)
      {
      
    $pagination.="&nbsp;<span class=\"pagination1\">$i</span>";
      }
      else {
      
    $pagination.="&nbsp;<span class=\"pagination2\"><a href=\"news.php?page=".$i."\">".$i."</a></span>";
      }
     } 
    من خلال جملة الفور لوب for الموضحة نقوم بتكوين ارقام الصفحات
    ومن الملاحظ ايضا اني اكسبتها كلاس css حتى تكون مرنة في تغيير مظهرها

    الان في نظام قوالبك
    فقط اكتب اسفل السجلات الجملة التالية في حال كان نظامك سمارتي
    كود PHP:
    {$pagination
    اما في حال كان نظامك غير السمارتي فالعملية هي عملية طباعة متغير عادي
    وراح تكون حصلت على تعدد الصفحات المطلوب

    انا وضعت لكم تنسيق css بامكانكم التعديل عليه بكل سهولة
    وهو

    كود:
    .pagination1
    {
     font: 10pt tahoma;
     border: 1px solid #1D6EBF;
     width:25px;
     background:#80BDFB;
    }  
    .pagination2
    {
     font: 10pt tahoma;
     border: 1px solid #1D6EBF;
     width:25px;
     background:#F2F2F2;
    }


    والناتج راح يكون كما في الصفحة التالية



    امل ان يكون الدرس قد نال اعجابكم

    وهذا هو الكود كامل
    كود PHP:
    $query="SELECT * FROM news ORDER BY id DESC";
     
    $rowsPerPage=2;
     
    $num=mysql_num_rows(mysql_query($query));
     
    $pagesNum=ceil($num/$rowsPerPage);
        
    $page=intval($_GET[page]);
     if(
    $page==""||$page==0||$page==1||$page>$pagesNum||$page<0)
     {
     
    $page=1;
     
    $startIndex=0;
     
    $endIndex=$rowsPerPage;
     }
     else {
     
    $startIndex=($page-1)*($rowsPerPage);
     
    $endIndex=$rowsPerPage;
     }
     
    $result=mysql_query("$query LIMIT $startIndex,$endIndex");
     while(
    $rows=mysql_fetch_array($result))
     {
     
    $newsdata[]=$rows;
     }
     
    $pagination="";
     for(
    $i=1;$i<=$pagesNum;$i++)
     {
      if(
    $page==$i)
      {
      
    $pagination.="&nbsp;<span class=\"pagination1\">$i</span>";
      }
      else {
      
    $pagination.="&nbsp;<span class=\"pagination2\"><a href=\"news.php?page=".$i."\">".$i."</a></span>";
      }
     } 

    والسلام عليكم ورحمة الله وبركاته
    ]

    الدرس منقول من ترايدنت : http://traidnt.net/vb/showthread.php?t=1433862
    وإن شاء الله يجي ذاك اليوم والي انزل لكم دروس من دروسي :funny:





    __________________
    p-king-p@hotmail.com


    الرجاء مراجعة الموضوع للجميع :
    http://www.swalif.net/softs/swalif12/softs302945


  2. #2


    رائع بحق تسلم يديك

    جاري عمل تطبيق الان وتم الحفظ في المفضلة





    __________________
    ( اللهم إنك عفوٌ كريمٌ تحب العفو فاعف عني )
    php Developer
    Short - Unshort Url | Moslsly.com

  3. #3
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    232


    شكرا اخي على الدرس ولقد طبقته للتو
    كان هناك امرين غير مفهومين بالنسبة لي وهما الكود الذي يحتاج 10 ثوان( تم فك لغزه ^_^)
    والامر الثاني هو استخراج النتائج في مصفوفة لم يحل بعد ( مع انني ازلت ذلك السطر وبقي يعمل الكود بشكل جيد )
    وسأحاول اضافة next و last بنفسي
    على العموم شكرا جزيلا اخي على الافادة
    وجزاك الله 5689 خير





    __________________
    www.morobile.com





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض