درس عمل loop في نظام ذكي Smarty







بعد سلام عليكم و رحمة الله تعلي و بركاته..اليوم حضرت لكم طريقة مهمة و هي حركة while كيف عملها داخل نظام الذكي Smarty و هي سهلة جدا و ليست صعبة كما ظننتها أنا أولا قبل تتبعك للموضوع يجب أن تكون لديك ذراية قليلة في نظام smarty لأن لن أشرحه من صفر.. لكن في ما بعد ممكن نتفاعل في دورة جميعا لبرمجة سكربت ما و يبقي أهم هو تعمل و ليس ما ننتج طبعا نبدأ علي بركجة الله أولا : أنت بدون شك محضر نظامك و ملفات و جايب ملف الاهم في سنارتي libs داخل ملفك الرئيسي مثلا اسمه smart ستضعه فيه ما قلناه اخيرا و ستنشأ ملفين الأول سميه كما أردت وسيكون خاص بنلفات التصميم و ثاني سميه أيضا كما تشاء و سيكون خاص بكاش بعد تسمية الملفات المذكورة سوف نذهب لنعدل علي ملف داخل ملف libs وهو ملف Smarty.class.php لكي يتماشي مع ملفاتنا التي أضفناها وبضبط في سطر 75 سنعدل علي اسم الملف الذي قلنا أنه خاص بتصميم أتمني أن تتذكروا اسمه هههه grin و بعد ذللك نذهب الي سطر بضبط 82 و نعدل بذببك اسم الكاش الذي اخترتموه أنتم بعد كل ذللك نرجع الي مجلد الرئيسي.. ونعمل ملف config.php وسنتدعي فيه الملفات التالية كما سنعمل فيه اتصال بقاعدة تفضلوا

رمز PHP:
<?php require_once("libs/Smarty.class.php"); $new = new Smarty(); $connect mysql_connect("localhost","usernamehost","passwordof host") or die(mysql_error()); $selectdb mysql_select_db("namedb",$connect); ?>

وضعنا متغير من اختيارينا وهو $new ووضعنا قيمته هي class الذي يوجد أصلا في نظام سمارتي وهو Smarty انتبهوا لابد أن تكون حرف أو كبير اظن كل شيء و اسماء تدل علي ذللك.. لا تنسوا أن تغيروها الي أنسب usernamehost = اسم مستخدم لسرفر و غالبا ما يكون في سرفر المحلي هو root passwordof host = كلمة خاصة بسرفر المحلي أما في سطر الأخير ما عليكم سوي تغيير namedb = باسم قاعدة البيانات الضافة التي تتوفرون عليها أظن كل شيء مفهوم الحمد الله..و اي شيء بس أوقفوني و ان شاء الله أكون في خدمة الان سننتقل الي استدعاء هذا الملف الذي أضفناه في ملف مجلد الرئيسي باسف index.php ليكون هكذا :

رمز PHP:
<?php
require("config.php");
?>

لحد الان كل شيء مفهوم بحول الله.. الان سنننتقل الي موضوعنا كل هذه المعمهات و لم ندخل في درسنا بعد هههههه أولا سنضع اسف اتدعاء السابق الذي عملناه في ملف index.php استعلام لجلب حقول و جداول المراد همل لها تكرار سيكون استعلام كأتي و سيكون بجدوال و حقول وهمية أنت ما عليك الي تحويلها الي جدوال صحيحة لديك لأن اذا دخلت اشرح في أمور اضافة جداول وغيرها سنخرج من موضوع كثيرا و سنسبح في بحر اخر لذا خلينا بحرنا أحسن pirate هذا هو كود و سوف أشرحه بتفصيل الممل لاذن الله

رمز PHP:
$sql_contact mysql_query("SELECT * FROM contact"); while($row_contact mysql_fetch_array($sql_contact)) { $contact2[] = $row_contact; } 

حسنا أولا وضعنا متغير من اختيارنا وهو $sql_contact يمكن له ان تغير الي ما تريد المهم أسندنا له قيمة وهي لجلب حقول لعرضها في ما بعد بدون أن الاستعلام واضح جدا اذا لم تفهم أنصحك أخي بمراجعة دروس للمبتدئين في جلب الحقول و غيرها... ما عليك سوف أن تغيير جدول contact الي ما يناسبك أنت..اختر ليريحك بشرط أن يكون عندك في قاعدة طيب الان في سطر الثاني عملنا حلقة while الكل يعرفها لتكرار وفتحنا أقواس ووسط الأقواس أي في سطر 4 وضعنا متغير مصفوفة من اختيارنا سميه اللي يريحك شريطة تعقل عليه لأننا سوف نحتاجه عند انتقال لعرضع في قالب حسنا .. عملنا له أنه يساوي حلت التكرار التي اسمها $rowcontact طيب أتمني كولشي فهم يا رب ..طيب ننتقل الان الي مرحلة اتية - الان سنضع ملئ لمتغير عن طريق سمارتي المرجو انتباه.. مباشرة بعد لي سبق نكتب هذا الكلام وسوف نشرحه كل شيء باذن الله

رمز PHP:
$new->assign('contact',$contact2); 

وضعنا متغير $new بطبيعةالحال نعرفه لأننا استدعناه في ملف config.php وهو لتعريف كلاس smarty حسنا ووضعنا له assign وهي في سمارتي لملئ البرمتر الأول من دالة بالبرمتر الثاني وبرمتر الثاني نعرق قيمته و هي معلومة و ليست بمجهولة و هي التي وضعهناها داخل while اجعو للكود وشوف $contact2 ماذا تساوي واضحة..أما برامتر الأول فهو اختياري يمكن اختيار ما تشاء لكن عقل عليه لأننا سوف نستعمله في نظام تصميم لعمل loop داخل ملف تصميم حسنا ننتقل الان سوف نعمل ملف جديد داخل مجلد الذي سميناه templates و سنسميه ب home.tpl و .tpl هو خاص بنظام قوالب فقط امتداد لا غير حسنا سيتوفر داخل ملف الذي أنشاناه الكود التالي وهو بسيط جدا و خالي من اي تعقيدات..تفضلوا

رمز PHP:
<table border="1" width=100%> <tr> <td>object of messsage</td> </tr> <tr> <td>message</td> </tr> </table

وهنا سوف يبدأ العمل لعمل حلقة تكرار للجدول ككلل أولا أنا قصدت ب object of messsage عنوان الرسالة و message أي محتوي رسالة..حسنا فكرا معا يعني ننحن لو أردنا أن نعمل تكرار بطريقة عادية ب php سوف نبدأ loop قبل وسف البداية للجدول أي

رمز PHP:
<table .. 

ووننهي حلقة في اخر وسم وهو :

رمز PHP:
</table

خلاص هذا يعني اننا فهما فكرة بشكل بسيط لكن في نظام قوالب بدل أن نضع while علي هذا الشكل

رمز PHP:
while()
{


سنضعها بشكل نظام قوالب لا غير وسنمسح whiel التي عملناها و سنعمل مكانها هذه

رمز PHP:
{section name="" loop=""}

{/
section

حسنا هيا نشرح كود الذي عملته لو دققت ستر علي أن له نفس الدور أي أنا وايل لها نهاية و أيضا هذه وايل للإعلان عن نهايتها نضع

رمز PHP:

اما في هذه نضع فقط

رمز PHP:
{/section

اظنها مفهومة الان ما عمل الان سنضيف ما قلناه الي ملف home.tpl حسنا تفضلوا

رمز PHP:
{section name="text" loop="$contact"} <table border="1" width=100%> <tr> <td>object of messsage</td> </tr> <tr> <td>message</td> </tr> </table> </div> {/section}

حسنا لحد الان كل شيء مفهوم.. لاحظتم أني لم اشرح بعد كلمات في سطر الأول سأشرحها الان بحول الله هناك :

رمز PHP:
name="text" 

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

رمز PHP:
loop ="$contact" 

فنضعه لها القيمة التي وضعناه في index.php وهي :

رمز PHP:
$new->assign('contact',$contact2); 

وهي التي في برامتر الأول فقط أضفنا $ عليها الان كل شيء تماام لحد الان وصلنا الي :

رمز PHP:
{section name="text" loop="$contact"} <table border="1" width=100%> <tr> <td>object of messsage</td> </tr> <tr> <td>message</td> </tr> </table> </div> {/section}

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

رمز PHP:
{$contact[text].con_name

لنشرحح أولا نضع {} وبعدها نضع المتغيير الذي وضعناه قيمة ل loop عند بدابة حلقة و في وسطه بين [] وضعنا قيمة name التي وضعناها من اختيارنا وبعد ذللك وضعنا . ثم نضع اسم حقل المراد عرضع مثلا كما قنا أنا سوف أعرض عنوان رسالة و انا عتد خقل اسمه title لعنوان الرسالة اذن سأضع .title بعد [text] أظنه مفهوم وواضح وضوح شمس سنضعه مكان كتابة التي لدينا وهي

رمز PHP:
object of messsage 

ليصبح بهذا الشكل

رمز PHP:
{section name="text" loop="$contact"} <table border="1" width=100%> <tr> <td>{$contact[text].title}</td> </tr> <tr> <td>message</td> </tr> </table> </div> {/section}

الان سنضيف ايضا محتوي راسلة و سنغبر كلمة message بنفس الذي كتبناه سابقا فقط سنغير اسم حقل الي اسم حقل الدي يحتوي علي محتوي لعرضع واسمه هو content اي سيصبح هكذا :

رمز PHP:
{section name="text" loop="$contact"} <table border="1" width=100%> <tr> <td>{$contact[text].title}</td> </tr> <tr> <td>{$contact[text].content}</td> </tr> </table> </div> {/section}

و الان انتهينا من حركة تكرار بنجاح تام ما بقية لنا سوي عرض ملف home.tpl في رئيسية اخيرا نذهب الي رئيسية وفي اخر ملف نضع الكود :

رمز PHP:
$new->display("home.tpl"); 
وهو واضح لعرض ملف معين و يمكنك استعراض الان ملف index.php بشكل عادي و ستلاحظ عمل الذي عملناه و حلقة التكرار الرائعة الي هنا سلام عليكم و رحمة الله تعالي و بركاته... هذا الدرس اهداء لأحب الناس الي نفسي و أتمني للجميع التوفيق وهو حصري لي و دروس التي أعتز بها و أطول في مسيراتي كما أتمني أني كنت وضحت فيه أشياء غامضة وأي اسنفسار أو ملاحظة أنا معكم انتهي الدرس

http://www.traidnt.net/vb/showthread.php?t=1758544