امروز : ﺳﻪشنبه, 30 آبان 1396
اموزش Codeigniter جلسه ششم روش درج اطلاعات جدید در دیتابیس
3/50 امتیاز از 12 رای
 تکنولوژی  |     |   159

در جلسه ی قبل پروژه ای را ایجاد کردیم تا اطلاعات موجود در دیتابیس خود را با استفاده از فریم ورک Codeigniter به کاربر نمایش دهیم. اما هر آنچه تا کنون یاد گرفته اید مربوط به نمایش دادن داده ها بوده و تاکنون داده ی جدیدی را به بانک اطلاعاتی خود اضافه نکرده اید. در این جلسه روش درج رکورد های جدید به دیتابیسی که در جلسه ی پنجم ایجاد کرده بودیم را به شما آموزش خواهیم داد. بنابراین اگر قسمت قبلی این سری آموزشی را مطالعه نکرده اید ابتدا آن را به طور کامل تمرین کرده و سپس مباحث این جلسه را دنبال کنید. در ادامه با همراه باشید تا روش افزودن اطلاعات جدید به دیتابیس را از طریق فریم ورک Codeigniter فرا بگیرید.

ایجاد فرم

به منظور افزودن داده های جدید به بانک اطلاعاتی ابتدا باید فرمی را ایجاد کنید تا با استفاده از آن، اطلاعات را دریافت کرده و سپس آن ها را ذخیره کنیم. از آنجا که هر رکورد از جدولی که در جلسه ی قبل ایجاد کرده بودیم شامل عنوان و متن خبر می شود پس نیاز به فرمی خواهیم داشت که دو فیلد ورودی داشته باشد. در مسیر application/views/news فایلی به نام create.php ایجاد کرده و کدهای زیر را در آن قرار دهید.

<h2><?php echo $title; ?></h2> <?php echo validation_errors(); ?> <?php echo form_open('news/create'); ?> <label for="title">Title</label> <input type="input" name="title" /><br /> <label for="text">Text</label> <textarea name="text"></textarea><br /> <input type="submit" name="submit" value="Create news item" /> </form> 

در کد بالا احتمالا فقط دو مورد برای شما کمی نا آشنا است. یکی ()forn_open و دیگری ()validation_errors که هر دو از توابع هلپرهای مربوط به ساخت کد های HTML در فریم ورک Codeigniter هستند.

تابع اول همانطور که اشاره کردیم مربوط به هلپر فرم بوده و در واقع کدهای مربوط به ایجاد فرم جدید را ایجاد کرده و قابلیت های دیگری را نیز برای ما به ارمغان می آورد. تابع دوم نیز مربوط به نمایش خطاهای احتمالی مربوط به اعتبارسنجی داده های ورودی در فیلد ها است.

فایل کنترلر news را که در جلسه ی قبلی ایجاد کرده بودید باز کنید. در این کلاس شما باید دو کار انجام دهید: اول اینکه باید بررسی کنید که فرم ثبت شده و دوم اعتبارسنجی اطلاعات وارد شده در فیلد ها. بدین منظور از کتابخانه ی اعتبارسنجی فرم (form validation) استفاده می کنیم. کد کنترلر news را به صورت زیر تغییر دهید.

public function create() { $this->load->helper('form'); $this->load->library('form_validation'); $data['title'] = 'Create a news item'; $this->form_validation->set_rules('title', 'Title', 'required'); $this->form_validation->set_rules('text', 'Text', 'required'); if ($this->form_validation->run() === FALSE) { $this->load->view('templates/header', $data); $this->load->view('news/create'); $this->load->view('templates/footer'); } else { $this->news_model->set_news(); $this->load->view('news/success'); } } 

کد بالا قابلیت های دیگری را به کنترلر ما اضافه خواهد کرد. ابتدا هلپر فرم و نیز کتابخانه ی اعتبارسنجی فرم را بارگذاری می کنیم. سپس قوانین اعتبارسنجی اطلاعات ثبت شده در هر فیلد را تعیین کرده ایم. متد یا تابع ()set_rules سه آرگومان ورودی دارد: اولین ورودی نام فیلد مورد نظر است، دومین ورودی نامی که برای پیام های خطا نیاز داریم خواهد بود و سومین آرگومان نیز قوانین مورد نظر ما برای اعتبارسنجی است. در اینجا ما قصد داریم تا وارد کردن اطلاعات در دو فیلد عنوان و متن خبر را اجباری کنیم و در این شرایط کاربر نمی تواند رکورد خالی در دیتابیس ثبت کند.

همانطور که در کد بالا مشاهده می کنید، فریم ورک Codeigniter کتابخانه ی بسیار قدرتمندی برای اعتبارسنجی فرم در اختیار ما قرار می دهد. در مورد این کتابخانه در جلسات آینده به صورت کاملا مفصل صحبت خواهیم کرد. پس از تعیین قوانین با یک دستور شرطی if بررسی می کنیم که آیا اعتبارسنجی فرم با موفقیت انجام شده یا خیر. اگر فیلد ها بر اساس قوانین تعیین شده توسط ما وارد نشده باشد، فرم ما مجددا نمایش خواهد یافت و اگر تمام قوانین در ورودی های فرم رعایت شده باشد مدل مربوطه فراخوانی خواهد شد. پس از این مورد نیز فایل های ویو یا نمای مربوطه برای نمایش پیام موفقیت آمیز بودن ثبت فرم اجرا می شوند. در این مرحله باید در مسیر application/views/news یک فایل جدید به نام success.php ایجاد کنید و سپس در این فایل عبارت مورد نظر خود را که قصد دارید پس از ثبت صحیح فرم به کاربر نمایش داده شود، وارد کنید.

مدل

تنها موردی که باقی مانده، نوشتن یک متد جدید برای افزودن اطلاعات وارد شده توسط کاربر به دیتابیس است. بدین منظور از کلاس Query Builder استفاده خواهیم کرد. همچنین از کتابخانه ی input به منظور دریافت اطلاعات ارسال شده به مدل بهره خواهیم برد. فایل مدلی که در جلسه ی قبل ایجاد کرده بودید را باز کرده و سپس متد زیر را به آن اضافه کنید.

public function set_news() { $this->load->helper('url'); $slug = url_title($this->input->post('title'), 'dash', TRUE); $data = array( 'title' => $this->input->post('title'), 'slug' => $slug, 'text' => $this->input->post('text') ); return $this->db->insert('news', $data); } 

این متد اطلاعات ثبت شده در فرم را که عملیات اعتبارسنجی روی آن ها در مرحله ی قبل انجام شده را به بانک داده ما اضافه خواهد کرد. خط سوم کد بالا یک تابع جدید به نام ()url_title دارد که از متدهای هلپر URL فریم ورک مورد بحث است. این متد فواصل خالی بین کلمات را با علامت خط فاصله (-) جایگزین خواهد کرد. این کار برای تبدیل عنوان وارد شده به slug یا همان نامک خاص خبر به کار گرفته شده است. علاوه بر این، متد ()url_title تمامی کاراکترهای وارد شده را به حروف کوچک تبدیل می کند تا نامک هر خبر به بهترین شکل ممکن درآید.

سپس داده های دریافت شده از کنترلر را برای ثبت در دیتابیس آماده کرده ایم. ایندکس هر عضو از آرایه ی data$ دقیقا باید با نام فیلد نگه دارنده ی اطلاعات وارد شده یکسان باشد. مقدار هر عضو از این آرایه نیز همانطور که مشاهده می کنید برابر با داده ای است که کاربر در فیلد مربوط به آن وارد کرده است. در این بخش احتمالا متوجه متد جدید ()post نیز شده اید. این متد یکی از توابع کتابخانه ی input بوده و با استفاده از آن، داده های وارد شده در فرم از نظر امنیتی بررسی می شوند. لازم به ذکر است که کتابخانه ی input به صورت پیش فرض در کل فریم ورک بارگذاری شده و نیازی به بارگذاری مجدد آن نداریم. در نهایت در کد بالا اطلاعات آرایه ی data$ را به دیتابیس اضافه می کنیم.

نکته: اگر خوب دقت کرده باشید هر رکورد از جدول اخبار ما شامل ۴ فیلد بود: id، title، slug و text. فیلد id به صورت خودکار با اضافه شدن هر رکورد یک واحد افزایش می یابد و این خاصیت است که هنگام ساخت جدول برای این فیلد تعریف کرده ایم تا شناسه ی آی دی هر خبر منحصر به فرد باشد. title و text نیز به ترتیب برای عنوان و متن خبر مورد استفاده قرار می گیرند و slug نیز نامک اختصاصی هر خبر است که در ادامه بیشتر در مورد آن صحبت می کنیم. اما فرم ما فقط شامل دو فیلد دو که یکی برای عنوان و دیگری برای متن خبر اختصاص داده شده اند. مقدار slug نیز همان عنوان خواهد بود با این تفاوت که برای این بخش، اطلاعات وارد شده در فیلد عنوان را همانطور که در بالا اشاره کردیم، با تابع ()url_title بهینه سازی کردیم.

مسیردهی

پیش از اینکه بتوانید به اپلیکیشن Codegniter خود رکورد جدید بیافزایید، باید در فایل config/routes.php تغییراتی ایجاد کنید. در واقع باید قوانین جدیدی را به این فایل اضافه کنیم. اطمینان حاصل کنید که فایل یاد شده شامل کدهای زیر نیز باشد. با استفاده از این کد ها، مسیردهی مورد نظر برای دسترسی به بخش ثبت خبر جدید را برای فریم ورک تعریف می کنیم.

$route['news/create'] = 'news/create'; $route['news/(:any)'] = 'news/view/$1'; $route['news'] = 'news'; $route['(:any)'] = 'pages/view/$1'; $route['default_controller'] = 'pages/view'; 

علاوه بر آنچه گفته شد، با ویرایش config/routes.php روش مشاهده ی هر خبر به صورت تکی را با استفاده از slug آن آماده کرده ایم.

حال نرم افزار سرور مجازی Xampp را اجرا کرده و سپس دو سرور آپاچی و مای اس کیو ال را در حالت فعال قرار دهید. سپس وارد آدرس http://127.0.0,1/codei-dynamic/index.php/news/create شوید. اگر همه مراحل را به درستی انجام داده باشید، فرم مربوط به ثبت خبر جدید برای شما نمایان خواهد شد که می توانید با استفاده از آن، رکوردهای جدید را به دیتابیس خود اضافه کنید.

در جلسات آینده شما را با تک تک کتابخانه ها و کلاس های آماده ی فریم ورک Codeigniter آشنا خواهیم کرد و قابلیت های هر کلاس را به صورت مفصل به شما آموزش می دهیم. در نهایت تمام این آموخته را با یک پروژه ی عملی به پایان خواهیم رساند که در آن پروژه، همه ی مباحث مطرح شده را استفاده خواهیم کرد.

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


برچسب ها :  

نظر خود را به اشتراک بگذارید