Php 带有数据库的Codeigniter下拉菜单

Php 带有数据库的Codeigniter下拉菜单,php,mysql,codeigniter,Php,Mysql,Codeigniter,首先,我将试着解释我的问题。我对codeigniter非常陌生,我正在尝试在codeigniter中创建一个下拉菜单,从数据库中获取结果。我已经有了一些经验,但没有发挥应有的作用 首先,我的模型: public function get_continents() { $this->db->select('*'); $this->db->from('continents'); $this->db->order_by("continent_

首先,我将试着解释我的问题。我对codeigniter非常陌生,我正在尝试在codeigniter中创建一个下拉菜单,从数据库中获取结果。我已经有了一些经验,但没有发挥应有的作用

首先,我的模型:

public function get_continents() {
    $this->db->select('*');
    $this->db->from('continents');
    $this->db->order_by("continent_name", "asc");
    $query = $this->db->get();

    if($query->num_rows() > 0) {
        return $query->result();
    }
    else {
        return FALSE;
    }
}

public function get_contries() {
    $this->db->select('*');
    $this->db->from('countries');
    $this->db->join('continents', 'country_continent_id = continent_id', 'left');
    $this->db->where('continent_id', $id);
    $this->db->order_by('country_name', 'asc');
    $query = $this->db->get();

    if($query->num_rows() > 0) {
        return $query->result();
    }
    else {
        return FALSE;
    }
}
现在控制器:

public function index() {
    $dados['title'] = 'Places to Visit';
    $dados['page'] = 'home';

    // lista dos continentes
    $this->load->model('option_model');
    $dados['continent'] = $this->option_model->get_continents();

    // lista os paises
    $dados['country'] = $this->option_model->get_contries();

    // chamar a vista -> view
    $this->load->view('home', $dados);
}
以及以下观点:

 <nav>
            <ul>
                <li><a href="" id="home">Homepage</a></li>
                <?php foreach ($continent as $row) {; ?>
                    <li>
                        <a href="" id="<?php echo $row->continent_id; ?>"><?php echo $row->continent_name; ?></a>
                        <ul>
                            <?php foreach($country as $row2) {; ?>
                                <li><a href="" id="<?php echo $row2->country_id; ?>"><?php echo $row2->country_name; ?></a></li>
                            <?php }; ?>
                        </ul>
                    </li>
                <?php } ?>
                <li><a href="" id="pt">Portugal</a></li>
            </ul>
        </nav>
我该怎么做?
提前谢谢

您的错误很可能来自函数
get\u contries()
您有一行包含
$this->db->where('constratine\u id',$id)


删除该行就可以了。

您需要更新
获取大陆()
函数,以便为每个大陆添加国家

如何做到这一点

获取大陆()

鉴于:

 <nav>
            <ul>
                <li><a href="" id="home">Homepage</a></li>
                <?php foreach ($continent as $row) {; ?>
                    <li>
                        <a href="" id="<?php echo $row->continent_id; ?>"><?php echo $row->continent_name; ?></a>
                        <ul>
                            <?php foreach($row->country as $row2) {; ?>
                                <li><a href="" id="<?php echo $row2->country_id; ?>"><?php echo $row2->country_name; ?></a></li>
                            <?php }; ?>
                        </ul>
                    </li>
                <?php } ?>
                <li><a href="" id="pt">Portugal</a></li>
            </ul>
        </nav>

我们所做的是:

  • get_大陆
    中,我们将国家对象附加到每个大陆对象
  • 在视图中,我们将嵌套的foreach循环中的
    $country
    替换为
    $row->country

  • 谢谢你的回复,但是为了了解这个国家大陆,我不应该有一个变量吗?这是我的问题之一。如果删除该行,我就无法看到哪个国家属于哪个大陆。事实上,该行根本不起作用,因为您没有变量名
    $id
    ,因此如果您想使用json构建查询,它会弄乱您的查询。我知道它不起作用。我必须向那个变量传递一个值,但不知道如何传递。我的第一个猜测是加入这两个函数,但正如我所说,我是codeigniter的新手。是的,您必须在一个函数中加入这两个函数,这将花费您一点时间,但这将为您节省一些时间。当然。谢谢=)正在进行此操作,但仍然需要一些帮助。tku,tku,tku。。。
    public function get_continents() {
        $this->db->select('*');
        $this->db->from('continents');
        $this->db->order_by("continent_name", "asc");
        $query = $this->db->get();
    
        if($query->num_rows() > 0) {
    
            // Get Countries list for each continent
            foreach ($query->result() as $row) {
    
                $this->db->select('*');
                $this->db->from('countries');
                $this->db->where('country_continent_id', $row->continent_id);
                $this->db->order_by('country_name', 'asc');
                $country = $this->db->get()->result();
    
                // append country to the continent object
                $row->country = $country;
    
            }
    
            return $query->result();
    
        }
        else {
            return FALSE;
        }
    }
    
     <nav>
                <ul>
                    <li><a href="" id="home">Homepage</a></li>
                    <?php foreach ($continent as $row) {; ?>
                        <li>
                            <a href="" id="<?php echo $row->continent_id; ?>"><?php echo $row->continent_name; ?></a>
                            <ul>
                                <?php foreach($row->country as $row2) {; ?>
                                    <li><a href="" id="<?php echo $row2->country_id; ?>"><?php echo $row2->country_name; ?></a></li>
                                <?php }; ?>
                            </ul>
                        </li>
                    <?php } ?>
                    <li><a href="" id="pt">Portugal</a></li>
                </ul>
            </nav>