while循环只显示1个HTML结果

时间:2011-06-20 08:48:56

标签: php mysql html

我在这个网站上看到过这个问题,但是我的情况略有不同,我还没有看到答案。我的代码看起来像这样

$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,当我这样做时,只检索到一个结果。我很难过,我已经研究了所有建议的线程,我仍然难倒。谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

您必须使用连接$ 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>';
}

?>

答案 1 :(得分: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”(代码的第一行为$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>';

这将只创建一个表多行 而不是 多个表 一个行即可。这是更好的标记语言,但不是必需的。