【问题标题】:How to fetch data from database and display it in a drop down list using Codeigniter如何使用 Codeigniter 从数据库中获取数据并将其显示在下拉列表中
【发布时间】:2018-07-20 11:19:05
【问题描述】:

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

这是我的控制器:

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>

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

【问题讨论】:

  • 哎呀,什么不起作用?空的下拉列表?顺序错误?您的查询是否返回了错误的数据?
  • 你试过@Sylvester 的答案了吗?
  • 包括您迄今为止为解决问题所做的工作的总结,以及您在解决问题时遇到的困难的描述。
  • @kerbholz 嗨,我得到一个空的下拉列表

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


【解决方案1】:

希望对您有所帮助:

在您的视图中传递$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

【讨论】:

  • 快乐是我的,快乐编码
【解决方案2】:

您不能从视图直接获取$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>

【讨论】:

    【解决方案3】:

    将 $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>
    

    【讨论】:

      【解决方案4】:

      您需要进行一些更改:

      变化一:

      在加载视图时传递$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>
      

      我仍然需要知道您要获取哪些列。因为在&lt;option&gt; 标签中你需要使用变量来访问它们的属性。现在我使用了变量$h 本身,这是错误的。

      你应该使用类似$h-&gt;name;

      【讨论】:

      • 我正在从“hostel_name”列中获取数据
      • 好的,我已经使用hostel_name 作为对象变量$h 的属性。检查我更新的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      相关资源
      最近更新 更多