Php 带有数据库的Codeigniter下拉菜单
首先,我将试着解释我的问题。我对codeigniter非常陌生,我正在尝试在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_
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>