Before we could connect to our database, we need to create one with the following tables.
- courses
- id(bigint auto increment)
- course(varchar 255)
- description(text)
- students
- id(bigint auto increment)
- name(varchar 255)
- course_id(bigint foreign key)
CREATE TABLE `courses` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `description` TEXT NOT NULL, PRIMARY KEY (`id`) ) COLLATE='latin1_swedish_ci' ENGINE=InnoDB ;
CREATE TABLE `students` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `course_id` BIGINT(20) NOT NULL, PRIMARY KEY (`id`), INDEX `student_courses_fk` (`course_id`), CONSTRAINT `student_courses_fk` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`) ON UPDATE CASCADE ) COLLATE='latin1_swedish_ci' ENGINE=InnoDB ;At the end of this tutorial, we should be able to display all students with their course and course description.
Step 1. Create Model class
First, we need to create a model class. Make sure to name the file exactly with what you named the class. In our case, we'll be naming it as "Students_model". Take note, CodeIgniter 3 requires capitalization of the first character on both filename and class name.<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Students_model extends CI_Model { public $variable; public function __construct() { parent::__construct(); $this->load->database(); } public function getAllStudents(){ return $this->db->select("t1.name as student , t2.name as course , t2.description as course_description") ->from('students as t1') ->join('courses as t2','t1.course_id=t2.id','left') ->get() ->result_array(); } } /* End of file */ /* Location: ./application/models/ */
Step 2. Create Controller
Now that we defined functions in our model, we need a Controller to call these functions which then be sent to our view. Create a controller with the following code and name it "Students.php".<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Students extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('students_model'); } public function index() { $data['students']=$this->students_model->getAllStudents(); $this->load->view('student_view',$data); } } /* End of file */ /* Location: ./application/controllers/ */The code simply run the function "getAllStudents" which we defined on our model then return all students together with course and course description. Afterwards, the data is sent to "student_view" for the display.
Step 3. Create View
Finally we need to display the data in our view. Create a new view and name it "student_view" and paste the following code.<div class="col-xs-12"> <div class="col-xs-12"> <div class="col-xs-4"> <strong>Name</strong> </div> <div class="col-xs-4"> <strong>Course</strong> </div> <div class="col-xs-4"> <strong>Course Description</strong> </div> </div> <?php foreach((array)$students as $student): ?> <div class="col-xs-12"> <div class="col-xs-4"> <?=$student['student']?> </div> <div class="col-xs-4"> <?=$student['course']?> </div> <div class="col-xs-4"> <?=$student['course_description']?> </div> </div> <?php endforeach; ?> </div>The data that was passed on to our view is an array of students where each student contains an array of details. We used CodeIgniter's parser library which I have included on my autoload config. You can find it in "application/config/autoload.php" then find
$autoload['libraries'] = array('parser');
No comments:
Post a Comment