在 CodeIgniter 中从数据库中获取下拉列表

Posted

技术标签:

【中文标题】在 CodeIgniter 中从数据库中获取下拉列表【英文标题】:Getting a drop down list from a database in CodeIgniter 【发布时间】:2017-03-08 13:14:27 【问题描述】:

我是 CodeIgniter 的新手,我一直在尝试使用数据库中的数据填充视图页面上的下拉列表,但没有成功。我尝试使用这个问题的建议,但下拉菜单仍然是空的 (display data from database to dropdown CodeIgniter)

这是我的看法:

<label>City</label>
<select class="form-control>
    <option value="">All</option>
    <?php
    foreach($groups as $city)
    
        echo '<option value="'.$city['cityidd'].'">'.$city['city'].'</option>';
    
    ?>  
</select> <br/>

这是我的控制器:

<?php 
class Main_controller extends CI_Controller 

    function __construct() 
     
         parent::__construct(); 
         $this->load->helper('url'); 
         $this->load->database(); 
     

      public function index() 
     
         $this->load->helper('form'); 
         $this->load->view('supplier_add'); 
     

这是我的模型:

class Site_model extends CI_Model

    public function __construct() 
    
        /* Call the Model constructor */
        parent::__construct();
    
    function getAllGroups()
    
        $query = $this->db->query('SELECT city FROM citys');

        return $query->result();
    

表名是“citys”,对应的列头是“cityidd”和“city”

【问题讨论】:

在construct()中你可以像这样加载模块$this->load->model('Site_model');。然后在索引函数 $data['city']=$this->Site_model->getAllGroups(); 您得到的是否有任何错误或显示输出? 【参考方案1】:

那里发现了几个问题。进行如下更改

 function __construct() 
    parent::__construct(); 
    $this->load->helper('url');
    $this->load_model('Site_model');
    $this->load->database(); 
 
public function index() 
  $this->load->helper('form');
  $data['groups'] = $this->site_model->getAllGroups();
  $this->load->view('supplier_add',$data); 
 

最终模型

function getAllGroups()
    $query = $this->db->query('SELECT cityidd,city FROM citys');
    return $query->result_array();

现在开始测试

【讨论】:

哇!像魅力一样工作!我的下拉列表现在已填充。谢谢 Rejoanul Alam 如果我想从数据库中填充许多下拉列表怎么办?我是否要为其他下拉菜单添加查询,或者我该怎么做?例如,表格仍然是“城市”,然后其他相应的列标题是“id”和“paymentmodes”,用于另一个选项 是的,使用不同的查询,使用不同的方法,如getAllGroups()【参考方案2】:

首先将您的 SELECT 查询更改为

SELECT cityidd, city FROM citys

在控制器的 index() 中将代码更改为

public function index() 
 
     $this->load->helper('form'); 
     $data['groups'] = $this->site_model->getAllGroups();
     $this->load->view('supplier_add',$data); 
 

【讨论】:

【参考方案3】:

您必须调用您的模型方法并将其传递给控制器​​中的视图,代码:

public function index() 
 
$this->load->helper('form');
$this->load->model('site_model'); 
$data['groups'] = $this->site_model->getAllGroups();
$this->load->view('supplier_add',$data); 
 

如果你在 linux 上工作,不要忘记大小写名称!

【讨论】:

【参考方案4】:

类 Main_controller 扩展 CI_Controller

        function __construct() 
         
             parent::__construct(); 
             $this->load->helper('url'); 
             $this->load->database(); 
             $this->load->model('Site_model');
         

          public function index() 
         
             $this->load->helper('form'); 
             $data['groups']=$this->Site_model->getAllGroups();
             $this->load->view('supplier_add',$data); 
         
        

这是我的模型:

        class Site_model extends CI_Model
        

        public function __construct() 
        
            /* Call the Model constructor */
            parent::__construct();
        
        function getAllGroups()
            

                $query = $this->db->query('SELECT * FROM citys');


                return $query->result();

            
        

这样试试

【讨论】:

【参考方案5】:

进行这些更改

IN 模型将数据转换为数组,因为您将其用作视图中的数组,因此更改为这个

function getAllGroups()

    $query = $this->db->query('SELECT * FROM citys');
    return $query->result_array();

在控制器中

public function index() 
 
    $this->load->helper('form');
    $this->load->model('site_model'); 
    $data['groups'] = $this->site_model->getAllGroups();
    $this->load->view('supplier_add',$data); 
 

【讨论】:

【参考方案6】:

你没有加载模型加载模型 例如:-

        function __construct() 
         
             parent::__construct(); 
             $this->load->helper('url');
             $this->load->model('Site_model') 
             $this->load->database(); 
         

          public function index() 
         
             $this->load->helper('form');
             $data['record']=$this->Site_model->getAllGroups()
             $this->load->view('supplier_add', $data); 
         
        

型号:- 类 Site_model 扩展 CI_Model

        public function __construct() 
        
            /* Call the Model constructor */
            parent::__construct();
        
        function getAllGroups()
            

                $query = $this->db->query('SELECT city FROM citys');


                return $query->result();

            
        

【讨论】:

以上是关于在 CodeIgniter 中从数据库中获取下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在codeigniter中将ajax选择的依赖下拉选项传递给mysql数据库

在 PHP CodeIgniter foreach 循环中从数据库中提取和更新数据

使用Codeigniter中的Ajax过滤表数据

在 Flutter 的下拉列表中从 Firebase 获取经过身份验证的用户列表

根据多个下拉过滤获取数据值

Codeigniter 上的动态相关下拉列表国家和州