无法在codeIgniter中使用视图发送正确的数据

时间:2015-09-15 06:48:53

标签: php codeigniter

我正在尝试在codeIgniter中构建一个简单的预订系统,并使用一个名为conference_rooms的数据库。我在我的Booking_Model.php中这样称呼这个:      

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

public function get_room() {

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

}

要显示它我正在使用我的Booking.php类,如下所示:

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');
}

我的view.php:     

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

找不到$room。我究竟做错了什么?

更新:

基本上改变了整个代码,我的视图类现在看起来像这样(改为我的预订控制器中的索引)

    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');

}

我的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>

2 个答案:

答案 0 :(得分:2)

使用此

在模型中

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

    function get_room() {

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

在控制器中

    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');
        }

    }
?>

在视图中

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

$conference_rooms[0]指向0的cz是我们使用Objective数组传递数据。所以我们需要指出数据。查看print_r

答案 1 :(得分:1)

<强> MODEL

您需要row_array();才能返回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');
    }
}

查看

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