如何使用Codeigniter从数据库中获取数据并将其显示在下拉列表中

时间:2018-07-20 11:19:06

标签: php codeigniter codeigniter-3 codeigniter-query-builder

我从数据库表中收集数据并将其显示在下拉列表中,这是我到目前为止所做的

这是我的控制者:

public function assign_hostel() {
        $inner_page_title = 'Assign Hostel'; 
        $this->admin_header('Assign Hostel', $inner_page_title);
        $data['hostel'] = $this->hostel_model->get_hostel();    
        $this->load->view('admin/hostel/assign_hostel');
        $this->admin_footer();
    }

这是我的模特:

public function get_hostel() { //get all hostel
        $this->db->order_by('hostel_name', 'asc');
        return $this->db->get_where('school_hostel',  array('hostel_name' => 
        $hostel_name)->result();
    }

我的看法:

<div class="form-group">
        <label class="form-control-label">Select Hostel</label>
         <select class="form-control" name="state_of_origin" required>
           <option value="">-Select-</option>
             <?php 
             $hostel_name = get_hostel();
             foreach ($hostel_name as $hostel ) { ?>
           <option value="<?php echo $hostel; ?>"><?php echo $hostel; ?></option>
            <?php } ?>
        </select>
</div>

为什么我会得到一个空的下拉列表?

4 个答案:

答案 0 :(得分:0)

您需要进行一些更改:

更改1:

在加载视图时传递$data变量:

$data['hostel'] = $this->hostel_model->get_hostel();    
$this->load->view('admin/hostel/assign_hostel', $data); // $data as 2nd argument

更改2:

$data数组的访问键作为视图文件中的变量,如下所示:

<div class="form-group">
        <label class="form-control-label">Select Hostel</label>
         <select class="form-control" name="state_of_origin" required>
           <option value="">-Select-</option>
             <?php 
             //$hostel_name = get_hostel(); NO NEED THIS LINE
             foreach ($hostel as $h ) { ?>
           <option value="<?php echo $h->hostel_name; ?>"><?php echo $h->hostel_name; ?></option>
            <?php } ?>
        </select>
</div>

我仍然需要知道您要提取哪些列。因为在<option>标记中,您需要使用变量来访问其属性。现在,我使用了变量$h本身,这是错误的。

您应该使用类似$h->name;

答案 1 :(得分:0)

您无法直接从视图中获取$hostel到模型,您必须从控制器中获取并通过$data将其传递给视图

CONTROLLER:
public function assign_hostel() {
        $inner_page_title = 'Assign Hostel'; 
        $this->admin_header('Assign Hostel', $inner_page_title);
        $data['hostels'] = $this->hostel_model->get_hostel();    
        $this->load->view('admin/hostel/assign_hostel', $data);
        $this->admin_footer();
    }

MODEL:
public function get_hostel() { //get all hostel
        $this->db->order_by('hostel_name', 'asc');
        return $this->db->get_where('school_hostel',  array('hostel_name' => 
        $hostel_name)->result();
    }

VIEW:
<div class="form-group">
        <label class="form-control-label">Select Hostel</label>
         <select class="form-control" name="state_of_origin" required>
           <option value="">-Select-</option>
             <?php 
             foreach ($hostels as $hostel) { ?>
           <option value="<?php echo $hostel; ?>"><?php echo $hostel; ?></option>
            <?php } ?>
        </select>
</div>

答案 2 :(得分:0)

传递$ data来查看控制器中的功能 控制器:

public function assign_hostel() {
    $inner_page_title = 'Assign Hostel'; 
    $this->admin_header('Assign Hostel', $inner_page_title);
    $data['hostel'] = $this->hostel_model->get_hostel();    
    $this->load->view('admin/hostel/assign_hostel', $data);
    $this->admin_footer();
}

然后获得$ hostel

查看:

<div class="form-group">
    <label class="form-control-label">Select Hostel</label>
     <select class="form-control" name="state_of_origin" required>
       <option value="">-Select-</option>
         <?php 
         foreach ($hostel as $hostel ) { ?>
       <option value="<?php echo $hostel; ?>"><?php echo $hostel; ?></option>
        <?php } ?>
    </select>

答案 3 :(得分:0)

希望这对您有帮助:

在您的视图中通过$data['hostels'],如下所示:

首先,您的控制器assign_hostel应该是这样的:

public function assign_hostel() 
{
    $inner_page_title = 'Assign Hostel'; 
    $this->admin_header('Assign Hostel', $inner_page_title);
    $data['hostels'] = $this->hostel_model->get_hostel();    
    $this->load->view('admin/hostel/assign_hostel' ,$data);
    $this->admin_footer();
}

第二个view应该是这样的:

<div class="form-group">
    <label class="form-control-label">Select Hostel</label>
     <select class="form-control" name="state_of_origin" required>
       <option value="">-Select-</option>
         <?php if ( !empty($hostels)) {
         foreach ($hostels as $hostel ) { ?>
            <option value="<?=$hostel->hostel_name; ?>"><?=$hostel->hostel_name;?></option>
        <?php } }?>
    </select>
</div>

更多信息:https://www.codeigniter.com/user_guide/general/index.html