我只使用控制器和视图。
使用以下代码,我正在显示帖子和回复的帖子。
我使用以下控制器和视图来显示帖子和回复。
通过使用查询 1,我从 post 表中为主题 id.(eg.topic id=34) 选择 post 并使用此获取 post id 30 和 31 。
通过使用查询 2,我从回复表中为每个帖子 ID 选择回复。
假设帖子 ID 30 的回复 ID 为 1,
帖子 ID 31 的回复 ID 为 2。
通过使用第二个 for 循环,我正在使用回复表中的 parent_id 列选择是否有任何回复有另一个回复。(使用递归调用 showreply() 函数)
我被困在如何从递归函数 showreply() 中传递结果。
通过使用我的代码,我显示:
30号帖---第30号
帖的
第一个回复31号帖
---31号 帖的回复
但我想表现得像。
帖子 30
---第一个回复帖子 30
---回复第一个回复
帖子 31
---第一个回复帖子 31
---回复第一个回复
我已经使用递归函数调用来获取使用父 ID 进行回复的回复,但我不知道如何将其传递给查看。
控制器:
<?php
public function viewpost()
{
//Query 1
$topicid = trim($this->input->get('topicid'));
$q =$this->db->select(array(
'fp.id as id',
'fp.postdata',
'fp.topicid'))
->from('forum_post AS fp')
->where('fp.topicid',$topicid)
->order_by('fp.id DESC')->limit(0,10)->get();
$resultq1 = $q->result_array();
$data['resultq1'] = $resultq1;
//$data['resultq1'] = $res;
$resultq2 = array();
foreach ($resultq1 as $rec)
{
//Query 2
$postid = $rec['id'];
$q1 =$this->db->select(array(
'fr.id as id',
'fr.reply_data'))
->from('forum_reply AS fr')
->where('fr.postid',$postid)
->order_by('fr.id ')->get();
$resultq2[$postid] = $q1->result_array();
$data["resultq2"][$postid] = $resultq2[$postid];
foreach($q1->result_array() as $row1)
{
//second for loop
$reply_id = $row1['id'];
$resultq3[$reply_id] = $this->showreply($reply_id); // call to function
$data["resultq3"] = $resultq3[$reply_id];
}//inner for loop
} //outer for loop
$this->load->view('viewpost',$data);
}
public function showreply($reply_id)
{
$reply_id1 = $reply_id;
$q1 =$this->db->select(array(
'fr.id as id',
'fr.reply_data',
'fr.parent_id'))
->from('forum_reply AS fr')
->where('fr.parent_id',$reply_id1)
->order_by('fr.id ')->get();
//print $this->db->last_query();
$resultq4[$reply_id1] = $q1->result_array();
$data["resultq4"]= $resultq4[$reply_id1];
$i=0;
foreach($q1->result_array() as $row4)
{
print_r($q1->result_array());
echo "id".$id = $row4['id'];
$parent_id = $row4['parent_id'];
if($parent_id!=0)
{
//$data['nested'][$i] = $q1->result_array();
$this->showreply($id); //recursive call to function
$i++;
}
}
return $resultq4;
}
?>
回复表的表结构:
Rep_id rep_text post_id Parent_ID
-------------------------------------------------------------------------
1 Reply for post 30 30 null
2 Reply for post 31 31 null
3 reply to Rep_id 1 null 1
4 Rep_id 3 have Rep_id 4 null 3
5 Reply for post 31 null 2
6 Reply for Rep_id 5 null 5
----------------------------------------------------------------------------
帖子表:
post_id topic id post_title post_desc
-----------------------------------------
30 34 xyz sssss
31 34 pqr tyyyu
----------------------------------------
*视图: *
<div>
<?php foreach($resultq1 as $row)
{ ?>
<ul>
<li></li> // used to display post
</ul>
<?php foreach($resultq2 as $rows)
{
foreach($rows as $row1)
{
if($row['id']==$row1['postid'])
{ ?>
<ul>
<li></li> // used to display reyly for post
</ul>
<?php foreach($resultq3 as $rows)
{
foreach($rows as $row2)
{
if($row1['id']==$row2['parent_id'])
{ ?>
<ul>
<li></li> // used to display reply for reply
</ul>
<?php
}//if
} //inner for $row2
} // outr for $resultq3
} //if
} //inner for of $row1
}//outer for $resultq2
} ?>
</div>