用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7255|回复: 10
收起左侧

[视图] 如何在首页显示和百度新闻一样?

[复制链接]
发表于 2009-11-20 21:42:50 | 显示全部楼层 |阅读模式
本帖最后由 dongfang521 于 2009-11-21 11:01 编辑

以下是二张数据表:

table1:  categories :
categoryid,
categoryname.
-----------------------------------------
table2.  newsinfo:

newsid,
title,
content,

categoryid.
如何输出到新闻首页:

类别1
------标题1
------标题2
------标题3
------标题4
------标题5
类别2
------标题1
------标题2
------标题3
------标题4
------标题5
类别3
------标题1
------标题2
------标题3
------标题4
------标题5
------标题4
------标题5

执行结果有错?

执行结果有错?
发表于 2009-11-20 22:48:18 | 显示全部楼层
楼主什么意思?
发表于 2009-11-21 02:48:52 | 显示全部楼层
是啊 什么意思?
 楼主| 发表于 2009-11-21 10:35:24 | 显示全部楼层
本帖最后由 dongfang521 于 2009-11-21 10:41 编辑

就是在前台页面,如何输出和百度新闻首页一样的数据?
类似于:
类别1
-----标题1
-----标题2
类别2
-----标题1
-----标题2
在如何在视图输出?
我用表连接,结果是类别分类显示了,可是每个类别下的标题也是一样的? (看图)

新闻首页

新闻首页
发表于 2009-11-21 12:03:29 | 显示全部楼层
执行一个联合查询,做后做一个算法处理一下就OK,实在不行你就在foreach栏目的时候在循环里再执行一个查询就OK。比如:
$category=(
array(id=>1,name=>'国内新闻'),
array(id=>2,name=>'国外新闻')
);
foreach($category as $v){
$query=$this->db->get_where('news',array(id=>$v['id'])->result_array();
下面的你应该知道如何处理了吧。
}
 楼主| 发表于 2009-11-21 13:02:56 | 显示全部楼层
回复 5# longjianghu


    我还是不太理解:
看下如下代码,怎么有错?
controllers:
function index() {
                    $data['page_title'] = '基于PHP架框新闻发布系统(学习版)';
                    $data['page_logo'] = '迅捷新闻发布系统';
                    $this->load->model('Mnews');
                    $data['CategoryName'] = $this->Mnews->category();                    
                    $data['newsinfo'] = $this->Mnews->newsinfo();                    
                    $this->load->view('header',$data);
                    $this->load->view('index',$data);
                    $this->load->view('footer');
                }   

models:
   
        function category() {
            $query = $this->db->get('categories');
            
            return $query->result();
        }        
        function newsinfo() {
     
            $query = $this->db->query("select * from categories, newsinfo where categories.CategoryID=newsinfo.CategoryID ");
            return $query->result();
}

viewS:


    <div id="content">
        <?php foreach ($CategoryName as $row):?>
        <div class="class">
            <h1><?php echo anchor('news/get_category/'.$row->CategoryID,$row->CategoryName);?><p align="right"><?php echo anchor('news/get_category/'.$row->CategoryID,'更多'.$row->CategoryName);?></p></h1>
            <ul>
            <?php foreach($newsinfo as $row):?>
            <li><?php echo anchor('news/content/'.$row->NewsID,$row->Title);?><span style="font-size:16px;"><?php echo '['.$row->IssueTime.']';?></span></li>
            <?php endforeach;?>
        
            </ul>
        </div>
        
        <?php endforeach;?>
        <div style="clear:both;"></div>
        
    </div>
发表于 2009-11-21 15:14:47 | 显示全部楼层
首先请问楼主知道  join 查询吧?这是前提。
 楼主| 发表于 2009-11-21 20:39:31 | 显示全部楼层
回复 7# Hex


    join查询知道,我试了下,不过还是出错啊.

function newsinfo() {
            
$this->db->select('categories.CategoryID as CategoryID,categories.CategoryName as CategoryName,newsinfo.NewsID as NewsID,newsinfo.Title as Title');
            $this->db->join('newsinfo','newsinfo.CategoryID = categories.CategoryID','left');
            $this->db->group_by('categories.CategoryID');
        
            $query = $this->db->get('categories');
            return $query->result();

}也不知道如何在视图中输出?
发表于 2009-11-21 21:39:41 | 显示全部楼层
楼主还是看看ci手册吧。
发表于 2009-11-22 00:00:10 | 显示全部楼层
查询出来的是一个数组,然后用 foreach 循环。
至于你要百度的效果,这就看你怎么循环了,这应该和 CI 没什么关系了。
你用 PHP 怎么写,在这里还怎么写。

本版积分规则