如何遍历两个不同的表?

时间:2013-06-10 20:48:28

标签: php mysql arrays codeigniter

我一直在考虑这几个小时,但找不到解决方案。我搜索并遍历stackoverflow搜索一个重复的问题,但无法找到一个。 (因为我不是母语为英语的人,这可能就是原因,如果这是重复的话,请将其标记为这样,并且请指出我的问题。)

我有两张桌子。一个是'section table',另一个是'news table'。节表有'节名'和'节id'。

新闻表包含“部分名称”,“内容说明”,“内容标题”,“内容ID”。我希望我的页面看起来像这样:

第1节

  • 标题1,描述1

  • 标题2,描述2

第2节

  • 标题1,描述1

  • 标题2,描述2

  • 标题3,描述3

每个部分都应该从数据库中获取最后5条新闻。我知道这应该用循环来完成,我一直在使用foreach但似乎无法使它工作。

foreach($sections as $section)
{
    echo $section->title;

    foreach($news as $new)
    {
        echo $new->title; 
        echo $new->description;
    }
}

但这只是循环播放所有新闻。我明白了:

第1节:

  • 标题1,描述1,标题2,描述2(以及其他部分的标题和描述)。

我想到的另一个解决方案是加入表格,但我得到的是:

第1节

  • title 1,description 1

第1节

  • title 2,description 2

等。不是我想要的。

请帮助,我整天都被困在这里:(

[编辑] 这是我的控制器的简化版本:

$sections = $this->mymodel->getSections();
$id = $sections->id;
$news = $this->mymodel->getNews($id);

这是模特:

function getNews($id){
$rows = $this->db->select('title, description, sectionid, id')
             ->where('sectionid', $id)
             ->limit(5)
             ->order_by('id', 'desc')
             ->get('news')->result();
return $rows;
}

function getSections(){
$rows = $this->db->select('title, description, id')->get('section')->result();
return $rows;
}

1 个答案:

答案 0 :(得分:0)

基本上,您需要检查并确保当前新闻元素($new)与您正在显示的当前部分元素($section)具有相同的部分。如果不知道你的确切键,我就无法给出更准确的答案,但请尝试以下方法:

foreach($sections as $section)
{
    echo $section->title;

    foreach($news as $new)
    {
        if ($section->name == $new->section_name)
        {
            echo $new->title; 
            echo $new->description;
            echo "<br/>";
        }
    }
}