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

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

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929

    Smile Pagination : قمت بعمله بنجاح .. لكن توجد مشكلة "كثرة عدد الصفحات في القسم"



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

    وقمت بعمل خاصية الـ Pagination في الاقسام
    ولكني فوجئت بعد فترة ان عدد المقالات في زيادة
    وادي ذلك الي زيادة عدد الصفحات في الأقسام

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

    بهذا الشكل







    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته




  2. السلام عليكم،
    اعرفك من زمان يا سحاب اونلان.. واعرف انك في هذه المرحله مطور جيد.. فلا داعي لكي اشرح هذا الرابط لك، سيكون سهلا عليك
    Digg-style Pagination





    __________________
    هلابي افضل المواقع العربية تصميماً
    انصح باستخدام ابونتو

  3. #3
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    معرفتك لي .. شرف عظيم نلته بقولك
    وسعادتي بإطرائك وشهادتك لي .. أكبر من أن توصف بكلمات قليلات

    سأقوم بتجربة الدرس ان شاء الله الآن
    وباذن الله ينجح معي





    التعديل الأخير تم بواسطة hilaby ; 26-09-2008 الساعة 10:00 AM سبب آخر: دمج مشاركتين
    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته



  4. ضع نتيجتك والكود النهائي هنا لكي يستفيد منها الجميع





    __________________
    هلابي افضل المواقع العربية تصميماً
    انصح باستخدام ابونتو

  5. #5
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    ضع نتيجتك والكود النهائي هنا لكي يستفيد منها الجميع
    والله مش بايدي
    حاولت اكثر من مرة عشان افهم الكود
    لكن خابت المحاولة

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

    سؤال اخر لو سمحت
    قلت احطه في ردي هنا بدل ما افتح موضوع كامل عشانه

    كيف اضع اسلوب شرطي في جملة select
    بهذا الشكل : إذا كان المتغير $open يساوي القيمة "yes" يضع شرط اخر للاستعلام بعد where
    بهذا الشكل :

    كود PHP:
    $sql="SELECT * FROM $tbl_name WHERE dele='0' .if ($open==yes){and artopen='1'} . LIMIT 0, 50"
    ليصبح اذا كان المتغير $open يساوي yes
    شرطين للاستعلام
    dele='0'
    artopen='1'





    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

  6. #6


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

    بمعني أحصل علي عدد المحتويات داخل القاعدة
    ثم أقسمه علي عدد المحتويات في كل صفحة ينتج لك عدد الصفحات

    الأن خد عدد الصفحات وروح لدالة بالعدد
    امممممممم لا أدري كيف أشرحها

    عموما لو تذكر سكربت downsys
    http://www.swalif.net/softs/swalif54...=down%3A%3Asys

    لم يكن فيه تعدد صفحات في البيتا 1
    وقمت بعملها له وفصلها في صفحة منفصلة وتعتمد علي خيارات يمكنك كصاحب الموقع ان تعدل فيها لتختلف نتيجة العرض
    والدالة فاصلها في صفحة لوحدها


    كود PHP:
    function home_pages($parent$numfiles$currentpage)
            {
                global 
    $option;
                
                
    $adminchoose 7;
                
    $numofsubpage = (intval($adminchoose/2));
                
                
    $numpages ceil($numfiles/$option['files_every_page']);
                
                
    // define pages group
                
    if ( $currentpage <= $numofsubpage )
                {
                    
    $startpage 1;
                    
    $endpage $adminchoose;
                }
                else if ( 
    $currentpage > ( $numpages $numofsubpage) )
                {
                    
    $startpage $numpages $adminchoose 1;
                    
    $endpage $numpages;
                }
                else
                {
                    
    $startpage $currentpage-$numofsubpage;
                    
    $endpage $currentpage+$numofsubpage;
                }
                    
                 
                
                for ( 
    $i=$startpage$i<=$endpage$i++ )
                {
                    if ( 
    $i == $currentpage )
                        
    $pagedisplay .= $i;
                    else
                    {
                        
    $page_link $parent->functions_rewrite->rewrite_category_pages$parent->catid$parent->catlinkname$i );
                        
    $pagedisplay .= "<a href='{$page_link}'>{$i}</a>";
                    }
                }
                
                echo 
    $pagedisplay;
            } 
    توضيحات

    $numfiles هو عدد المقالات
    $currentpage هو رقم الصفحة الحالية وتحصل عليه من ال get وتروح للدالة به
    $adminchoose = 7; هذه خيار سأنقله لخيارات لوحة التحكم
    وهو عدد الصفحات اللي تظهر لك في الصفحة

    مثلا لو لديك 30 صفحة
    انت الأن في الصفحة رقم 7
    يظهر 3 بعد 7 و 3 قبل 7

    فيكون
    4 - 5 - 6 - 7 - 8 - 9 - 10
    ( لسه بطورها وأخلي فيها زر السابق قبل 4 وزر التالي بعد الرقم 10 وكما الصفحة الأول والصفحة الأخيرة )

    $numofsubpage بتقسم الرقم علي 2 وتقربه
    $numpages عدد الصفحات وتحصل عليه بقسمة عدد الملفات علي عدد الملفات في كل صفحة ( أو المقالات بدل الملفات يعني )

    وأخيرا
    $page_link بتروح تجيب من دالة اللنك لأني عامل نظام مود رايت إختياري فهتروح لدالة في صفحة أخري وتجيب الرابط خسب خيارات لوحة التحكم
    ولكن أنت أكيد الرابط عندك ثابت فضع هنا الرابط مباشرة وبدل رقم الصفحة بالمتغير $i

    موفق أخي العزيز





    __________________
    السيف أصدق أنباء من الكتب

  7. #7
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    المجروح .. ربنا يجازك خير
    بس سؤال واحد عشان انا مخي تقريبا سخن

    هل الدالة اللي حضرتك وضعتها
    في امكانية عمل اللي في الصورة ده







    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

  8. #8
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    947


    أخي الكريم
    الكود سهل جداً
    هو يعتمد على function parameters بحيث يقوم بالعمل على المتغيرات بشكل طبيعي كأنها موجودة ثم تمريرها داخل الfunction عند التنفيذ
    وتقوم بتمريرها انت بعد عمل الاستعلامات اللازمة ووضع النتائج في متغيرات

    مثال:
    تقوم بعمل استعلام عن عدد الحقول الكلي وتضعه في متغير وليكن
    كود PHP:
    $records_count 
    تقوم بوضع عدد الحقول في الصفحة الواحدة وليكن 10

    وتقوم باستدعاء كود التعدد بالشكل التالي:

    [php]
    كود PHP:
    getPaginationString($_GET['page'],$records_count,10,0,"/","index.php?page="); 
    مع تغيير index.php لاسم الصفحة التي تريد عمل التعدد بها
    وكذلك تستطيع تعديل باقي القيم

    لاحظ انه مشروح العمل بدون function وداخلها استعلامات لكن هذا الكلام يُعتبر فرح ومهرجان

    ونسخته اليك :
    كود PHP:
    <?php
    /*
    Place code to connect to your DB here.
    */
     
    // How many adjacent pages should be shown on each side?
    $adjacents 3;
     
    /* 
    First get total number of rows in data table. 
    If you have a WHERE clause in your query, make sure you mirror it here.
    */
    $query "SELECT COUNT(*) as num FROM portfolio";
    $total_pages mysql_fetch_array(mysql_query($query));
    $total_pages $total_pages[num];
     
    /* Setup vars for query. */
    $limit 2//how many items to show per page
    if($page
    $start = ($page 1) * $limit//first item to display on this page
    else
    $start 0//if no page var is given, set start to 0
     
    /* Get data. */
    $query "SELECT category, uname, title FROM portfolio LIMIT $start$limit";
    $portfolio mysql_query($query);
     
    /* Setup page vars for display. */
    if ($page == 0$page 1//if no page var is given, default to 1.
    $prev $page 1//previous page is page - 1
    $next $page 1//next page is page + 1
    $lastpage ceil($total_pages/$limit); //lastpage is = total pages / items per page, rounded up.
    $lpm1 $lastpage 1//last page minus 1
     
    /* 
    Now we apply our rules and draw the pagination object. 
    We're actually saving the code to a variable in case we want to draw it more than once.
    */
    $pagination "";
    if(
    $lastpage 1)

    $pagination .= "<div class=\"pagination\">";
    //previous button
    if ($page 1
    $pagination.= "<a href=\"diggstyle.php?page=$prev\">« previous</a>";
    else
    $pagination.= "<span class=\"disabled\">« previous</span>"
     
    //pages 
    if ($lastpage + ($adjacents 2)) //not enough pages to bother breaking it up

    for (
    $counter 1$counter <= $lastpage$counter++)
    {
    if (
    $counter == $page)
    $pagination.= "<span class=\"current\">$counter</span>";
    else
    $pagination.= "<a href=\"diggstyle.php?page=$counter\">$counter</a>"
    }
    }
    elseif(
    $lastpage + ($adjacents 2)) //enough pages to hide some
    {
    //close to beginning; only hide later pages
    if($page + ($adjacents 2)) 
    {
    for (
    $counter 1$counter + ($adjacents 2); $counter++)
    {
    if (
    $counter == $page)
    $pagination.= "<span class=\"current\">$counter</span>";
    else
    $pagination.= "<a href=\"diggstyle.php?page=$counter\">$counter</a>"
    }
    $pagination.= "...";
    $pagination.= "<a href=\"diggstyle.php?page=$lpm1\">$lpm1</a>";
    $pagination.= "<a href=\"diggstyle.php?page=$lastpage\">$lastpage</a>"
    }
    //in middle; hide some front and some back
    elseif($lastpage - ($adjacents 2) > $page && $page > ($adjacents 2))
    {
    $pagination.= "<a href=\"diggstyle.php?page=1\">1</a>";
    $pagination.= "<a href=\"diggstyle.php?page=2\">2</a>";
    $pagination.= "...";
    for (
    $counter $page $adjacents$counter <= $page $adjacents$counter++)
    {
    if (
    $counter == $page)
    $pagination.= "<span class=\"current\">$counter</span>";
    else
    $pagination.= "<a href=\"diggstyle.php?page=$counter\">$counter</a>"
    }
    $pagination.= "...";
    $pagination.= "<a href=\"diggstyle.php?page=$lpm1\">$lpm1</a>";
    $pagination.= "<a href=\"diggstyle.php?page=$lastpage\">$lastpage</a>"
    }
    //close to end; only hide early pages
    else
    {
    $pagination.= "<a href=\"diggstyle.php?page=1\">1</a>";
    $pagination.= "<a href=\"diggstyle.php?page=2\">2</a>";
    $pagination.= "...";
    for (
    $counter $lastpage - (+ ($adjacents 2)); $counter <= $lastpage$counter++)
    {
    if (
    $counter == $page)
    $pagination.= "<span class=\"current\">$counter</span>";
    else
    $pagination.= "<a href=\"diggstyle.php?page=$counter\">$counter</a>"
    }
    }
    }
     
    //next button
    if ($page $counter 1
    $pagination.= "<a href=\"diggstyle.php?page=$next\">next »</a>";
    else
    $pagination.= "<span class=\"disabled\">next »</span>";
    $pagination.= "</div>\n"
    }
    ?>
    <ul>
    <?php
    while($item mysql_fetch_array($portfolio))
    {
    ?>
    <li><a href="/portfolio//"></a></li>
    <?php
    }
    ?>
    </ul>
    <?=$pagination?>
    لكن نصيحتي ان تعمل بال function المنسقة لانك ربما تستخدم التعدد في عشرات الصفحات
    مش معقول تضع كل هذا الكود في كل صفحة!!
    لكن ممكن تضع الfunction في ملف وتقوم بعمل include له وتستدعي الفنكشن بالطريقة السابقة
    اتمنى ان يفيدك ردي واذا احتجت شرح لاي جزء معين في الكود تفضل بطرحه هنا
    وكل عام وانت بخير





    التعديل الأخير تم بواسطة مهندس مصرى ; 01-10-2008 الساعة 07:56 AM
    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير





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

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

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