2016-06-13 8 views
0

私はそれぞれのコメントに返信機能を備えたコメントシステムを作成しようとしています。過去のOはこのコメントシステムをネイティブPHPで書いていましたが、今はcodeigniterで書き直そうとしていますそれに伴う問題。Codeigniterでコメントシステムを作成する

<?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'>&nbsp;-&nbsp;" . $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>"; 
} 

私は、コードのこの部分でHTMLファイルを持っていたネイティブPHPでこのコメントシステムを書いた

私の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(); 
} 

しかし、問題はhere.Whatは、私は???の代わりにコーディングする必要があるのですか?私は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'>&nbsp;-&nbsp;<?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

コメントデータを取得する方法はたくさんあります。 1つのアイデアは、モデル関数を呼び出してビューファイルにコメントを付けることです。

  <?php if ($comment['parent_id']) { ?> 
       <ul> 
        $this->products_model->get_comments($parent_id); 
       </ul> 
      <?php } ?> 

もう一つのアイデアは、それがエラーを有していてもよくなるよう

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; 
} 

私はそれをテストしていません注意してください...すべての親の子のデータを含めるようにget_commentsモデル関数に変更を加えることです。あなたの必要に応じて変更するだけです。

もう一つのアイデアは、単にその後、コメント

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アプリでやっていたとして、単にあなたの意見では、この関数を呼び出すヘルパー関数を作成することです。

関連する問題