【问题标题】:PHP Table: I'm trying to create new row for every mysql table rows in my websitePHP Table:我正在尝试为我网站中的每个 mysql 表行创建新行
【发布时间】:2012-09-01 20:49:57
【问题描述】:

基本上,我已经在 1 行从 mysql 检索数据并使它看起来像一个带有边框和东西的表,但我希望它对 mysql 表上的每一行重复。以下是我目前使用的代码:

while($info = mysql_fetch_array( $data )) 
 { 
 echo "<table width='1000' cellpadding='10' cellspacing='5' border='1'>"; 

 echo "<tr>


    <td><center><b>".$info['id']."</td></center></b>"."<td><center><b>".$info['username']."</td></center></b>"."<td><center><b>".$info['kills']."</td></center></b>"."<td><center><b>".$info['deaths']."</td></center></b>"."<td><center><b>".$info['ratio']."</td></center></b></tr>"; 

 echo "</table>"; 
 } 

更新:

 echo "<table width='1000' cellpadding='10' cellspacing='5' border='1'>"; 
 while($info = mysql_fetch_array( $data )) 
 { 
 echo "<tr> 
    <td><center><b>".$info['id']."</td></center></b>"."<td><center><b>".$info['username']."</td></center></b>"."<td><center><b>".$info['kills']."</td></center></b>"."<td><center><b>".$info['deaths']."</td></center></b>"."<td><center><b>".$info['ratio']."</td></center></b></tr>"; 

 } 
 echo "</table>"; 

【问题讨论】:

  • 将打开和关闭&lt;table&gt; 移出 while循环。
  • 这应该为你的 mysql 结果集中的每一行创建一个新表。通常您会为每个结果创建一个tr,但是您应该看到从您的查询返回的每一行以及您发布的代码。确定返回不止一行?
  • 我的查询有 2 行,但它只返回第 2 行。
  • 对不起,这是真的,我的工作不好,谢谢:D
  • 天哪!什么是 css 东西,每个 td 之后都在做什么。

标签: php mysql html loops


【解决方案1】:

您希望在获取数据行的循环之外的表标签:

echo "<table width='1000' cellpadding='10' cellspacing='5' border='1'>"; 
while($info = mysql_fetch_array( $data )) 
{ 
    echo "<tr>
    <td><center><b>".$info['id']."</td></center></b>"."<td><center><b>".$info['username']."</td></center></b>"."<td><center><b>".$info['kills']."</td></center></b>"."<td><center><b>".$info['deaths']."</td></center></b>"."<td><center><b>".$info['ratio']."</td></center></b></tr>"; 
} 
echo "</table>"; 

由于您是 PHP 新手,我可能应该再扩展一下:

您的代码现在将回显表格开始标记:

<table width='1000' cellpadding='10' cellspacing='5' border='1'>

然后进入 while 循环并回显它找到的所有行:

<tr><td><center><b>Something1></b></td></tr> // shortened for example.
<tr><td><center><b>Something2></b></td></tr>
<tr><td><center><b>Something3></b></td></tr>
<tr><td><center><b>Something4></b></td></tr>

然后当它存在循环时,它会输出表格的结束标记:

</table>

您之前所做的是为每一行数据输出一个表格。为了将来参考,最好查看您的源代码以了解正在发生的事情。

编辑:当我浏览您的代码注释时,我将其格式化为更整洁以查看发生了什么,您可能希望通过以下格式使您的代码更易于阅读:

echo "<table width='1000' cellpadding='10' cellspacing='5' border='1'>"; 
while($info = mysql_fetch_array( $data )) 
{ 
    echo "<tr> 
        <td><center><b>".$info['id']."</b></center></td>
        <td><center><b>".$info['user‌​name']."</b></center></td>
        <td><center><b>".$info['kills']."</b></center></td>
        <td><center><b>".$info['deaths']."</b></center></td>
        <td><center><b>".$info['‌​ratio']."</b></center></td>
        </tr>"; 
} 
echo "</table>";

【讨论】:

  • 我都是通过源代码来做的。但是当我做了你提到的事情时,它仍然不起作用。更准确地说,mysql db 中有 2 行,以为它只获取第 2 行...
  • 这就是我所做的:请再次检查问题,我已经更新了代码
  • @MirwaisMaarij Good-O。我做了一个您可能想看一看的编辑 - 将使您的代码更易于阅读和理解。此外,您应该按照打开标签的顺序关闭标签 - 即在关闭 &lt;/b&gt; 标签之前不要关闭 &lt;td&gt; 标签:)
  • 它在这里做什么? 或 可以
【解决方案2】:

只需将表格标签移出循环即可。

echo '<table>';

foreach( $row )
{
  echo '<tr>....</tr>';
}

echo '</table>';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-03
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 2020-02-18
    • 2021-10-14
    相关资源
    最近更新 更多