2011-06-14 50 views
1

这里是我的功能:如何在While语句内部运行While语句以从数据库中获取值?

 $result_display = mysql_query("SELECT * FROM Events ORDER BY TimeStamp DESC LIMIT $y, 20"); 
     $result_comment = mysql_query("SELECT * FROM Comments"); 


while($row_display = mysql_fetch_array($result_display)){ 
    echo "<div id='id'" . $row_display['ID'] . " class='eventdiv' data-sort='".$row_display['TimeStamp']."'>".$row_display['Title']." TIME: ".$row_display['TimeStamp']."</div>"; 

    while($row_comment = mysql_fetch_array($result_comment)){ 
     echo $row_comment['com_details']; 
    } 

} 

的HTML输出与此类似:

<div id='id12' class='eventdiv' data-sort='238781>Time: 238781</div> 
<div id='id13' class='eventdiv' data-sort='238784>Time: 238784</div> 
<div id='id14' class='eventdiv' data-sort='238785>Time: 238785</div> 
<div id='id15' class='eventdiv' data-sort='238789>Time: 238789</div> 
<div id='id16' class='eventdiv' data-sort='238791>Time: 238791</div> 
<div id='id17' class='eventdiv' data-sort='238795>Time: 238795</div> 

These are the comment details... 

但我想输出是这样的:

<div id='id12' class='eventdiv' data-sort='238781>Time: 238781</div> 

These are the comment details... 

<div id='id13' class='eventdiv' data-sort='238784>Time: 238784</div> 

These are the comment details... 

<div id='id14' class='eventdiv' data-sort='238785>Time: 238785</div> 

These are the comment details... 

<div id='id15' class='eventdiv' data-sort='238789>Time: 238789</div> 

These are the comment details... 

<div id='id16' class='eventdiv' data-sort='238791>Time: 238791</div> 

These are the comment details... 

<div id='id17' class='eventdiv' data-sort='238795>Time: 238795</div> 

These are the comment details... 

我认为我在while语句中使用while语句的方式,它会像上面的HTML一样显示它,但它不会。

回答

1

第一次运行$ result_comment结果后,必须用mysql_data_seek($result_comment)重置它。所以:

while($row_display = mysql_fetch_array($result_display)){ 
    echo "<div id='id'" . $row_display['ID'] . " class='eventdiv' data-sort='".$row_display['TimeStamp']."'>".$row_display['Title']." TIME: ".$row_display['TimeStamp']."</div>"; 

    while($row_comment = mysql_fetch_array($result_comment)){ 
     echo $row_comment['com_details']; 
    } 

    mysql_data_seek($result_comment); 

} 
1

你需要在第一while循环运行的每个要素的查询。目前,有没有什么关联与每个事件的评论:

$result_comment = mysql_query("SELECT * FROM Comments WHERE [id]=$id");

+2

+1但更好的是,使用加入 – jeroen 2011-06-14 23:47:40

+0

+1:同意,更好的表现肯定。 – 2011-06-14 23:54:08

0

@DemianBrecht,我将两个表我只是还没有那么做关联。这里并不需要是一个协会得到什么我需要 - @Jed,我不知道为什么,但你提出的解决方案是产生这个错误:

'Wrong parameter count for mysql_data_seek()' 

我发现它为什么不工作,第二个提取函数需要放在第一个while语句中。否则,它将在它完成后执行:

$result_display = mysql_query("SELECT * FROM Events ORDER BY TimeStamp DESC LIMIT $y, 20"); 

while($row_display = mysql_fetch_array($result_display)){ 
    echo "<div id='id'" . $row_display['ID'] . " class='eventdiv' data-sort='".$row_display['TimeStamp']."'>".$row_display['Title']." TIME: ".$row_display['TimeStamp']."</div>"; 

    while($row_comment = mysql_fetch_array($result_comment)){ 

     $result_comment = mysql_query("SELECT * FROM Comments"); 
     echo $row_comment['com_details']; 

    } 

} 

够简单。

+0

我强烈建议使用我的解决方案,以免每次都对数据库进行新的查询。也许你需要的只是这个:'mysql_data_seek($ result_comment,0)' – glortho 2011-06-15 02:54:21