2011-06-20 73 views
2

我在此網站上看到過這個問題,但我的答案略有差異。我的代碼看起來像這樣While循環僅在HTML中顯示1結果

$sql_broadcast = mysql_query("SELECT id, mem_id, bc, bc_date FROM bc WHERE 
mem_id='$id' ORDER BY bc_date DESC LIMIT 50"); 
while($row = mysql_fetch_array($sql_broadcast)){ 
$mem_id = $row['mem_id']; 
$bc = $row['bc']; 
$bc_date = $row['bc_date']; 
$bc_date = strftime("%b %d, %Y", strtotime($row['bc_date'])); 
$bc_display = '<table width="90%" align="center" cellpadding="4"> 
<tr> 
<td width="93%">' .$bc_date. '<br />' .$bc. '</td> 
</tr> 
</table>'; 
} 

?> 

如果我只是回顯或打印表格,循環完美地工作。但是,我希望能夠在html頁面內打印$ bc_display,並且當我這樣做時,只有一個結果被檢索到。我很難過,我研究過所有建議的線索,我仍然難倒。感謝您的幫助! 。

+0

使用。運營商 –

回答

1

您在每個迭代上覆蓋$bc_display(刪除以前的存儲結果/行),你有做這樣的事情:

$bc_display .= '<table width="90%" align="center" cellpadding="4"> 
        <tr> 
        <td width="93%">' .$bc_date. '<br />' .$bc. '</td> 
        </tr> 
       </table>'; 

確保你設置$ bc_display爲'nothing'fir st($bc_display = '';在你的代碼的第一行)。 *此外,您創建了很多的表,這也許是一個更好的選擇(雖然你問不算什麼):

$bc_display = '<table width="90%" align="center" cellpadding="4">'; 
// your query; 
while($row = mysql_fetch_array($sql_broadcast)) 
{ 
    // First 5 lines of your while loop; 
    $bc_display .= '<tr><td width="93%">' .$bc_date. '<br />' .$bc. '</td></tr>'; 
} 
$bc_display .= '</table>'; 

這將創建僅一個表,與多行代替多個表具有一行。這是更好的標記語言,但不是必需的。

+0

...哇。我不能相信我因爲我忘記那件事而失去了2個小時。非常感謝,這可能是半夜,但這只是尷尬。我很欣賞這個輸入,謝謝! – dystopia

2

您有到Concat的您$ bc_display字符串=

像這樣:

$bc_display = ''; 
$sql_broadcast = mysql_query("SELECT id, mem_id, bc, bc_date FROM bc WHERE 
mem_id='$id' ORDER BY bc_date DESC LIMIT 50"); 
while($row = mysql_fetch_array($sql_broadcast)){ 
$mem_id = $row['mem_id']; 
$bc = $row['bc']; 
$bc_date = $row['bc_date']; 
$bc_date = strftime("%b %d, %Y", strtotime($row['bc_date'])); 
$bc_display .= '<table width="90%" align="center" cellpadding="4"> 
<tr> 
<td width="93%">' .$bc_date. '<br />' .$bc. '</td> 
</tr> 
</table>'; 
} 

?> 
+0

...哇。我不能相信我因爲我忘記那件事而失去了2個小時。非常感謝,這可能是半夜,但這只是尷尬。我很欣賞這個輸入,謝謝! – dystopia