2013-05-26 37 views
0

我已經看過這段代碼很長一段時間,不要看到知道問題是不取文件..PHP代碼如預期

function getComment($topic_id){ 
    $sql = "SELECT * FROM comment WHERE topic_id='$topic_id' ORDER BY time DESC LIMIT 20"; 
    $result = mysql_query($sql); 
    //the "id of the comment willl be used in maing the like box" 
    while($output = mysql_fetch_assoc($result)){ 
    $qry = "SELECT username, avatar2 FROM user WHERE user_id='".$output['user_id']."'"; 
    $rst = mysql_query($qry); 
    $out = mysql_fetch_assoc($rst); 
    $disp = ' 
     <div class="tmain"> 
      <h3 class="underlinebold">Topic Title<span class="not_left"> 
       <ul> 
        <li><i class="icon-time" style="margin-top:5px;"></i>time: '. getTime($output["time"]) .' ago</li> 
        <li><i class="icon-pencil" style="margin-top:5px;"></i>Edit</li> 
        <li><span class="badge badge-inverse">#2</span></li> 
       </ul> 
      </span></h3> 
      <div class="postWrap"> 
       <div class="userInfo"> 
        <ul> 
         <li><img src="'. $out["avatar2"] .'" /></li> 
         <li>'. $out["username"] .'</li> 
         <li>'. commentNo($output["user_id"]) .'</li> 
        </ul> 
       </div> 
       <div class="comment"> 
        <div class="commentText">'. 
        $output["content"].'</div> 
        <ul class="below"> 
         <li><i class="icon-flag" style="margin-top:3px;"> </i>Report</li> 
         <li><i class="icon-edit" style="margin-top:3px;"> </i>Quote</li> 
         <li><i class="icon-thumbs-down" style="margin-top:3px;"> </i>Mtcheew...(<span>0</span>)</li> 
         <li><i class="icon-thumbs-up" style="margin-top:3px;"> </i>Correct!(<span>0</span>)</li> 
        </ul> 
       </div> 
      </div> 
     </div> 
    '; 
    return $disp; 
    } 

} 

的代碼是假設把所有的評論與一個特定的主題,並顯示他們的主題頁..但它只顯示最後發佈的代碼,沒有別的..我不知道我在哪裏得到所有錯誤..

你可以看到效果這裏test forum所以請你如果你們可以幫忙...

+0

你不應該通過結果來設定循環? – andrewsi

+0

您在第一次迭代後返回$ disp的值。此外,您需要使用PDO而不是mysql_,瞭解SQL連接和MVC(以及代碼格式化...)。 – DCoder

+0

我在這是一個新手...我知道有一個地方的錯誤,但我不能只是弄清楚,因爲我訪問2表,不知道哪些用於循環而不篡改其他查詢 – 1baga

回答

4

每次thro在循環中,它將用當前行替換$disp的值。您需要添加他們,而不是替代,即

$disp .= '<div class="tmain"> ... </div>'; 
    ^

此外,return $disp;聲明必須while循環。您在循環的第一次迭代期間返回。

而不是做一個單獨的查詢每個用戶名/頭像,你應該做它在主查詢聯接:

SELECT c.*, u.username, u.avatar 
FROM comment c 
JOIN user u ON u.user_id = c.user_id 
WHERE topic_id = '$topic_id' 
ORDER BY time DESC 
LIMIT 20 
+0

我應該保持連接$顯示... – 1baga

+0

我可以使用你的代碼完全一樣,因爲它是 – 1baga

+0

你需要改變其他的東西比賽。例如,'$ out ['avatar']'變成'$ output ['avatar']',因爲你不再執行第二個'mysql_fetch_assoc()'。 – Barmar