raduken
raduken

Reputation: 2119

REST app + codeigniter + database

I did a REST app + codeigniter + database following: https://github.com/chriskacerguis/codeigniter-restserver , works perfect, wonderful.

Right now my json file getting static data, how can i get data from database?

i wrote a file and i can get from database the data, but i have no idea how to get the data from database in json, can you guys help me? thank you.

That file return to me that static json, works perfect, I would like get data from database.

/controllers/hello.php

<?php
include (APPPATH.'/libraries/REST_Controller.php');
class Hello extends REST_Controller {
    function world_get(){
        $data = new stdClass();
        $data->name = 'Mark ';
        $this->response($data, 200);
    }
}

These files below I can get data from database but in html, how can I get data in json format?

/controllers/site.php

<?php

Class Site extends CI_Controller {
    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }

    function index(){

        $this->load->model('data_model');
        $data['rows'] = $this->data_model->getAll();
        $this->load->view('home', $data);
    }

}

/models/data_model.php

<?php 

class Data_model extends CI_Model {
    function getAll(){
        $q  = $this->db->query("SELECT * from data");
        if($q->num_rows() > 0) {
            foreach ($q->result() as $row) {
                $data [] = $row;
            }
            return $data;
        }
    }
}

views/home.php

<htmL>

    <body>


        <pre>

        <?php foreach ($rows as $r)
        {
            echo '<h1>' . $r->title . '</h1>';
        }
        ?>
    </pre>

        <?php foreach ($rows as $r) : ?>


            <h1> <?php echo $r->author; ?></h1>
            <h1> <?php echo $r->contents; ?></h1>

        <?php endforeach; ?>
    </body>


</htmL>

Upvotes: 2

Views: 1220

Answers (2)

Shaiful Islam
Shaiful Islam

Reputation: 7134

You are making API.To return data you don't need to call view.You can do it simply this way

function index()
{
    $this->load->model('data_model');
    $data = $this->data_model->getAll();
    $this->response($data, 200);
}

Your model function is OK but you can make it simple.

function getAll()
{
    return $this->db->get('data')->result();    
}

Upvotes: 2

Saty
Saty

Reputation: 22532

just use json_encode in your controller and little change in your model file

Controller

function index(){
     $this->load->model('data_model');
     $result= $this->data_model->getAll();// change this line
     $data['rows']= json_encode($result);// add this line

    $this->load->view('home', $data);

}

Model

<?php 

class Data_model extends CI_Model {
    function getAll(){
        $q  = $this->db->query("SELECT * from data");
        if($q->num_rows() > 0) {
          return $q->result();
        }else{
          return false;
         }
    }
}

Upvotes: 2

Related Questions