我正在尝试为每个评论创建一个具有回复功能的评论系统。在过去,O用本机php编写了这个评论系统,但现在当我尝试用codeigniter重写它时,存在一些问题。< / p>
当我用本机php写这个评论系统时,我有一个带有这段代码的HTML文件:
<?php
$q = "SELECT * FROM productcomments WHERE productId = '$getProductId' AND parentid='0' AND isconfrim!=0";
$r = mysqli_query($xcon, $q);
while ($row = mysqli_fetch_assoc($r)):
getComments($row);
endwhile;
?>
这是getComments()
函数:
function getComments($row){
global $xcon;
echo "<li class='comment' id='" . $row['commentId'] . "'>";
echo "<div class='commentInfo'>";
echo "<div class='aut'>" . $row['userName'] . "</div>";
echo "<div class='timestamp'> - " . $row['date'] . "</div>";
echo "</div>";
echo "<div class='comment_body'>" . $row['comment'] . "</div>";
echo "<a href='#comment_form' class='reply' id='" . $row['commentId'] . "'>پاسخ به این نظر</a>";
$q = "SELECT * FROM productcomments WHERE parentid = " . $row['commentId'] . " AND isconfrim=1";
$r = mysqli_query($xcon, $q);
if (mysqli_num_rows($r) > 0) {
echo "<ul>";
while ($row = mysqli_fetch_assoc($r)) {
getComments($row);
}
echo "</ul>";
}
echo "</li>";
}
现在,当我尝试使用codeigniter框架重写上面的代码时,我的view
文件中存在一些问题。但首先请看我的Controller
:
public function detail($product_id){
$data['comments'] = $this->products_model->get_comments($product_id);
$this->load->view('pages/product-detail', $data));
}
和我的Model
:
public function get_comments($product_id){
$this->db->where('product_id', $product_id);
$this->db->where('is_confirm', '1');
$query = $this->db->get('xbl_product_comments');
return $query->result_array();
}
但问题出在这里。我应该编码而不是???
?我是php本机我只是重新调用我的getComments
函数,但我能在这做什么?我该怎么做才能获得parent_id
的评论?
<?php foreach ($comments as $comment) { ?>
<li class='comment' id='<?php echo $comment['id'] ?>'>
<div class='commentInfo'>
<div class='aut'><?php echo $comment['user_name'] ?></div>
<div class='timestamp'> - <?php echo $comment['date'] ?></div>
</div>
<div class='comment_body'><?php echo $comment['comment'] ?></div>
<a href='#comment_form' class='reply' id='<?php echo $comment['id'] ?>'>reply</a>
<?php if ($comment['parent_id']) { ?>
<ul>
??? // What should I code here ?
</ul>
<?php } ?>
</li>
<?php } ?>
答案 0 :(得分:0)
您可以通过多种方式尝试获取评论数据。一个想法是,您可以调用模型函数在视图文件中获取注释,例如
<?php if ($comment['parent_id']) { ?>
<ul>
$this->products_model->get_comments($parent_id);
</ul>
<?php } ?>
另一个想法是更改你的get_comments模型函数以包含所有父子数据......
public function get_comments($product_id){
$this->db->where('product_id', $product_id);
$this->db->where('is_confirm', '1');
$query = $this->db->get('xbl_product_comments');
$data = array();
foreach($query->result_array() as $row) {
$data[] = $row;
if($row['parent_id'] != 0) {
$data = $this->get_comments($parent_id);
}
}
return $data;
}
请注意我没有测试过它可能有错误。只需根据您的需要进行更改。
另一个想法是简单地创建一个帮助函数来获取评论
function get_comments($product_id){
$ci = &get_instance();
$ci->db->where('product_id', $product_id);
$ci->db->where('is_confirm', '1');
$query = $ci->db->get('xbl_product_comments');
return $query->result_array();
}
然后只需在您的“原生”php应用程序中调用此视图中的函数。