teninchhero
teninchhero

Reputation: 153

Can't send correct data with view in codeIgniter

I'm trying to build a easy booking system in codeIgniter and using a database with a table called conference_rooms. I'm calling for this in my Booking_Model.phplike this:

public function __construct()
{
    $this->load->database();
}

public function get_room() {

    $query = $this->db->get('conference_rooms');
    return $query->result_array();
}

}

To display it I'm using my Booking.php class looking like this:

public function view()
{
    $data['conference_rooms'] = $this->booking_model->get_room();

    if (empty($data['conference_rooms'])) {

        show_404();
    }

    $data['title'] = $data['conference_rooms']['title'];

    $this->load->view('templates/header', $data);
    $this->load->view('view', $data);
    $this->load->view('templates/footer');
}

And my view.php:

<h3><?php echo $conference_rooms['title']; ?></h3>
<div class="main">
    <?php echo $conference_rooms['seats']; ?>
</div>

It won't find $room. What am I doing wrong?

UPDATE:

Basically changed the whole code, my view class now looks like this (changed to index in my Booking controller)

    public function index() {

    $this->load->helper('form');
    $this->load->view('bootstrap/header');

    $this->load->model('Booking_Model');
    $rooms = $this->Booking_Model->get();
    $rooms_form_options = array();

    foreach ($rooms as $id => $room) {
        $rooms_form_options[$id] = $room->title;
    }

    $this->load->model('Package_Model');
    $packages = $this->Package_Model->get();
    $packages_form_options = array();

    foreach ($packages as $id => $package) {
        $packages_form_options[$id] = $package->package_name;
    }

    $this->load->view('booking', array(
        'rooms_form_options' => $rooms_form_options,
        'packages_form_options' => $packages_form_options,
    ));


    $this->load->view('bootstrap/footer');

}

And my booking.php;

<div>
    <?php echo form_label('Conference Room', 'id') ; ?>
    <?php echo form_dropdown('id', $rooms_form_options, set_value('id')); ?>
</div>
<div>
    <?php echo form_label('Package type', 'package_id') ; ?>
    <?php echo form_dropdown('package_id', $packages_form_options, set_value('package_id')); ?>
</div>
<div>
    <?php echo form_label('Antal deltagare', 'number_people') ; ?>
    <?php echo form_input('number_people', set_value('number_people')) ; ?>
</div>

<div>
    <?php echo form_submit('preview', 'Book'); ?>
</div>

Upvotes: 1

Views: 79

Answers (2)

Abdulla Nilam
Abdulla Nilam

Reputation: 38584

Use this:

In Model

<?
    function __construct()
    {
        $this->load->database();
    }

    function get_room() {

        $query = $this->db->get('conference_rooms');
        $result = $query->result_array();
        return $result;
    }
?>

In controller

    function view()
    {
        $data['conference_rooms'] = $this->booking_model->get_room();

        if (empty($data['conference_rooms']))
        {

            show_404();
        }
        else
        {
            $this->load->view('templates/header', $data);
            $this->load->view('view', $data);
            $this->load->view('templates/footer');
        }

    }
?>

in view

<h3><?php echo $conference_rooms[0]['title']; ?></h3>
<div class="main">
    <?php echo $conference_rooms[0]['seats']; ?>
</div>

Because of $conference_rooms[0] pointing 0 is we passing data with Objective array, so we need to point data. Check with print_r.

Upvotes: 2

Saty
Saty

Reputation: 22532

MODEL

You need to row_array(); to return an array

public function get_room() {
    $query = $this->db->get('conference_rooms');
    $rowcount = $query->num_rows();

    if( $rowcount > 0 ){
        return $row = $query->row_array();
    } else {
        return FALSE;
    }
}

CONTROLLER

public function view()
{
    $conference_rooms = $this->booking_model->get_room();// asing your array to variable

    if (empty($conference_rooms)) {

        show_404();

    } else {

        $data['conference_rooms']=$conference_rooms;// pass your variable to data array to pass into view

        $this->load->view('templates/header', $data);
        $this->load->view('view', $data);
        $this->load->view('templates/footer');
    }
}

VIEW

<h3><?php echo $conference_rooms['title']; ?></h3>
<div class="main">
    <?php echo $conference_rooms['seats']; ?>
</div>

Upvotes: 1

Related Questions