آموزش Codeigniter - جلسه ششم: روش درج اطلاعات جدید در دیتابیس

چهارشنبه ۷ مهر ۱۳۹۵ - ۱۶:۰۰
مطالعه 6 دقیقه
در این جلسه‌ از سری آموزشی فریم‌ورک Codegniter روش درج اطلاعات در دیتابیس را فرا خواهید گرفت.
تبلیغات

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

ایجاد فرم

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

<h2>php echo $title; ?> echo validation_errors(); ?> echo form_open('news/create'); ?> for="title">Title type="input" name="title" /> /> for="text">Text name="text"> /> 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 آشنا خواهیم کرد و قابلیت‌های هر کلاس را به صورت مفصل به شما آموزش می‌دهیم. در نهایت تمام این آموخته را با یک پروژه‌ی عملی به پایان خواهیم رساند که در آن پروژه، همه‌ی مباحث مطرح شده را استفاده خواهیم کرد.

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

تبلیغات
داغ‌ترین مطالب روز

نظرات

تبلیغات