在codeigniter 2.1中我试图按类别显示频道。所以,如果我有一个名为电影的类别,我应该看到电影中的频道列表。我尝试了一个嵌套的foreach循环来实现这一目标,但似乎无法让它发挥作用。
我的表结构是这样的,但更复杂:
我的模特:
<?php
class Pages_model extends CI_Model {
function get_channels_by_categ_tv()
{
$this->db->select('categories.category_name, channels.channel_name');
$this->db->from('type_categ');
$this->db->join('categories', 'categories.category_id = type_categ.category_id');
$this->db->join('channels', 'channels.channel_id = type_categ.channel_id');
$this->db->order_by('categories.category_id');
//$this->db->group_by(array('categories.category_id'));
$query = $this->db->get();
if($query->num_rows() == 0)
{
#no channels
return false;
}
return $query->result_array();
}
}
在视图中:
<ul class="slides">
<li>
<?php foreach ($category_chaneels as $category): ?>
<div class="programe-tv_link">
<p><?=$category['category_name'];?></p>
<dd> <a href=""> >> <?=$category['channel_name'];?></a></dd>
</div>
<?php endforeach; ?>
</li>
</ul>
controller(Pages):
public function index()
{
$data['category_chaneels'] = $this->pages_model->get_channels_by_categ_tv();
$this->template->page_view($data);
}
我找到图像1和图像2,我需要像图像2而不是1的结果。
PS。一个频道可以有多个类别。
你能帮助我吗 ? THX
答案 0 :(得分:2)
在您看来,请尝试
<?php $cat_shown = ''; ?>
<div class="programe-tv_link">
<?php foreach ($category_chaneels as $category): ?>
<?php
if ($cat_shown != $category['category_name']) {
echo '<p>' . $category['category_name'] . '</p>';
$cat_shown = $category['category_name'];
}
?>
<dd><a href=""> >> <?=$category['channel_name'];?></a></dd>
<?php endforeach; ?>
</div>
答案 1 :(得分:1)
我的最终代码就是这个。 Maby sombody需要这个。
<div id="programe-tv-slide" class="flexslider">
<strong>Programe TV</strong>
<div class="redLine"></div>
<?php $cat_cnl = array();
$list = array();
$i=1;
foreach ($category_chaneels as $option) {
$catname = $option['category_name'];
$chlname = $option['channel_name'];
$cat_cnl[$catname][$i] = $chlname;
$list[$i] = $catname;
$i++;
};
?>
<?php
$rows = array_chunk($cat_cnl, 4, TRUE);
foreach ($rows as $row) { //var_dump($rows);
?>
<ul class="slides">
<?php
echo ('<li>');
foreach ($row as $category => $channels) {
echo '<div class="programe-tv_link">';
echo '<p>' . $category . '</p>';
foreach ($channels as $channel) {
echo '<dd><a href="">' . $channel . '</a></dd> ';
};
echo '</div>';
};
echo ('</li>');
?>
</ul>
<?php }; ?>
</div>