我是codeigniter和php的新手 . 这是我的模特:
function getRelated($newsId, $catId){
$this->db->select('a.id, a.category, a.title, a.photo, a.caption, a. summary, a.detail, a.page_views, b.cat_id');
$this->db->from('news as a');
$this->db->order_by("time", "desc");
$this->db->join('news_categories as b', 'a.id = b.news_id');
$this->db->where('a.id <>', $newsId);
$this->db->where('b.cat_id', $catId);
$query = $this->db->get();
echo $this->db->last_query();
return $query->result();
}
这是我的控制器:
public function detail($id, $catId){
$this->load->model('news_model');
$data['list'] = $this->news_model->get($id);
$data['related'] = $this->news_model->getRelated($id, $catId);
$this->load->view('page_header');
$this->load->view('news_detail', $data);
$this->load->view('page_footer');
}
这是视图中查询的结果:
选择a.id,a.category,a.title,a.photo,a.caption,a . 摘要,a.detail,a.page_views,b.cat_id FROM news as JOIN news_categories as b ON a.id = b.news_id WHERE a.id <>'2'AND b.cat_id ='title%20one%20test1'按时间顺序DESC
如上所示(视图),cat_id的结果是 Headers ..我的代码出了什么问题?
我的视图文件(news_detail):
<h3>Related News</h3>
<?php
$i = 0;
foreach ($related as $key => $value) {
if (++$i > 3)
break;
?>
<div class="list">
<a class="title" href="news/detail/<?= $value->id . "/" . $value->title ?>"><?= $value->title ?></a>
</div>
<?php
}?>
帖子的类别是多种选择 . 因此,每个帖子都可以有多个类别 . 我该怎么办?
提前致谢
4 回答
替换视图文件(news_detail):
你在这里犯了错误
当你定义任何函数时
那么
$id
将是方法名称detail
之后的第一个分段,即$value->id
和$catId
将是方法名称之后的第二个分段,即$value->title
.所以将catID添加为链接中的第二个段,如下所示
<a class="title" href="news/detail/<?= $value->id . "/" . $value->catID ?>"><?= $value->title ?></a>
我修改了你的代码 . 试试这个...!
在视图文件(news_detail)中更改锚标记 .
在这里,您要发送 Headers 而不是类别ID
更换
<a class="title" href="news/detail/<?= $value->id . "/" . $value->title?>"><?= $value->title ?></a>
通过