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

الموضوع: [درس] عمل معرض صور ديناميكي بدون قواعد بيانات MyWsGallery

  1. #1
    عضو نشيط جدا
    تاريخ التسجيل
    May 2007
    المشاركات
    509

    [درس] عمل معرض صور ديناميكي بدون قواعد بيانات MyWsGallery



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

    اخواني اخواتي وبعد طول غياب نطل عليكم اليوم بدرس جميل وعملي جدا اذ انه يهم اصحاب المواقع لدرجة كبيرة , نبعت الرغبة بعمل مثل هكذا برمجية صغيرة كوننا نستطيع ان نبدع بدون الحاجة لقواعد البيانات بشكل دائم , حيث يمكننا هذا الدرس من معرفة طريقة عمل البوم صور جميل ومنسق وديناميكي ويحوي اقسام فرعية ايضا بدون الحاجة لقاعدة بيانات لتخزين البيانات فيها ولعل هذه الخاصية هي الافضلية الاهم للبرمجية التي سنتحدث عنها , طبعا هذا الدرس للمستوى المتوسط بلغة البرمجة php .

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

    سأقوم بتقسيم الشرح الى 6 مراحل لتسهيل الفهم حيث سأضع الكود يليه الشرح الخاص به حيث تكون المراحل على النحو التالي :

    1- صفحة معرض الصور الرئيسية
    2- كود توليد مصغرات للصور بشكل جماعي
    3- دالة توليد المصغرات ( للعرض والاستعمال فقط بدون شرح )
    4- اقسام المعرض الفرعية ومحتواها
    5- عمل مسار الطريق الذي يتحكم بكامل المعرض
    6- كيفية استعمال معرض الصور

    نبدأ بسم الله

    1- صفحة معرض الصور الرئيسية :

    كود PHP:
    <?php
        
    //  This Code Wrote BY  : EbNCaNa | ebncana(@)ebncana.com

    // الاعدادات العامة

    $gallname ''// عنوان معرض الصور
    $gallurl 'http://localhost/MyWsGallery'// رابط المعرض الاساسي
    $galbd ''// اسم المجلد الذي يحوي معرض الصور
    $imggn ''// عدد الصور في كل سطر
    $th ''// ارتفاع الصورة المصغرة بالبكسل
    $tw ''// عرض الصورة المصغرة بالبكسل

    $dirn $_GET["dirn"];

    if(
    strpos($url,"?do=mthumb") !== false){
    $imt "?do=mthumb";
    }

    include(
    "gpath_funcs.php");

    $url selfURL();

    if(empty(
    $dirn)){

    $dir $galbd;

    echo 
    '<table border="0" cellpadding="2" align="center">
    <tr>'
    ;

    if (
    $handle opendir($dir)){
    while (
    false !== ($file readdir($handle))){
    $pt $dir."-".$file;
    $pt str_replace("/","-",$pt);
    if (
    $file != "." && $file != ".." && is_dir($dir.'/'.$file) === TRUE){
    $mtx = @file_get_contents("$dir/$file/main.txt");
    echo 
    '< td>
    <a href="gallery-'
    .$pt.'.html'.$imt.'"><img alt="'.$mtx.'" title="'.$mtx.'" src="'.$wslink.'/'.$dir.'/'.$file.'/thumb_main.jpg" width="'.$tw.'" height="'.$th.'" /></a>
    <br />
    '
    .$mtx.'
    </td>'
    ;
    $tablesTd++;
    if(
    $tablesTd == $imggn){
    echo 
    '</tr>
    <tr>'
    ;
    $tablesTd 0;
    }
    }
    }
    }
    echo 
    '</tr>
    </table>'
    ;
    }
    الشرح : في السطر 14 نقوم بجلب قيمة المتغير dirn عن طريق الدالة GET , في السطر 15 نفحص ما اذا كان الرابط الذي نتواجه فيه الآن يحوي mthumb فاذا كانت النتيجة ايجابية عندها نحمّل المتغير imt قيمة الشرط الذي قمنا باجرائه , في السطر 18 نقوم باستدعاء الصفحة gpath_funcs.php والتي سوف نضع فيها كود المرحلة الخامسة والي يتمثل بمسار الطريق الذي يتحكم بكامل معرض الصور والذي سنتكلم عنه لاحقا .

    في السطر 22 نقوم بفحص ما اذا كان المتغير dirn فارغ ام لا , والهدف هو تحديد ما اذا كنا برئيسية المعرض ام لا فاذا كان فارغ فنحن حاليا برئيسية المعرض وعليه يقوم الشرط باتخاذ الخطوات اللازمة لعرض البيانات في هذه المرحلة , في السطر 29 نقوم بالدخول لمجلد المعرض الاساسي عن طريق الدالة opendir ثم في السطر التالي نبدأ باستعمال حلقة التكرار while لقراءة محتويات المجلد واحد تلو الآخر , في السطر 31 و32 نقوم باعطاء المتغير pt مسار المجلد الذي يتم استخراجه حاليا من حلقة التكرار لكي يكون الرابط الذي يؤدي الى المجلد , لكن لن يتم عرض الملف الا بعد ان يتأكد البرنامج من انه مجلد وليس ملف عادي ( صورة مثلا ) ويتم التأكد عن طريق استعمل الدالة is_dir .

    لقد تكلمنا ان من خصائص هذا المعرض هو عده احتياجه لقواعد البيانات , وهنا قد يسأل البعد منكم , حسنا , كيف سنقوم بتسمية كل مجلد ؟ اي سنقوم بحفظ اسم المجلد باللغة العربية لكي يستطيع المستخدم تصفحه بسهولة ؟ يكون جواب هذا السؤال في السطر 34 حيث ان المتغير mtx يحمل قيمة قراءته للملف main.txt والذي يجب ان يكون بداخل كل مجلد من مجلدات الصور التي في معرض الصور , وبداخل هذا الملف قم بكتابة اسم المجلد وحفظه بالترميز UTF-8 ويتم جلب محتوى الملف عن طريق الدالة file_get_contents .

    الآن بعدما تأكدنا من اننا نتعامل مع مجلد وليس ملف , وبعد جلب اسم المجلد نقوم بطباعة صورة المجلد المصغرة واسفلها عنوان المجلد وعند الضغط عليها يتم الدخول الى محتوى المجلد , قد يسأل البعض عن طريقة ترتيب المجلدات في حالة احتواء المعرض على اكثر من مجلد , الجواب كالتالي : يقوم البرنامج بترتيب المجلدات بجانب بعضهم البعض , وانت لديك الصلاحية بوضع عدد المجلدات في كل سطر , وهذا الامر يمكن التحكم به من خلال الاعدادات العامة في اعلى الكود , مع كل مجلد يقوم البرنامج بطباعته يزداد عداد المتغير tablesTd , وهكذا فانه وعندما تصبح قيمة المتغير tablesTd مساوية لقيمة المتغير imggn فان البرنامج يبدأ بتعبئة المجلدات في سطر جديد وهكذا .

    2- كود توليد مصغرات للصور بشكل جماعي :
    كود PHP:
    else{

    $dir $dirn;

    if(
    strpos($url,"?do=mthumb") !== false){

    $i 0;
    $exten = array (".jpg",".gif",".jpeg",".JPEG",".JPG",".GIF",".png",".PNG");

    $dir str_replace("-","/",$dir);

    if (
    $handle opendir($dir)){

    while (
    false !== ($file readdir($handle))){
    $extenf strrchr($file ,'.');
    if (
    $file != "." && $file != ".." && $file != "index.php" && $file != "index.html" && $file != "Thumbs.db" && $file != ".ftpquota" &&  strpos($file,'thumb') === FALSE && in_array$extenf $exten)){
    if (!
    file_exists("$dir/thumb_$file")) {
    $i++;
    createthumb("$dir/$file",$extenf,"$dir/thumb_$file",$tw,$th);
    }
    }
    }
    }
    echo 
    "تم تكوين $i مصغرة جديدة في الالبوم";

    الشرح : في السطر 5 نتابع الجزء الثاني من الشرط الذي كان قد وضع في كود المرحلة الاولى في السطر 17 وهو يعني بالعربية (غير ذلك) بمعنى ان كل ما يكون بعد السطر 5 ولغاية اغلاق الشرط يتحقق اذا لم يتحقق الشرط سالف الذكر في المرحلة الاولى , في السطر 9 نتأكد من ان الرابط الذي نتواجه فيه الآن يحوي mthumb فاذا كانت النتيجة ايجابية عندها يبدأ بتشغيل كود توليد الصور المصغرة على شكل حلقة تكرار تبدأ كالعادة بالقيمة 0 والتي يحملها المتغير i في السطر 11 , في السطر 12 نقوم بتعريف مجموعة الامتدادات للصور المسموح عمل مصغرات لها , بعدها في 14 نقوم باستبدال المسافة العلوية (-) بالسلاش (/) بداخل الرابط الذي نتواجد فيه حاليا وسبب هذه العملية كوننا قمنا في المرحلة الاولى بعكس هذا الترتيب ووضع المسافة العلوية بدل السلاش لكي نرسل الرابط لهذا المجلد بالشكل المطلوب .

    في السطر 16 نقوم بالدخول لمجلد المعرض الاساسي عن طريق الدالة opendir ثم في السطر التالي نبدأ باستعمال حلقة التكرار while لقراءة محتويات المجلد واحد تلو الآخر , في السطر 19 نقوم باستعمال دالة strrchr والتي تبحث عن المرة الاخيرة التي تكررت فيها القيمة التي تم طلبها في الدالة وفي هذه الحالة القيمة هي النقطة (.) يوجد دوال اخرى تجد النقطة ولكن افضلية هذه الدالة انها تستخرج النقطة الاخيرة في حال كان لدينا اسم ملف يحوي بداخله نقطة غير النقطة الفاصلة بين اسم الملف وامتداده .

    في السطر 20 يضع البرنامج مجموعة شروط بحيث ان عدم مطابقة الملف لاي من هذه الشروط سوف لن يؤهله لاكمال المسيرة وعمل مصغرة , اخر شرط في السطر يفحص ما اذا كان امتداد الملف مسموح به لعمل المصغرة حيث يقارن امتداد الملف في حلقة التكرار بالامتدادات في المصفوفة التي تكلمنا عنها في السطر 12 , اما الشرط ما قبل الاخر فيفحص ما اذا كان الملف قد حصل مسبقا على مصغرة وبالتالي سيتحقق الشرط ولن يتم عمل مصغرة له .

    في السطر 21 نقوم بعمل فحص اخر يهدف الى التاكد من عدم وجود اي مصغرة للصورة التي سنقوم بعمل مصغرة لها وذلك باستعمال الدالة file_exists , اذا تحقق الشرط عندها ننتقل للسطر التالي والذي يبدأ بالازدياد كلما تحقق الشرط والهدف منه تعداد مجموع الصور التي سيقوم البرنامج بعمل مصغرات لها لاستعماله لاحقا في اظهار نتيجة هذا الاجراء .

    في السطر 23 يقوم البرنامج باستدعاء الدالة createthumb والتي نمرر لها بعض البارمترات الخاصة بالصورة التي سنقوم بتوليدها مثل الطول والارتفاع ومكان حفظها والامتداد الخاص بها وعندها تعالج الدالة هذه المعطيات وتولد لنا الصورة المطلوبة .
    في السطر 28 يطبع البرنامج نتيجة هذه العملية من خلال اعطاء عدد الصور التي تم عمل مصغرات لها .

    3- دالة توليد المصغرات ( اعتذر عن شرحها لانها تحتاج لدرس منفصل يتحدث عن مكتبة الرسومات GD ) :
    كود PHP:
    function createthumb($name,$ext,$filename,$new_w,$new_h){

    $ext strtolower($ext);

    if (
    preg_match("/jpg|jpeg/",$ext)){$src_img=imagecreatefromjpeg($name);}
    if (
    preg_match("/png/",$ext)){$src_img=imagecreatefrompng($name);}
    if (
    preg_match("/gif/",$ext)){$src_img=imagecreatefromgif($name);}

    $old_x=imageSX($src_img);
    $old_y=imageSY($src_img);

    $thumb_w=$new_w;
    $thumb_h=$new_h;

    $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
    imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);

    if (
    preg_match("/jpg|jpeg/",$ext)){imagejpeg($dst_img,$filename);}
    if (
    preg_match("/png/",$ext)){imagepng($dst_img,$filename);}
    if (
    preg_match("/gif/",$ext)){imagegif($dst_img,$filename);}

    imagedestroy($dst_img);
    imagedestroy($src_img);

    4- اقسام المعرض الفرعية ومحتواها :

    - اقسام المعرض الفرعية :
    كود PHP:
    // نتيجة هذا الكود سوف تظهر في نفس الصفحة ولذلك سنقسم الكود الى مرحلتين على النحو التالي :

    // مرحلة اظهار المجلدات الفرعية داخل المجلد الحالي اذا توفرت المجلدات

    $dir str_replace("-","/",$dir);

    echo
    '<table border="0" cellpadding="2" align="center">
    <tr>'
    ;

    if (
    $handle opendir($dir)){
    while (
    false !== ($file readdir($handle))){
    $pt $dir."-".$file;
    $pt str_replace("/","-",$pt);
    if (
    $file != "." && $file != ".." && is_dir($dir.'/'.$file) === TRUE){
    $hr '< hr>';
    $mtx file_get_contents("$dir/$file/main.txt");
    echo 
    '<td>
    <a href="gallery-'
    .$pt.'.html'.$imt.'"><img alt="'.$mtx.'" title="'.$mtx.'" src="'.$wslink.'/'.$dir.'/'.$file.'/thumb_main.jpg" width="'.$tw.'" height="'.$th.'" /></a>
    <br />
    '
    .$mtx.'
    </td>'
    ;
    $tablesTdfl++;
    if(
    $tablesTdfl == $imggn){
    echo 
    '</tr>
    <tr>'
    ;
    $tablesTdfl 0;
    }
    }
    }
    }
    echo 
    "</tr>
    </table>
    $hr"
    الشرح : شرح هذه المرحلة مشابه لحد كبير لشرح المرحلة الاولى حيث نفس المبدأ واختلاف اسماء بعض المتغيرات , للعودة لشرح المرحلة الاولى اضغط هنا .


    - محتوى الاقسام الفرعية :
    كود PHP:
    // مرحلة اظهار محتوى الاقسام الفرعية داخل المجلد الحالي

    echo'<table border="0" cellpadding="2" align="center">
    <tr>'
    ;

    $exten = array (".bmp",".BMP",".jpg",".gif",".jpeg",".JPEG",".JPG",".GIF",".png",".PNG");

    if (
    $handle opendir($dir)){
    while (
    false !== ($file readdir($handle))){
    $extenf strrchr($file ,'.');
    if (
    $file != "." && $file != ".." && $file != "index.php" && $file != "index.html" && $file != "main.jpg" && $file != "thumb_main.jpg" && $file != "Thumbs.db" && $file != ".ftpquota" && in_array$extenf $exten)){
    $mtx = @file_get_contents("$dir/main.txt");
    if (
    file_exists("$dir/thumb_$file")) {
    echo
    '<td>
    <br />
    <a href="$dir/$file"><img  src="'
    .$wslink.'/'.$dir.'/thumb_'.$file.'" alt="'.$mtx.'" title="'.$mtx.'" width="'.$tw.'" height="'.$th.'" /></a>
    </td>'
    ;
    $tablesTdfi++;
    if(
    $tablesTdfi == $imggn){
    echo 
    '</tr>
    <tr>'
    ;
    $tablesTdfi 0;
    }
    }
    }
    }
    }
    echo 
    '</tr>
    </table>'
    ;


    الشرح : في السطر 7 نقوم بطباعة بداية وسم table والذي سيحوي بداخله حلقة تكرار للصور بداخل القسم الفرعي الحالي , في السطر 10 نقوم بتعريف مجموعة الامتدادات للصور المسموح استعراضها داخل المعرض , بعدها في السطر 12 نقوم بالدخول لمجلد المعرض الحالي عن طريق الدالة opendir ثم في السطر التالي نبدأ باستعمال حلقة التكرار while لقراءة محتويات المجلد واحد تلو الآخر , في السطر 14 نقوم باستعمال دالة strrchr والتي تبحث عن المرة الاخيرة التي تكررت فيها القيمة التي تم طلبها في الدالة وفي هذه الحالة القيمة هي النقطة (.) يوجد دوال اخرى تجد النقطة ولكن افضلية هذه الدالة انها تستخرج النقطة الاخيرة في حال كان لدينا اسم ملف يحوي بداخله نقطة غير النقطة الفاصلة بين اسم الملف وامتداده .

    في السطر 15 يضع البرنامج مجموعة شروط بحيث ان عدم مطابقة الملف لاي من هذه الشروط سوف لن يؤهله لاكمال المسيرة وبالتالي عرضه للزائر , اخر شرط في السطر يفحص ما اذا كان امتداد الملف مسموح به للعرض حيث يقارن امتداد الملف في حلقة التكرار بالامتدادات في المصفوفة التي تكلمنا عنها في السطر 10 ,في السطر 17 نقوم بالتاكد من وجود مصغرة للصورة التي سنقوم بعرضها لان عدم وجود مصغرة له سوف لا يمكننا من عرضها لان عرضها سيكون بواسطة مصغرتها , وهذه العملية تتم باستعمال الدالة file_exists .

    الآن بعدما تأكدنا من اننا نتعامل مع صورة متماشية مع الشروط , وبعد جلب اسم الصورة نقوم بطباعتها وعند الضغط عليها يتم استعراضها بشكل كامل , قد يسأل البعض عن طريقة ترتيب الصور في حالة كان يحوي القسم الفرعي الحالي اكثر من صورة , الجواب كالتالي : يقوم البرنامج بترتيب الصور بجانب بعضهم البعض , وانت لديك الصلاحية بوضع عدد الصور في كل سطر , وهذا الامر يمكن التحكم به من خلال الاعدادات العامة في اعلى الكود , مع كل صورة يقوم البرنامج بطباعتها يزداد عداد المتغير tablesTdfi , وهكذا فانه وعندما تصبح قيمة المتغير tablesTdfi مساوية لقيمة المتغير imggn فان البرنامج يبدأ بتعبئة الصور في سطر جديد وهكذا .

    في السطر 35 نهاية الحالة else التي قد بدأت في السطر رقم 5 في الكود المصاحب للمرحلة 2 .

    5- عمل مسار الطريق الذي يتحكم بكامل المعرض :
    كود PHP:
    echo "<a href='$gallurl/'>$gallname</a> <span>></span> ";

    if(empty(
    $dirs)){
    echo 
    'رئيسية المعرض';
    }else{
    echo
    "<a href='$gallurl/gallery.html$imt'>رئيسية المعرض <span>> </span>";
    $parts explode("/",$dirs);
    $partsnum count($parts);

    for(
    $i=1;$i<$partsnum;$i++){
    if(
    $parts[$i] != "images"

    $partsn count($parts)-1;
    $last $parts[$partsn];
    $partsb explode($parts[$i],$dirs);

    if(
    $parts[$i] == $last){
    readfile("$gallurl/$partsb[0]$parts[$i]/main.txt");
    }else{
    $partsb[0] = str_replace("/","-",$partsb[0]);
    echo 
    "<a href='$gallurl/gallery-$partsb[0]$parts[$i].html$imt'>";
    $partsb[0] = str_replace("-","/",$partsb[0]);
    readfile("$gallurl/$partsb[0]$parts[$i]/main.txt");
    echo
    ' <span style="color:#ff0000;">> </span></a>';
    }
    }
    }

    الشرح : في السطر 5 قوم باستبدال المسافة العلوية (-) بالسلاش (/) بداخل مسار المجلد الذي نتواجد فيه حاليا لكي يستطيع البرنامج استعماله كرابط لاستخراج البيانات المطلوبة , في السطر 7 نبدأ بطباعة القسم الرئيسي في مسار الطريق الخاص بالمعرض والذي يحوي عنوان معرض الصور , في السطر 8 يقوم البرنامج بفحص المتغير dirs , فاذا كان فارغا فهذا يعني اننا في رئيسية المعرض واذا لم يكن فارغا فسوف ينتقل البرنامج لتطبيق القسم الآخر من الشرط في السطر 12 والذي يعنى بطباعة القسم الثاني من مسار الطريق وهو ” رئيسية المعرض ” , في السطر 14 نقوم باستعمال الدالة explode لتقسيم المتغير dirs بواسطة السلاش (/) وفي السطر التالي نستعمل الدالة count لتعداد الاقسام المستخرجة في السطر 14 حيث ان العدد الناتج يمثل عدد المجلدات الفرعية لحد الآن وهو العدد الذي سنستخدمه في السطر 16 حيث يكون الركيزة الاساسية لحلقة التكرار while في السطر ذاته , الهدف من هذه الحلقة هو المرور على كل مجلد من مجلدات الاقسام الفرعية التي مررنا بها لحد الان لاستخراج اسمائها وروابطها لكي نستطيع ان نضع المسار الملائم لطريقنا , في السطر 17 نضع الشرط الرئيسي لاستخراج نتائج هذه الحلقة وهو ان لا يكون اسم المجلد images لانه المجلد الذي يحوي كامل البوم الصور , هذا يعني باننا نقول للبرنامج بان يجب عليها استخراج جميع بيانات المجلدات التي يمر بها ما عاد المجلد images , في السطر 19 والسطر 20 نقوم بجلب اسم المجلد الفرعي الاخير في مسار الطريق لان رسم معالم طريق معينة يحتاج لمعرفة بداية ونهاية الطريق , في السطر 21 نقوم بتقسيم المتغير dirs والذي يحوي مسار المجلدات بالترتيب نقوم بتقسيمه بواسطة اسم المجلد الحالي والهدف هو جلب اسم المجلد المخزن في الملف main.txt ورابط المجلد , لا يجب ان ننسى اننا حاليا في حلقة تكرار بمعنى ان هذه الحلقة ستمر خلال اجزاء من الثانية على جميع المجلدات في الرابط وجلب بياناتها واحد تلو الاخر , في السطر 23 نقوم بمقارنة اسم المجلد الحالي بقيمة المتغير last في السطر 20 والذي كما قلنا يحمل قيمة اسم المجلد الاخير في مسار , فاذا تحقق الشطر فاننا حاليا في آخر المسار وعليه فان البرنامج يطبع اسم القسم في مسار الطريق بدون رابط , اذا لما يتحقق الشرط يكمل البرنامج عمله ببناء مسار الطريق , في السطر 26 يحمل المتغير partsb[0] قيمة القسم الاول من المتغير dirs والذي قمنا بتقسيمه في السطر 21 حيث نقوم باستبدال السلاشات الموجودة في هذا القسم من المتغير بالمسافة العلوية (-) لكي نطبع رابط هذا القسم في السطر الذي يليه , فس السطر 28 نقوم بعكس العملية من جديد باستبدال المسافات العلوية في هذا القسم من المتغير بالسلاش (/) وهذه العملية لتسخير الرابط الناتج في استجلاب اسم القسم من ملف main.txt الخاص به , وهكذا فان هذه الدورة من حلقة التكرار استخرجت لنا القسم الاول من المسار , في الحلقة التالية سيقوم البرنامج بعمل نفس العملية مع القسم الثاني وطباعته بعد القسم الاول وهكذا تستمر العملية لحين اكتمال كامل مسار الطريق لقسم الصور الفرعية الذي نتواجد فيه حاليا ضمن معرض الصور .

    شروط ملف htaccess. التي ستفعل روابط المعرض :
    كود PHP:
    RewriteEngine on   
    RewriteRule 
    ^gallery.htmlindex.php  
    RewriteRule 
    ^gallery.html(.*)$ index.php?do=$1  
    RewriteRule 
    ^gallery-(.*).html(.*)$ index.php?dirn=$1&do=$

    كيفية استعمال معرض الصور :


    1- تقوم بترتيب جميع مجلدات الصور داخل جهازك ووضع المجلدات الفرعية داخل المجلدات الرئيسية وبالكمية التي تحتاجها .

    2- تقوم بمراجعة اسماء الصور للتأكد من ان اسمائها كتبت بالانجليزية وبدون مسافات لضمان عدم حدوث مشاكل في الترميز .

    3- تقوم بعمل ملف نصي في كل مجلد تقوم بتسميته main.txt وفيه اكتب اسم المجلد الفرعي واحفظ الملف بالترميز UTF-8 , طبعا هذا الامر لا يسري على مجلد الصور الرئيسية صاحب الاسم images .

    4- تقوم باختيار صورة مصغرة لكل مجلد فرعي والتي تريد ان تظهر كصورة المجلد الرئيسية قبل الدخول اليه , تدخل الصورة للمجلد المذكور وتقوم بتسميتها main.jpg بشرط ان تكون بامتداد jpg بالطبع .

    5- واخيرا تقوم بطلب الرابط التالي : http://www.xxx.x/MyWsGallery/gallery.html?do=mthumb وتتجول في المعرض بشكل عادي ولكن اثناء التجول يقوم البرنامج بفحص كل الصور وبداخل كل المجلدات التي تزورها واذا لم يكن مصغرة للصورة فان البرنامج سيقوم بعمل المصغرة لها على الفور .

    ————————————————————————–

    - المصدر الاساسي لهذا الدرس هو مدونة ابن قانا www.ebncana.com

    - لمشاهدة مثال حي لمعرض الصور MyWsGallery اضغط هنا

    - لتحميل الكود كاملا بملف مضغوط : اضغط هنا

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

    الى اللقاء في درس آخر .

    باحترام : اخوكم EbNCaNa





    __________________
    EbNCaNa اخوكم ابن قانا

    [درس] قائمة بريدية بأسهل الطرق بواسطة PHP

    [توقيعك يجب أن لا يكون أطول من 400 حرف يتضمن تجاوز كود المنتدى] - الى متى المعاناة يا حضرة الأدارة ؟


  2. #2
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    بارك الله فيك اخي وابن بلدي
    السكربت رائع جدًا اذا كنا نريد استعماله كإضافة لموقع، فهو لا يحتاج لتنصيب او اي معاملة خاصة


    لدي بعض الملاحظات حول عمل السكربت:

    بالنسبة لفحص لواحق الملفات يمكن استعمال الدالة:
    pathinfo
    http://php.net/manual/en/function.pathinfo.php

    كالتالي:

    كود PHP:
    $info pathinfo($file);
    echo 
    $info['extension']; 
    او ببساطة:
    كود PHP:
      $extension pathinfo($filePATHINFO_EXTENSION); 
    وبدلا من وضع اللواحق باحرف كبيرة وصغيرة يمكن فحص الاحرف الصغيرة فقط
    عن طريق:

    كود PHP:
     $extension strtolower(pathinfo($filePATHINFO_EXTENSION)); 
    ببساطة نوحد طريقة الفحص

    بالنسبة للمرور على الملفات التي في المجلد، يمكن استعمال directory iterator
    الموجودة في php5 فقط(طريقتك ممتازة ايضًا -لأنها تعمل على كل الاصدارات)
    http://php.net/manual/en/class.directoryiterator.php






  3. #3
    عضو نشيط جدا
    تاريخ التسجيل
    May 2007
    المشاركات
    509


    حياك الله اخوي احمد صادق , بخصوص الملاحظة الاولى بارك الله فيك , اعتقد ان استعمال strtolower اكثر نجاعة من مقارنة الامتدادات مرتين وهذا بالتالي يوفر وقت اكثر لكن انا قمت بالتنويع , ففي دالة عمل المصغرات اخذت هذه العملية بعين الاعتبار نظرا لاهمية الوقت اللازم لعمل المصغرة .

    بخصوص الملاحظة الثانية وكأنك تقرأ افكاري , هناك الكثير من الاخوة ممن لم يبدأ باستعمال php5 او ان استضافاتهم لحد الان لا تدعمها , لذلك لم استعمل DirectoryIterator .

    مرة اخرى اشكرك اخي على الملاحظات القيمة وكما انوه دائما للاخوة , دروسي بشكل عام تتسم بالتفصيل الممل لهدف التعليم اكثر من كونها للاستعمال , لكي ننتقل من كوننا متلقين سلببين لمنتجين ومبدعين , وعليه فانني قمت بوضع النواة للفكرة ويمكن التعديل او التطوير بما يتناسب مع حاجة الاخ المستخدم .


    الى الامام عزيزي





    التعديل الأخير تم بواسطة EbNCaNa ; 21-10-2010 الساعة 07:03 PM
    __________________
    EbNCaNa اخوكم ابن قانا

    [درس] قائمة بريدية بأسهل الطرق بواسطة PHP

    [توقيعك يجب أن لا يكون أطول من 400 حرف يتضمن تجاوز كود المنتدى] - الى متى المعاناة يا حضرة الأدارة ؟

  4. #4
    عضو نشيط
    تاريخ التسجيل
    Apr 2010
    المشاركات
    48


    بارك الله فيك تستاهل كل خير





    __________________
    العملاق يبقى عملاق

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


    طريقه جيده فعلاّ لعمل جاليري صور بدون قاعده بيانات





    __________________


    " ليس من شيمى السكوت عن الأخطاء .. لكن الأسود لا ترد على الكلاب "
    -إن الطريق مظلم وحالك، فإذا لم تحترق أنت وأنا فمن سينير الطريق
    Strength Throgh Unity ,Unity Through Faith





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

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

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