We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 3026
    • 189 Posts
    [right]
    در قسمت قبل ياد گرفتيم که چطور يک ماژول خيلي ساده بسازيم و قالب آن را مشابه قالب مديريت کنيم
    در اين قسنت ياد ميگيريم که چطور توابعي را به ماژول خود اضافه کنيم
    مهمترين بخش در اين قسمت اضافه کردن يک جدول به بانک اطلاعاتي است
    براي اين کار دستورات ساخت يک جدول با تعدادي فيلد در زير آمده
    CREATE TABLE `beginner` (
      `beginners_id` int(11) NOT NULL auto_increment,
      `beginners_list` varchar(20) NOT NULL default '',
      `beginners_name` varchar(255) NOT NULL default '',
      `beginners_fam` varchar(255) NOT NULL default '',
        PRIMARY KEY  (`beginners_id`)
    );
    

    حالا براي اينکه جدول مورد نظر را بسازيم بايد به نحوه زير عمل کنيم
    توجه کنيد که اين جدول بايد در بانک اطلاعاتي که مد ايکس که در مراحل نصب به برنامه معرفي شده
    ايجاد گردد تا به راحتي ماژول ما با آن ارتباط برقرار کند البته مي شود از بانک اطلاعاتي ديگري نيز استفاده کرد که بعدأ توضيح مي دهم
    دو را براي اجاد اين جدول وجود دارد
    sql1نوشتن اين دستورات در يک فايل
    لحاظ کنيم import در اينصورت بايد بعد از باز کردن بانک اطلاعات مد ايکس اين فايل را بوسيله سربرگ
    PhpMyAdmin2کپي کردن دستورات در
    لحاظ کنيم Sql در اينصورت بايد بعد از باز کردن بانک اطلاعات مد ايکس دستورات را در سربرگ

    بعد از اينکه جدول دلخواه خود را در بانک اطلاعاتي ساختيم نوبت به انجام اعمال مختلف روي آنها مي رسد:
    استفاده کردن توابع به وسيله آژاکس:
    در اين قسمت قصد داريم دو عمل را بر روي بانک اطلاعاتي خود انجام دهيم اول از همه جستجو و سپس مرور جدول خود
    همانطور که در بالا ديد دومين فيلد ما در جدول نام مي باشد حالا ما با ايجاد يک منوي کشويي مي خواهيم نامي را انتخاب کنيم تا باقي اطلاعات آن را مشاهده کنيم
    کد ما مي تواند به صورت زير باشد
    <?php 
      $query = "SELECT DISTINCT beginners_list FROM beginner";
      $result = $modx->db->query($query);
      if($result) {
        while($row = $modx->db->getRow($result)) {
          echo '<option value="'.$row['list_user'].'">'.
                ucfirst($row['beginners_list ']).'</option>';
        }
      }
    ?>
    

    فکر ميکنم که خود کد به اندازه کافي گويا باشد ولي بهتر است که برای درک بهتر کمی پی اچ پی/آژاکس بلد باشید :
    کلأ اين کد به اين معني است که داخل فيلد دوم از جدول ما بگرد و در جايي که سطري فيلد دوم آن داراي ارزش بود مقدار فيلد دوم را به منوي ما برگردان.
    پس ليست ديناميکي به صورت زير خواهيم داشت



    حالا وقت آن رسيده که کمي به آژاکس بپردازيم

    در اين قسمت من از کلاس آداپتور آژاکس براي بارگزاري نتيجه درخواست در يک صفحه استفاده ميکنم
    function loadDatabase() {
    	var url = '../assets/modules/database/load.php';
    	var pars = 'user=' + $F(userSelect);
    	var myAjax = new Ajax.Updater( 'ajaxContainer', url, 
                         { method: 'get', parameters: pars }); 
    }
    


    نکته اصلي در اينجا تفسير سه پارامتر موجود در تابع بالا است
    container پارامتر اول:اين پارامتر شماره ظرف است
    توليد شده و ارزش آن با مقدار "ajaxContainer"اين شماره بايد به روز رساني شود اين شماره که توسط
    بازگشتي ارسال شده توسط آژاکس که در مثال ما يک رشته است عوض مي شود

    است این آدرسی به اسکریپت سرور می باشد که وظیفه آن پردازش درخواست و بازگرداندن رشته است(url)پارامتردوم : مسیر

    باشد get,post پارامتر سوم: این پارامتر را می توان در چند بخش پیدا کرد روش برای دریافت می تواند
    این متد مشابه همان متدی است که در دریافت فرمها استفاده می شود
    پس نتیجه میگیریم که پارمتر ما همانی است که به یکی از متد های گفته شده انتقال پیدا کرده
    اما دوستانی که با آژاکس/پی اچ پی اشنا هستند متوجه شدند که من در برنامه خودم از تابع اولیه دیگری استفاده کردم یعنی:
    $F(userSelect)

    این تابع هم مانند متد های بالا ارزش گزینه انتخاب شده از منوی کشویی ما را به اسکریپت سرور انتقال می دهد
    تابع
    $F(id)

    عناصر ما را به وسیله شماره عنصر ارزش دهی می کند
    و تمام توابع آن دسترسی ندارد$modx توجه کنید که در این دستورات آژاکس ما از یک فایل خارجی استفاده کردیم که به شئ
    پس باید تنظیمات بانک اطلاعاتی را در فایل خودمان لحاظ کنیم

    include "../../../manager/includes/config.inc.php";
      $dbase = ltrim($dbase, "`");
      $dbase = rtrim($dbase, "`");
    	
      $conn = mysql_connect(
              $database_server,$database_user,$database_password
              );
      $db = mysql_select_db($dbase);
    


    پس از این می توانید ارزش بازگشتی از متد های گفته شده در بالا را دریافت کنید و نتیجه جستجو را در جدولی مشاهده کنید
    در این حالت بازگشت را در ظرفی که آداپتور آژاکس به آن منتقل می کند مشاهده می کنید.

    جستجو
    برای جستجو توجه کنید که تقریبا تمام مراحل بالا را انجام می دهیم

    function searchDatabase() {
      var url = '../assets/modules/database2/search.php';
      var pars = 'term=' + $F(searchField);
      var myAjax = new Ajax.Updater( 'ajaxContainer', url, 
                   { method: 'get', parameters: pars }); 
    }
    

    به طور خلاصه تمام کاری که ما انجام می دهیم :
    اول مسیر فایلی که به وسیله آن درخواست را پردازش می کنیم , مشخص می کنیم
    برای بازگرداندن ارزش فیلد ورودی و انتقال آن توسط آداپتور آزاکس استفاده می کنیم$F() بعد از تابع
    بعد باید اسکریپت ما کار برقراری ارتباط با بانک اطلاعاتی را انجام دهد و پاسخ را به جستجوی ما با متد های گفته شده بدهد
    به قول معروف ابر و مه وخورشید فلک همه در کارند تا ما پاسخ بانک اطلاعاتیرا ببینیم


    توجه: برای فهم بهتر مبحث ماژولها در مد ایکس باید با نحوه برنامه نویسی آژاکس آشنا باشید
    سعی می کنم که در آینده نزدیک مقاله های برای آمورش آژاکس بنویسم
    ادامه دارد
    [/right]
      آموزش ساخت ماژول برای مد ایکس "قسمت اول"1
      http://modxcms.com/forums/index.php/topic,8990.0.html
      آمورش ساخت ماژول قسمت دوم2
      http://modxcms.com/forums/index.php/topic,9265.0.html
      کار با فرم الکترونیک مد ایکس
      http://modxcms.com/forums/index.php/topic,9305.0.html
      فارسی Skin graft ماژول پوسته ساز
      http://modxcms.com/forums/index.php/topic,9379.0.html
      • 20289
      • 958 Posts
      [rtl]
      به دانشنامه (وایکی) اضافه شد: http://wiki.modxcms.com/index.php/Fa:Modulemaking2
        [img]http://i10.tinypic.com/52c4eir.gif[/img][/td]
        [td][Wiki] [Persian support forum]
        [SVN] [RTL SVN Branch] [bugs] [FishEye+Crucible] [Learn MODx!] | [My Google Code]
        [font=tahoma][برای دسترسی به راهنمای فارسی به [url=http://www.modxcms.ir]