با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که دوره آموزش codeigniter را دنبال می کنند. با پیکربندی codeigniter آشنا شدیم. در این جلسه قرار است به آموزش کار با پایگاه داده در codeigniter پرداخته و لزوم آموزش کار با پایگاه داده در codeigniter را به شما بیاموزیم.
اهمیت وجود پایگاه داده در هر فریم ورکی غیر قابل انکار است، آموزش کار با پایگاه داده در codeigniter از جمله مباحث مهم و سازنده در کدایگنایتر می باشد و به همین دلیل این جلسه از آموزش کدایگنایتر، آموزش کار با پایگاه داده در codeigniter را تهیه کرده و در اختیار شما می گذارد.
در هر فریم ورکی، باید تعامل خوب و پایداری با پایگاه داده داشت و در codeigniter برقراری این تعامل به راحتی میسر شده است. codeigniter برخوردار از مجموعه قدرتمندی برای ارتباط با پایگاه داده (Database) است که در این جلسه، از جلسات آموزشی codeigniter آن را بررسی خواهیم نمود.
در پایان جلسه آموزش کار با پایگاه داده در codeigniter ، درک خواهیم کرد که کارکرد CRUD که شامل (Create, Read, Update, Delete) می شود چگونه با codeigniter تعامل برقرار کرده و با آن کار می کند.
ما از جدول stud زیر برای به روز رسانی، حذف و وارد کردن دیتا استفاده می نماییم.
Table Name: stud | |
---|---|
roll_no | roll_no |
varchar (30) | name |
برای اتصال به پایگاه داده دو راه وجود دارد:
اتصال خودکار با استفاده از فایل application / config / autoload.php انجام می شود. این اتصال پایگاه داده (ِDatabase) را برای هر صفحه ای بارگذاری می کند. برای استفاده از این ارتباط، کافی است که کتابخانه پایگاه داده را به صورت زیر اضافه نمایید:
1 | $autoload['libraries'] = array(‘database’); |
اگر می خواهید که اتصال به پایگاه داده (Database) فقط برای بعضی از صفحات صورت بگیرد و نه همه ی صفحات، از اتصال دستی استفاده کنید. برای این کار کافی است که خط زیر را به صورت دستی به پایگاه داد متصل نمایید:
1 | $this->load->database(); |
از آن جا که همه چیز در فایل application/config/database.php وجود دارد لذا از ارائه توضیحات بیشتر صرف نظر می کنیم.
برای قرار دادن یک رکورد در پایگاه داده(Database)، همان طور که در جدول زیر می بینید از کارکرد ()، استفاده می شود:
insert([$table = ”[, $set = NULL[, $escape = NULL]]]) | Syntax |
| Parameters |
TRUE on success, FALSE on failure | Returns |
bool | Return Type |
در مثال زیر می بینید که چطور یک record را وارد جدول stud نماییم. data$ یک array است که می توان به کمک آن دیتاها را تنظیم و آن ها را وارد جدول نماییم؛ تنها کاری که لازم است انجام دهیم این است که این array را وارد کارکرد ۲nd argument نماییم.
1 2 3 4 5 6 | $data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->insert("stud", $data); |
برای به روز رسانی رکورد در پایگاه داده(Database)، کارکرد update () را همراه با set () و where () به صورت زیر مورد استفاده قرار می دهیم. تابع set () داده ها را به روز می کند.
set($key[, $value = ”[, $escape = NULL]]) | Syntax |
| Parameters |
CI_DB_query_builder instance (method chaining) | Returns |
CI_DB_query_builder | Return Type |
کارکرد where() تعیین می کند که کدام یک از record ها باید به روز رسانی شوند:
where($key[, $value = NULL[, $escape = NULL]]) | Syntax |
| Parameters |
DB_query_builder instance | Returns |
object | Return Type |
در نهایت، تابع update () داده ها را در پایگاه داده (Database) به روز می کند.
update([$table = ”[, $set = NULL[, $where = NULL[, $limit = NULL]]]]) | Syntax |
| Parameters |
TRUE on success, FALSE on failure | Returns |
bool | Return Type |
1 2 3 4 5 6 7 8 | $data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->set($data); $this->db->where("roll_no", ‘1’); $this->db->update("stud", $data); |
برای حذف یک رکورد در پایگاه داده از کارکرد delete () همانطور که در جدول زیر نشان داده شده است استفاده می شود:
delete([$table = ”[, $where = ”[, $limit = NULL[, $reset_data = TRUE]]]]) | Syntax |
| Parameters |
CI_DB_query_builder instance (method chaining) or FALSE on failure | Returns |
mixed | Return Type |
برای حذف یک record از جدول stud کد زیر را استفاده کنید. اولین argument نام جدول را برای حذف record نشان می دهد و argument دوم نیز تصمیم می گیرد که کدام record حذف شود.
1 | $this->db->delete("stud", "roll_no = 1"); |
برای انتخاب یک record در پایگاه داده، همان طور که در جدول زیر می بینید از کارکرد get استفاده می شود:
get([$table = ”[, $limit = NULL[, $offset = NULL]]]) | Syntax |
| Parameters |
CI_DB_result instance (method chaining) | Returns |
CI_DB_result | Return Type |
برای گرفتن همه سوابق از پایگاه داده از کد زیر استفاده کنید. اولین بیانیه تمام پرونده ها را از جدول “stud” می گیرد و جسم را که در شیء query query ذخیره می شود، باز می گرداند. بیانیه دوم نتیجه عملکرد () با $ query object را برای دریافت همه سوابق با عنوان array نام گذاری می کند.
1 2 | $query = $this->db->get("stud"); $data['records'] = $query->result(); |
اتصال به پایگاه داده را می توان به کمک کد زیر به صورت دستی بست:
1 | $this->db->close(); |
یک کلاس کنترل کننده به نام Stud_controller.php ایجاد کنید و آن را در application / controller / Stud_controller.php ذخیره کنید.
در زیر یک نمونه خوب و کامل ارائه شده که در آن تمام عملیات فوق انجام شده است. قبل از اجرای مثال زیر، یک پایگاه داده و جدول را به عنوان دستورالعمل در شروع این فصل ایجاد کنید و تغییرات لازم را در فایل پیکربندی پایگاه داده ذخیره شده در application / config / database.php ایجاد کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | <?php class Stud_controller extends CI_Controller { function __construct() { parent::__construct(); $this->load->helper('url'); $this->load->database(); } public function index() { $query = $this->db->get("stud"); $data['records'] = $query->result(); $this->load->helper('url'); $this->load->view('Stud_view',$data); } public function add_student_view() { $this->load->helper('form'); $this->load->view('Stud_add'); } public function add_student() { $this->load->model('Stud_Model'); $data = array( 'roll_no' => $this->input->post('roll_no'), 'name' => $this->input->post('name') ); $this->Stud_Model->insert($data); $query = $this->db->get("stud"); $data['records'] = $query->result(); $this->load->view('Stud_view',$data); } public function update_student_view() { $this->load->helper('form'); $roll_no = $this->uri->segment('3'); $query = $this->db->get_where("stud",array("roll_no"=>$roll_no)); $data['records'] = $query->result(); $data['old_roll_no'] = $roll_no; $this->load->view('Stud_edit',$data); } public function update_student(){ $this->load->model('Stud_Model'); $data = array( 'roll_no' => $this->input->post('roll_no'), 'name' => $this->input->post('name') ); $old_roll_no = $this->input->post('old_roll_no'); $this->Stud_Model->update($data,$old_roll_no); $query = $this->db->get("stud"); $data['records'] = $query->result(); $this->load->view('Stud_view',$data); } public function delete_student() { $this->load->model('Stud_Model'); $roll_no = $this->uri->segment('3'); $this->Stud_Model->delete($roll_no); $query = $this->db->get("stud"); $data['records'] = $query->result(); $this->load->view('Stud_view',$data); } } ?> |
یک کلاس مدل (model class) با نام Stud_Model.php ایجاد کنید و آن را در application/models/Stud_Model.php ذخیره نمایید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php class Stud_Model extends CI_Model { function __construct() { parent::__construct(); } public function insert($data) { if ($this->db->insert("stud", $data)) { return true; } } public function delete($roll_no) { if ($this->db->delete("stud", "roll_no = ".$roll_no)) { return true; } } public function update($data,$old_roll_no) { $this->db->set($data); $this->db->where("roll_no", $old_roll_no); $this->db->update("stud", $data); } } ?> |
یک فایل نمایش (view file) با نام Stud_add.php ایجاد کنید و آن را در application/views/Stud_add.php ذخیره کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>Students Example</title> </head> <body> <?php echo form_open('Stud_controller/add_student'); echo form_label('Roll No.'); echo form_input(array('id'=>'roll_no','name'=>'roll_no')); echo "<br/>"; echo form_label('Name'); echo form_input(array('id'=>'name','name'=>'name')); echo "<br/>"; echo form_submit(array('id'=>'submit','value'=>'Add')); echo form_close(); ?> </body> </html> |
یک فایل نمایش (view file) با نام Stud_edit.php ایجاد کنید و آن را در application/views/Stud_edit.php ذخیره نمایید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>Students Example</title> </head> <body> <form method = "" action = ""> <?php echo form_open('Stud_controller/update_student'); echo form_hidden('old_roll_no',$old_roll_no); echo form_label('Roll No.'); echo form_input(array('id'⇒'roll_no', 'name'⇒'roll_no','value'⇒$records[0]→roll_no)); echo " "; echo form_label('Name'); echo form_input(array('id'⇒'name','name'⇒'name', 'value'⇒$records[0]→name)); echo " "; echo form_submit(array('id'⇒'sub mit','value'⇒'Edit')); echo form_close(); ?> </form> </body> </html> |
یک فایل نمایش (view file) با نام Stud_view.php ایجاد کنید و آن را در application/views/Stud_view.php ذخیره کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>Students Example</title> </head> <body> <a href = "<?php echo base_url(); ?> index.php/stud/add_view">Add</a> <table border = "1"> <?php $i = 1; echo "<tr>"; echo "<td>Sr#</td>"; echo "<td>Roll No.</td>"; echo "<td>Name</td>"; echo "<td>Edit</td>"; echo "<td>Delete</td>"; echo "<tr>"; foreach($records as $r) { echo "<tr>"; echo "<td>".$i++."</td>"; echo "<td>".$r->roll_no."</td>"; echo "<td>".$r->name."</td>"; echo "<td><a href = '".base_url()."index.php/stud/edit/" .$r->roll_no."'>Edit</a></td>"; echo "<td><a href = '".base_url()."index.php/stud/delete/" .$r->roll_no."'>Delete</a></td>"; echo "<tr>"; } ?> </table> </body> </html> |
تغییر زیر را در فایل مسیر application/config/routes.php ایجاد نمایید و خط زیر را در انتهای فایل اضافه کنید.
1 2 3 4 5 | $route['stud'] = "Stud_controller"; $route['stud/add'] = 'Stud_controller/add_student'; $route['stud/add_view'] = 'Stud_controller/add_student_view'; $route['stud/edit/(\d+)'] = 'Stud_controller/update_student_view/$1'; $route['stud/delete/(\d+)'] = 'Stud_controller/delete_student/$1' |
حالا بیایید این مثال را با بازدید از URL زیر در مرورگر به پایان ببریم.
yoursite.com را با URL خود جایگزین کنید.
1 | http://yoursite.com/index.php/stud |
در این جلسه از سلسله جلسات آموزش کدایگنایتر؛ آموزش کار با پایگاه داده در codeigniter را آموخته و نحوه اتصال پایگاه داده در این فریم ورک را یاد گرفتیم. در جلسه بعد در این سلسله جلسات آموزشی، با کتابخانه ها در کدایگنایتر آشنا خواهیم شد.
همچنان با پی وی لرن همراه باشید.