2011-11-13 77 views
1

我试图使我的网站,我从数据库使用mysql_fetch_array系统的数据库中的数据,并创建了一个while循环mysql_fetch_array,并在该循环内我有重复同样的事情再次while while循环,但问题是,嵌套while循环只执行一次,不重复行....这里是我使用了一些函数和面向对象的代码,但你会得到什么是重点! 我想到了一个替代的,但没有尝试过VAZ我想出路这样只有IE浏览器使用for循环而不是while循环可能的工作...嵌套while循环mysql_fetch_array没有按预期工作

public function get_feeds_from_my_friends(){ 
    global $Friends; 
    global $User; 
    $friend_list = $Friends->create_friend_list_ids(); 
    $sql = "SELECT feeds.id, feeds.user_id, feeds.post, feeds.date FROM feeds WHERE feeds.user_id IN (". $friend_list. ") ORDER BY feeds.id DESC"; 
    $result = mysql_query($sql); 
    while ($rows = mysql_fetch_array($result)) { 
      $id = $rows['user_id']; 
      $dp = $User->user_detail_by_id($id, "dp"); 
      $user_name = $User->full_name_by_id($id); 
      $post_id = $rows['id']; 

      $final_result = "<div class=\"sharedItem\">"; 
      $final_result .= "<div class=\"item\">"; 
      $final_result .= "<div class=\"imageHolder\"><img src=\"". $dp ."\" class=\"profilePicture\" /></div>"; 
      $final_result .= "<div class=\"txtHolder\">"; 
      $final_result .= "<div class=\"username\"> " . $user_name . "</div>"; 
      $final_result .= "<div class=\"userfeed\"> " . $rows['post'] . "</div>"; 
      $final_result .= "<div class=\"details\">" . $rows['date'] . "</div>"; 
      $final_result .= "</div></div>"; 
      $final_result .= $this->get_comments_for_feed($post_id); 
      $final_result .= "</div>"; 

      echo $final_result; 
     } 
} 

public function get_comments_for_feed($feed_id){ 
    global $User; 

    $sql = "SELECT feeds.comments FROM feeds WHERE feeds.id = " . $feed_id . " LIMIT 1"; 
    $result = mysql_query($sql); 
    $result = mysql_fetch_array($result); 
    $result = $result['comments']; 
    $comment_list = get_array_string_from_feild($result); 

    $sql = "SELECT comment_feed.user_id, comment_feed.comment, comment_feed.date FROM comment_feed "; 
    $sql .= "WHERE comment_feed.id IN(" . $comment_list . ") ORDER BY comment_feed.date DESC"; 
    $result = mysql_query($sql); 
    if(empty($result)){ return "";} 
    else { 
     while ($rows = mysql_fetch_array($result)) { 
       $id = $rows['user_id']; 
       $dp = $User->user_detail_by_id($id, "dp"); 
       $user_name = $User->full_name_by_id($id); 
       return "<div class=\"comments\"><div class=\"imageHolder\"><img src=\"". $dp ."\" class=\"profilePicture\" /></div> 
          <div class=\"txtHolder\"> 
           <div class=\"username\"> " . $user_name . "</div> 
           <div class=\"userfeed\"> " . $rows['comment'] . "</div> 
           <div class=\"details\">" . $rows['date'] . "</div> 
          </div></div>"; 

     }  

    } 
} 

回答

0

这是因为您正在使用return,该功能会阻止该功能继续执行。你试图做的是

//... 
else { 
    $out = ''; 
    while ($rows = mysql_fetch_array($result)) { 
      $id = $rows['user_id']; 
      $dp = $User->user_detail_by_id($id, "dp"); 
      $user_name = $User->full_name_by_id($id); 
      $out .= "<div class=\"comments\"><div class=\"imageHolder\"><img src=\"". $dp ."\" class=\"profilePicture\" /></div> 
         <div class=\"txtHolder\"> 
          <div class=\"username\"> " . $user_name . "</div> 
          <div class=\"userfeed\"> " . $rows['comment'] . "</div> 
          <div class=\"details\">" . $rows['date'] . "</div> 
         </div></div>"; 

    } 
    return $out; 

} 
+0

好吧,我goona试试这在一分钟 –

+0

我明白你的观点,但单独的循环也无法正常工作是否有任何错误,你可以找到? –

+0

非常感谢您的支持 –

0

的第一次迭代中的内部循环的回报循环。你确定你应该循环?如果您确定它始终是第一排,为什么不抢第一排呢?

+0

看到它的不同功能可按因为有许多人生根粉3征求意见后的1意见......我想所有的人是呼应在get_comments_for_feed查询是给3行,如果我在mysql控制台中运行它,所以plob是tht while循环不loopo它做一次,然后移动到主循环,然后$ post_id更改,所以我需要tht循环工作 –

1

永远不要使用嵌套的while循环,它不会给你预期的结果。做下面的方式,因为我在这个脚本做的:

<?php 
include('dbconnect.php'); 

$query = "SELECT * FROM tiles_categories" . " LIMIT 0, 3" ; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)) { $category_id = $row["cat_id"] ; 
echo "<div class='product'>"; 
      echo "<h2 style='padding-bottom:10px; color:#6F0D00;'>". $row['cat_name'] . "</h2>"; 
      gettiles($category_id); 
     echo"</div>"; 
    } 

    function gettiles($category_id) { 
     $tiles_query = "SELECT * FROM tiles_info where cat_id = '".$category_id."'"; 
     $result = mysql_query($tiles_query) or die(mysql_error()); 
     while($row_tiles = mysql_fetch_array($result)) { 
      echo "<div align='center' style='float:left; width:100px; margin:0px 35px 0px 0px;'>"; 

      echo "</div>"; 
     } 
    } 
?> 
+0

请使用'mysqli'或'PDO'代替mysql。 – Mansfield