Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 22

How To Create Chart Using

Codeigniter and Morris.js


 SEPTEMBER 27, 2018
 Want to know how to create chart using codeigniter and morris.js?

 Then you are in the right place.

 Because today, I will share with you how to create chart using

codeigniter and morris.js step by step.

 Let’s get start it.

 STEP 1. PREPARATION
 This is important!

 If you missed this step, it means you missed the whole of this tutorial.

 Good preparation will determine your success following this tutorial.

The better your preparation, the more likely you will succeed in

following this tutorial.

 Do not skip this step, though it feels complex.


 So, what do you need to prepare?

 Here’s the list:

 1. Codeigniter

 Codeigniter is the main php framework we will use in this tutorial. If

you do not have it yet, please download it at the official

website: www.codeigniter.com

 2. Jquery

 Jquery is a javascript library that serves to help make it easier to

manipulate html elements.

 If you don't have it yet, please download it on the official

website: www.jquery.com

 3. Morris.js

 Morris.js is a javascript library to make it easier to create good-

looking charts.

 If you don't have it yet, please download it on the official

website: http://morrisjs.github.io/morris.js/
 4. Raphael.js

 Morris.js require raphael.js, so, we need raphael.js.

 Please visit the following url to get raphael.js:

 https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js

 Then select all the codes (Ctrl +A) then copy and save with the

name raphael-min.js.

 STEP 2. CREATE DATABASE AND


TABLE
 Create a database named chart_db.

 To create a database, you could executing the following query:

1 CREATE DATABASE chart_db;

 Then create a table named "account" with the structure like the

picture below:

 To create a table with a structure like the picture above, you could

executing the following query:

1
CREATE TABLE account(
2 id INT(11) PRIMARY KEY AUTO_INCREMENT,
3 year YEAR(4),

4 purchase INT(11),

5 sale INT(11),

profit INT(11)
6
)ENGINE=INNODB;
7

 STEP 3. INSERT SOME DATA


 Insert some data into the “account” table by executing the following

query:

1 INSERT INTO account (year,purchase,sale,profit) VALUES


2 ('2013','2000','3000','1000'),
3 ('2014','4500','5000','500'),

4 ('2015','3000','4500','1500'),

5 ('2016','2000','3000','1000'),

('2017','2000','4000','2000'),
6
7 ('2018','2200','3000','800'),

8 ('2019','5000','7000','2000');

 The query above will input 7 records data into the ”account” table.

 Like the picture below:

 STEP 4. CODEIGNITER INSTALLATION


 Extract codeigniter that has been downloaded earlier to www folder

(if you use wampserver) or htdocs (if you use XAMPP).

 Because I use wampserver. So, I extract it to c:/wamp/www/

 And then, rename codeigniter project to be chart.

 Like the picture below:


 Open the chart folder and the create new folder

named "assets" parallel to the application and system folders, then

create the css and js folder inside the assets folder.

 And then copy the morris.css file into the css folder and copy

the jquery.min.js, morris.min.js, and raphael-min.js files into

the js folder.

 Pay attention to the following picture for more details:


 STEP 5. CODEIGNITER
CONFIGURATION
 Next step is the configuration on the codeigniter.

 Here are some files you need to configure:

 1. Autoload.php

 To configure the autoload.php, please open the folder:

 application/config/autoload.php

 like this:

 Open autoload.php using text editor like Notepad++ or Sublime Text.


 And then find the code below:

1 $autoload['libraries'] = array();

2 $autoload['helper'] = array();

 Set to be like this:

1 $autoload['libraries'] = array('database');

2 $autoload['helper'] = array('url');

 2. Config.php

 To configure the config.php, please open the folder:

 application/config/config.php

 like the following picture:


 Open config.php file using text editor, and then find the code below:

1 $config['base_url'] = '';

 And then set to be like this:

1 $config['base_url'] = 'http://localhost/chart/';

 3. Database.php

 To configure the database.php, please open the folder:

 application/config/database.php

 like the picture below:


 Open database.php file using text editor, and then find the code

below:

1 $active_group = 'default';

2 $query_builder = TRUE;

4 $db['default'] = array(

5 'dsn' => '',

'hostname' => 'localhost',


6
'username' => '',
7
'password' => '',
8
'database' => '',
9
'dbdriver' => 'mysqli',
10
'dbprefix' => '',
11 'pconnect' => FALSE,
12 'db_debug' => (ENVIRONMENT !== 'production'),

13 'cache_on' => FALSE,

14 'cachedir' => '',


15 'char_set' => 'utf8',

16 'dbcollat' => 'utf8_general_ci',

'swap_pre' => '',


17
'encrypt' => FALSE,
18
'compress' => FALSE,
19
'stricton' => FALSE,
20
'failover' => array(),
21 'save_queries' => TRUE
22 );

23

24

 And then Set to be like this:

1 $active_group = 'default';

$query_builder = TRUE;
2

3
$db['default'] = array(
4
'dsn' => '',
5
'hostname' => 'localhost',
6
'username' => 'root',
7
'password' => '',
8 'database' => 'chart_db',
9 'dbdriver' => 'mysqli',
10 'dbprefix' => '',

11 'pconnect' => FALSE,

12 'db_debug' => (ENVIRONMENT !== 'production'),

'cache_on' => FALSE,


13
'cachedir' => '',
14
'char_set' => 'utf8',
15
'dbcollat' => 'utf8_general_ci',
16
'swap_pre' => '',
17 'encrypt' => FALSE,
18 'compress' => FALSE,
19 'stricton' => FALSE,

20 'failover' => array(),

'save_queries' => TRUE


21
);
22

23

24

 4. Routes.php

 To configure the routes.php, please open the folder:

 application/config/routes.php

 Like the picture below:


 Open routes.php file using text editor, and then find the code below:

1 $route['default_controller'] = 'welcome';

 And then set to be like this:

1 $route['default_controller'] = 'chart';


 STEP 6. MODEL
 The Model represents your data structures. Typically your model

classes will contain functions that help you retrieve, insert, and

update information in your database.

 In this case we just need one model, that is Chart_model.php

 So, create a model file models/Chart_model.php by the following

the code below:

1
<?php
2
class Chart_model extends CI_Model{
3

4 //get data from database


5 function get_data(){

6 $this->db->select('year,purchase,sale,profit');

7 $result = $this->db->get('account');

return $result;
8
}
9

10
}
11

 In the Chart_model model above there is just one function, that

function get_data().

 Function get_data() is used to display all data from the "account"

table in the database.


 In this case, we only display fields: year, purchase, sale, and profit.

 STEP 7. CONTROLLER
 The Controller serves as an intermediary between the Model, the

View, and any other resources needed to process the HTTP request

and generate a web page.

 In this case we just need one controller, that is Chart.php

 So, create a controller file controllers/Chart.php by the following the

code below:

1 <?php

2 class Chart extends CI_Controller{

3 function __construct(){

parent::__construct();
4
//load chart_model from model
5
$this->load->model('chart_model');
6
}
7

8
function index(){
9
$data = $this->chart_model->get_data()->result();
10 $x['data'] = json_encode($data);
11 $this->load->view('chart_view',$x);

12 }

13 }
14

 On the Chart controller above, there are two functions. Function

__connstruct() and function index().

 Function __constrsuct() is used as a constructor, while

the function index() is the function that is called when

the Chart controller is run.

 In the function index(), we call the

function get_data() from Chart_model model.

 Then encoded the output to be JSON object by using

the json_encode method.

 Then load the view "chart_view" by bringing an array "data".

 STEP 8. VIEW
 The View is the information that is being presented to a user.

 A View will normally be a web page, but in CodeIgniter, a view can

also be a page fragment like a header or footer. It can also be an

RSS page, or any other type of “page”.


 In this case we just need one view, that is chart_view.php

 So, create a view file views/chart_view.php by the following the

code below:

1
<!DOCTYPE html>
2
<html lang="en">
3
<head>
4
<meta charset="utf-8">
5 <title>Chart using codeigniter and morris.js</title>
6 <link rel="stylesheet" href="<?php echo base_url().'assets/css/morris.css'?>">
7 </head>

8 <body>

9 <h2>Chart using Codeigniter and Morris.js</h2>

10
<div id="graph"></div>
11

12
<script src="<?php echo base_url().'assets/js/jquery.min.js'?>"></script>
13
<script src="<?php echo base_url().'assets/js/raphael-min.js'?>"></script>
14
<script src="<?php echo base_url().'assets/js/morris.min.js'?>"></script>
15
<script>
16 Morris.Bar({
17 element: 'graph',
18 data: <?php echo $data;?>,

19 xkey: 'year',

20 ykeys: ['purchase', 'sale', 'profit'],

labels: ['Purchase', 'Sale', 'Profit']


21
});
22
</script>
23
</body>
24
</html>
25
26

 In the view chart_view, we call morris.css, jquery.min.js, raphael-

min.js, and morris.min.js files.

 To call the morris.css file, we use the following code:

1 <link rel="stylesheet" href="<?php echo base_url().'assets/css/morris.css'?>">

 To call the jquery.min.js, raphael-min.js,

and morris.min.js files, we use the following code:

1 <script src="<?php echo base_url().'assets/js/jquery.min.js'?>"></script>

2 <script src="<?php echo base_url().'assets/js/raphael-min.js'?>"></script>

3 <script src="<?php echo base_url().'assets/js/morris.min.js'?>"></script>

 To display a chart, we use the following code:

1
<script>
2
Morris.Bar({
3 element: 'graph',
4 data: <?php echo $data;?>,

5 xkey: 'year',

6 ykeys: ['purchase', 'sale', 'profit'],

labels: ['Purchase', 'Sale', 'Profit']


7
});
8
</script>
9

 The above code will display a bar chart on the graph element. Where

the graph is the ID of an HTML element where the chart wants to be

displayed.
 In this case, I want to display the chart into a div tag that

has id="graph" like the following code:

1 <div id="graph"></div>

 STEP 9. TESTING
 To do the test, please open your browser and type the following URL:

 http://localhost/chart/

 if it's running well, it will look like the following picture:

 Awesome right?

 You can also change the style from the chart above to a line

chart or area chart.


 To change the style of chart, it's quite simple just change the Bar to

be Line.

 Like this:

1
<script>
2
Morris.Bar({
3 element: 'graph',
4 data: <?php echo $data;?>,

5 xkey: 'year',

6 ykeys: ['purchase', 'sale', 'profit'],

labels: ['Purchase', 'Sale', 'Profit']


7
});
8
</script>
9

 Change to be like this:

1
<script>
2
Morris.Line({
3 element: 'graph',
4 data: <?php echo $data;?>,

5 xkey: 'year',

6 ykeys: ['purchase', 'sale', 'profit'],

labels: ['Purchase', 'Sale', 'Profit']


7
});
8
</script>
9

 Then visit the following URL to see the changes:

 http://localhost/chart/
 if it's running well, it will look like the following picture:

 Beside that, You can also change the style to Area chart just by

changing Line to Area.

 Like this:

1
<script>
2
Morris.Area({
3 element: 'graph',
4 data: <?php echo $data;?>,

5 xkey: 'year',

6 ykeys: ['purchase', 'sale', 'profit'],

labels: ['Purchase', 'Sale', 'Profit']


7
});
8
</script>
9

 Then visit the following URL to see the changes:

 http://localhost/chart/
 if it's running well, it will look like the following picture:

 That’s it!.

 CONCLUSION
 In today's tutorial is about how to create a chart with codeigniter and

morris.js.

 In this tutorial, you have learned how to create charts with codeigniter

and morris.js step by step.

 Not only that, you have also learned how to change the style of chart

from bar chart to line chart and chart area.

You might also like