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

الموضوع: تعدد الصفحات 2 [ بأسهل الطرق ]

  1. #1

    تعدد الصفحات 2 [ بأسهل الطرق ]



    بسم الله الرحمن الرحيم

    السلام عليكم ورحمة الله وبركاته ، أما بعد ؛

    إخوتي الأعزاء .. لقد قمت بشرح نظام تعدد الصفحات في عملية استخراج البيانات من قاعدة البيانات .. [ MySQL ] ..

    جاءني أحد الردود من الأخ محمد ( 2rabia.com ) كي أقوم بوضع درس آخر عن كيفية عمل نظام تعدد صفحات لعرض مجموعة ملفات موجودة داخل المجلد الحالي ..

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

    وبالفعل انتهينا منه والحمد لله

    تطرقت في الدرس الماضي إلى شرح هذا النظام بشكل نظري .. يمكنك مراجعة الدرس السابق على الرابط التالي ان لم تكن قرأته من قبل ..

    http://www.swalif.net/softs/showthread.php?t=169812

    الآن .. بعد أن تعرفت إلى هذا النظام بشكل نظري وبعد ان قمنا بتطبيقه عملياً بأحد الأشكال يمكننا الدخول مباشرة في هذا الدرس بلا مقدمات ..

    نبدأ بشرح الكود البرمجي الذي سنحتاجه في درسنا هذا بسم الله ..

    قم بتحديد عنوان المجلد في السيرفر الذي تستخدمه والذي تريد عرض ملفاته .. وذلك بتخزين المجلد [ المسار ] كمتغير:
    كود PHP:
    $dir "./photos"
    الآن نحدد عدد الملفات التي سنعرضها في الصفحة الواحدة :
    كود PHP:
    $perpage 6
    الآن اكواد تصحيح رقم الصفحة وتعديله وجعله أكثر أماناً [ لشرح أكبر راجع الدرس السابق في شرح نفس الاكواد ] :
    كود PHP:
    $page = (int) (!isset($_GET["page"]) ? $_GET["page"]);
    $page = ($page == $page); 
    ومن ثم تحديد نقطة بداية عرض الملفات [ رقم اول ملف ] :
    كود PHP:
    $startpoint = ($page $perpage) - $perpage
    لكن هنا الوضع مختلف .. في الدرس السابق كنا نحدد عدد النتائج التالية التي سنعرضها .. اما هنا فسنحدد رقم اخر ملف يتم عرضه كما حددنا اول رقم .. وذلك بإضافة عدد الملفات في كل صفحة إلى رقم اول ملف .. بذلك نحصل على قيمة ( اخر ملف + 1 ) .. أي ان رقم اخر ملف يتم عرضه في الصفحة يساوي ( نقطة النهاية - 1 ) ..
    كود PHP:
    $endpoint $startpoint $perpage
    الان نريد فتح اتصال بالمجلد الذي قمنا بتحديده في متغير $dir .. بكل بساطة سنستخدم دالة opendir لفتح مقبض اتصال بالمجلد :
    كود PHP:
    if ($dh opendir("$dir")) { 
    مع وجود شرط في الكود السابق اذا تم الفتح بنجاح يتابع عملية جلب الملفات .. وإن فشلت ، يطبع رسالة خطأ في النهاية ..

    الآن نقوم بإنشاء مصفوفة فارغة وهي المصفوفة التي سيتم تخزين اسماء الملفات داخلها :
    كود PHP:
    $files = array(); 
    الآن سوف نقرأ الملفات التي يحتوي عليها المجلد تدريجياً بواسطة دالة readdir وبواسطة حلقة تكرار while بسيطة هكذا :
    كود PHP:
    while (($file readdir($dh)) !== false) { 
    هذه الحلقة التي قمنا بفتحها هنا تقوم بإعطاء المتغير $file قيمة باسم الملف التالي [ طبعأً الملف الأول ثم الثاني وهكذا في كل دورة loop ] .. وذلك عن طريق تمرير مقبض الاتصال بالمجلد إلى دالة readdir ومن ثم التأكد من أن قيمة العملية أو نوعها [ عن طريق !== ] لا يساوي false أي نتأكد من أن العملية ناجحة ثم نقوم بمتابعة العملية داخل الحلقة ..

    كود PHP:
            if ($file == "." or $file == ".." or $file == "Thumbs.db") {
                continue;
            } 
    خلال هذا الكود .. قمنا بالتأكد خلال جملة شرطية أن الملف الحالي الذي نريد طباعته أ, إدخاله ضمن مصفوفة الملفات $files ليس عبارة عن ملف المصغرات Thumbs.db .. أو ملف باسم " . " أو " .. " .. إذا كان اسم الملف يطابق أحد هذه الأسماء الثلاثة فإنه يتم تجاهل هذه الدورة loop والذهاب إلى الدورة التالية .. ومن ثم نغلق جملة الشرط if ..

    إذا لم يكن الملف أحد الأسماء الثلاثة السابقة فإنه لن يتم تجاوز هذه الدورة loop .. بهذا سيتم تنفيذ الكود التالي داخل الحلقة .. والكود التالي هو الذي سيقوم اضافة الملف إلى مصفوفة الملفات التي سيتم عرضها :
    كود PHP:
            $files[] = $file
    الآن سوف نغلق كود حلقة while :
    كود PHP:

    الان نقوم بحساب عدد الملفات التي تم جمعها ضمن مصفوفة الملفات التي سيتم عرضها ضمن البرنامج من خلال دالة count التي تقوم بحساب عدد عناصر المصفوفة التي يتم تمريرها خلالها :
    كود PHP:
        $files_num count($files); 
    الآن سوف نضع عنوان في الوسط يبين عدد الملفات المعروضة خلال البرنامج :
    كود PHP:
        echo "<center>عدد الملفات = ".$files_num."<br><hr width=30%  color=#0080FF>"
    في عملية جلب الملفات التي نريدها ضمن حدود قيمة متغير $startpoint و $endpoint .. نحتاج إلى عداد حتى نعرف رقم الملف الحالي .. لذلك نقوم بجعل القيمة الافتراضية للعداد تساوي قيمة رقم اول ملف نريد عرضه حتى نبدأ منه ولا نبدأ جولتنا من الصفر :
    كود PHP:
        $counter $startpoint


    الآن نقوم بإنشاء جدول لعرض الملفات ، وفيه ننشئ أول سطر بوسم TR في الـ html :
    كود PHP:
        echo "<table><tr>"
    الآن نريد التأكد من أن قيمة العداد التي أنشأناه في المتغير $counter أصغر من العدد الإجمالي للملفات الموجودة في المجلد .. بالإضافة إلى التأكد من أن قيمة العداد أيضاً تساوي أو أكبر من نقطة البداية $startpoint .. وأنها أصغر من نقطة النهاية أيضاً$endpoint .. وتلك الشروط كلها ضمن حلقة تكرار while ... كما يلي :
    كود PHP:
        while($counter $files_num && $counter >= $startpoint && $counter $endpoint){ 
    الآن نقوم بطباعة الملف المطلوب محاطاً بوسم A لجعله كرابط يؤدي إلى ذلك الملف ...
    كود PHP:
            echo "<td><a href='$dir/$files[$counter]'>
                <img src='
    $dir/$files[$counter]' border='0' width='150' height='150'>
                </td>"

    الآن نقوم بزيادة عداد $counter بمقدار 1 :
    كود PHP:
            $counter++; 

    الآن نقوم بإغلاق جملة حلقة التكرار while :
    كود PHP:
        

    واخيراً كود عرض ارقام الصفحات ووصلاتها :
    كود PHP:
        $pagesnum = @ceil($files_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 ";
        } 
    ومن ثم اذا لم يتم فتح المجلد بنجاح [ كما ذكرت في بداية الدرس ] سيتم اظهار رسالة خطأ كالتالي :
    كود PHP:
    } else {
        echo 
    " This Dir Is Wrong ";

    درس بسيط وسهل باذن الله واتمني لكم الاستفادة

    إخوانكم في الله

    محمد محمود hawy_php
    أشرف السمهوري sBForum

    المصدر:
    http://www.devpedia.org/articles/index.php?p=59





    __________________
    أحمد أبو النصر
    Junior php Developer
    +20166196074


  2. #2
    عضو نشيط
    تاريخ التسجيل
    Nov 2002
    المشاركات
    261


    طريقة جميل ربي يوفقك قل امين . . .
    اذا ممكن مثال عشان تيقن الناس فيه . . .





    __________________
    a @ des-t . Net

    W w W . D e S - T . N e T

  3. #3

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    اقتباس المشاركة الأصلية كتبت بواسطة axalb
    طريقة جميل ربي يوفقك قل امين . . .
    اذا ممكن مثال عشان تيقن الناس فيه . . .
    ------------





    __________________
    @_@

  4. #4


    axalb و nothing4u شاكر لكما مروركما وان شاء الله اجيب لكم مثال قريباً ..

    تحياتي، sBForum





    __________________
    أحمد أبو النصر
    Junior php Developer
    +20166196074

  5. #5
    عضو نشيط
    تاريخ التسجيل
    Aug 2004
    المشاركات
    107


    أخي (sBForum) جزاك الله خير

    دخلت على موضوعك حبا ً للإستطلاع فقط ولكن عندما قرأت استطعت أن أفهم لأن شرحك جميل واستطعت ولله الحمد أن اطبق ما شرحته أنت واستخدمته في مشروع تخرجي لأني كنت احتاج أفهم طريقة تعدد الصفحات..

    يسر الله لك أمرك..





    __________________
    اللهم اجعلني أذل الناس لك وأعز الناس بك..
    اللهم اجعلني أفقر الناس لك وأغنى الناس بك..

  6. #6


    اقتباس المشاركة الأصلية كتبت بواسطة حمض الكلور
    أخي (sBForum) جزاك الله خير

    دخلت على موضوعك حبا ً للإستطلاع فقط ولكن عندما قرأت استطعت أن أفهم لأن شرحك جميل واستطعت ولله الحمد أن اطبق ما شرحته أنت واستخدمته في مشروع تخرجي لأني كنت احتاج أفهم طريقة تعدد الصفحات..

    يسر الله لك أمرك..
    تسلم اخوي ..

    يسرني سماع كلامك بصراحة .. وأتمنى يكون افادك فعلاً .. وهذا هدفنا من طرح أي موضوع .. إفادة الأعضاء وتبادل الخبرات ..

    تحياتي، sBForum





    __________________
    أحمد أبو النصر
    Junior php Developer
    +20166196074

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


    اخي الكريم sBForum

    هل تنفع هذه البرمجية البسيطة إلى ارشفة الصور في في مجلد معين بحيث يتم ارشفتها بصفحات html وعمل مصغرات لها وعند الضغط على المصغرة تفتح صفحة جديدة ويكون اسم الصفحة بنفس اسم الملف + html


    www.swahl.com





    __________________
    موقع سواحل

  8. #8


    عزيزي تحتاج للكثير بالإضافة إلى هذه ... حاول فيها وأي شي تحتاجه خبرنا وان شاء الله نفيدك ...

    ستحتاج إلى Mod Rewrite على الأغلب ...!

    تحياتي، sBForum





    __________________
    أحمد أبو النصر
    Junior php Developer
    +20166196074

  9. #9
    عضو فعال
    تاريخ التسجيل
    Mar 2005
    المشاركات
    1,482


    طيب اذا بغيت اعرف احدد يعرض كم صورة بالسطر الواحد

    يعنى يعرض مثلا 5 صور وبعدين ينزل سطر جديد وهكذا

    وايضا اذا بغيت اضع رابط للحذف لاى صورة بريدها كيف راح يكون الكود؟





    __________________

    D0 Th3 B3$T 2B Th3 B3$T !
    L1nux - L1f3 Fr33 0R D13





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

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

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