首先我会尝试解释我的问题。我是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>
我想要制作的是各大洲的菜单,每个大陆都有这样的国家:
> continent 1
- country 1
- country 2
- ...
> continent 2
- country 1
- country 2
- ...
> ...
我该怎么做? 提前谢谢!
答案 0 :(得分:1)
您需要更新get_continents()
功能,以便为每个大陆附加国家/地区。
怎么做?
在get_continents()
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>
我们的工作如下:
get_continents
我们将国家/地区对象附加到每个大陆对象。$country
$row->country
醇>
答案 1 :(得分:0)
您的错误很可能来自函数get_contries()
你有一行$this->db->where('continent_id', $id);
删除该行,你应该没事。