يمكنك الاستغناء عن محركات القوالب

php البي اتش بي, دروس برمجية, محرك القوالب أضف تعليق

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

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

لنفرض اننا نريد استخراج معلومات من جدول الأعضاء
ولدينا الجدول بهذه الطريقة
user_id رقم العضو
user_name اسم الدخول
user_email البريد الالكتروني
user_active صفر يعني غير مفعل و واحد يعني مفعل

ملف users.php

PHP:
  1. include('config.php'); // ملف الاتصال بالقاعدة
  2. // سنقوم بجلب اخر عشرة اعضاء
  3. $sql=mysql_query("select * from users order by user_id desc limit 10 ");
  4. while( $row=mysql_fetch_array($sql) ){
  5. $data[]=$row; // سيتم حفظ جميع البيانات في مصفوفة
  6. }
  7. // نقوم بجلب ملف التصميم وطباعته
  8. // الملف موجود داخل مجلد templates
  9. include('templates/users.html');
  10. mysql_free_result($sql); // مسحه من الذاكرة
  11. unset($data); // مسحه من الذاكرة

ملف users.html

PHP:
  1. <div id="users">
  2. <table style="background:#CEC2C2" border="0" cellspacing="1" cellpadding="1" width="100%">
  3.  <tbody>
  4. <tr style="background:#6DB568">
  5. <td>رقم العضو</td>
  6. <td>اسم الدخول</td>
  7. <td>البريد الالكتروني</td>
  8. <td>الحالة</td>
  9. </tr>
  10.  
  11. <!-- بداية عرض البيانات-->
  12. <?php foreach( $data as $field){ ?>
  13. <tr style="background:#CEC2DD">
  14. <td><?= $field['id']; ?></td>
  15. <td><?= $field['name']; ?></td>
  16. <td><?= $field['email']; ?></td>
  17. <td><?= $field['status']; ?></td>
  18. </tr>
  19. <?php } ?>
  20. <!-- نهاية العرض--></tbody></table>
  21. </div>

ولكن عند طباعة قيمة حقل الحالة active يتم طباعة اما صفر او واحد
سنقوم بعمل شرط صغير اذا كان الحقل قيمته صفر سيطبع غير نشيط واذا كان واحد سنطبع نشيط
ويكون هكذا

سنستبدل هذا السطر

PHP:

بهذا

PHP:
  1. if( $user['user_active'] == 0 ){
  2. echo 'غير نشيط';
  3. }else{
  4. echo 'نشيط';
  5. }
  6. ?&gt;

كما يمكنك عمل اي شيئ داخل ملف التصميم المهم ان يكون ملف php بدون اكواد التصميم

يمكن انشاء دالة لجلب ملفات التصميم مثلا
ويتم حفظها في ملف اسمه مثلا functions.php

PHP:
  1. function load_template($template){
  2. $folder='templates/'; // مجلد يتم وضع فيه ملفات القوالب
  3. if( file_exists($folder.$template) ){
  4. include($folder.$template);
  5. }else{
  6. echo 'ملف التصميم غير موجود
  7. ';
  8. echo $template;
  9. }
  10. }

ويصبح الملف هكذا

PHP:
  1. include('config.php'); // ملف الاتصال بالقاعدة
  2. include('functions.php'); // ملف الدوال
  3. // سنقوم بجلب اخر عشرة اعضاء
  4. $sql=mysql_query("select * from users order by user_id desc limit 10 ");
  5. while( $row=mysql_fetch_array($sql) ){
  6. $data[]=$row; // سيتم حفظ جميع البيانات في مصفوفة
  7. }
  8. // نقوم بجلب ملف التصميم وطباعته
  9. load_template('users.html');
  10. mysql_free_result($sql); // مسحه من الذاكرة
  11. unset($data); // مسحه من الذاكرة

هذا فان اخطأت فمن نفسي والشيطان وان اصبت فمن الله عز وجل
وصلي اللهم على محمد واله وصحبه اجمعين

12 عدد التعليقات على “يمكنك الاستغناء عن محركات القوالب”

  1. RuleBreaker يعلق:

    السلام عليكم و رحمه الله و بركاته
    اسمحلى انحنى لك تقدير و احتراما على الدرس الجميل
    الصراحه انا نفسى اتعلم نظام كويس لفصل التصميم عن البرمجه
    ياريت لو تقدر تفدنا اكتر

  2. عبد الواحد البشيري يعلق:

    عليكم السلام ورحمة الله وبركاته
    لا ياخي الانحناء لله وحده
    وبارك الله فيك
    بالنسبة لنظام القوالب يوجد الكثير من الدروس من بينها
    منتدى بي اتش بي
    http://www.montadaphp.net
    وقم بزيارة قسم smarty
    وانا في هذا الدرس شرحت كيفية التعامل مع البرمجة بدون محرك قوالب

  3. Abdallh يعلق:

    اشكرك على هذا الشرح الممميز والواضح وان شاء الله نتعلم الـ php على ايدك يا استاذ

  4. mnabhan يعلق:

    اخى عبد الواحد اشكرك على الشرح ولكن فى استفسار عندى ازاى هيتم طبع النتيائج من قاعد البيانات فى ملف التصميم htm ؟ انا شايف انك مش واضع اى شيئ لطباعة المصفوفة data[] ,,,,,

  5. عبد الواحد البشيري يعلق:

    شوف الأن ملف users.html وستعرف كيف تطبع النتائج
    اقصد في الدرس فوق

  6. Mohamed يعلق:

    10 على 10 بجد أستاذ

    انا كنت بفكر اعمل حاجة بالشكل ده عشان ارتاح من فتح ملف البرمجة كل شوية عشان اغير حاجة مش عاجبانى بس كنت متعقد من تكرار while مكنتش متخيل انه ممكن اعملها كده.

    كنت بقول لازم اتعلم سمارتى عشان اعمل حاجه زى كده , انت حمستنى انى اجرب اغير نظام شغلى.

    جزاكم الله خيراً على الدرس الرائع نفعنا الله بك اخى العزيز

  7. marocs يعلق:

    الله يعطيك الصحة , شرح ممتاز

    عندي استفسار , شنو فائدة كود المسح ؟

    #
    mysql_free_result($sql); // مسحه من الذاكرة
    #
    unset($data);

  8. عبد الواحد البشيري يعلق:

    عندما يتم تعريف متغير او استعلام بيانات من القاعدة فان ذلك يخزن في الذاكرة اقصد ذاكرة السرفر

    وماذا لو كان هناك 100 زائر في الوقت نفسه كيف ستكون الذاكرة ؟

    ولهذا ينصح افراغ الذاكرة بعد انتهاء عمل المتغير او الاستعلام وبهذا يكون برنامجنا خفيف وهذا من مميزات المبرمج المحترف وهو انه يفكر ان يكون دائما برنامجه خفيف

  9. غير معروف يعلق:

    [...] [...]

  10. محمد الشرقاوي يعلق:

    السلام عليكم
    ممتاز جدا

  11. dr-mosta يعلق:

    السلام عليكم الله يعطيك العافية ويوفقك ان شاء الله

  12. ZizwaR يعلق:

    Merci c’est un tres bon cour

أضف تعليق.

مدونة مبرمج مغربي © 2010 WP Theme & Icons by N.Design Studio | b4udecide | تعريب قياسي
التدويناتRSS | التعليقاتRSS | تسجيل الدخول