【问题标题】:Produce HTML table from mysql data using PHP not working使用 PHP 从 mysql 数据生成 HTML 表不起作用
【发布时间】:2014-01-29 11:41:11
【问题描述】:

我想使用 mysql 表中的数据创建一个 HTML 表。这是我正在使用的 php 代码:

while ($row = $result->fetch())
{
  $registos[] = array('id'=>$row['id'], 'data'=>$row['data'], 'conta'=>$row['conta_id'], 
    'categoria'=>$row['categoria_id'], 'entidade'=>$row['entidade_id'], 'orcamento'=>$row['orcamento'],
    'atual'=>$row['atual'],'user'=>$row['user_key'], 'desvio'=>$row['desvio']);
}

echo 
    '<table border="1" cellspacing="0" cellpadding="0" class="tabela" style="margin:auto;">
    <tbody>
    <tr valign="middle" id="header">
        <th>id</th>
        <th>Data</th>
        <th>Conta_id</th>
        <th>Categoria_id</th>
        <th>Entidade_id</th>
        <th>Orçamento</th>
        <th>Atual</th>
        <th>User_key</th>
        <th>Desvio</th>
    </tr>';

foreach ($registos as $registo){
    //print ($registo['conta']);
    echo '<tr>';
    echo '<td>'.$registo['id'].'</td>';
    echo '<td>'.$registo['data'].'</td>';
    echo '<td>'.$registo['conta'].'</td>';
    echo '<td>'.$registo['categoria'].'</td>';
    echo '<td>'.$registo['entidade'].'</td>';
    echo '<td>'.$registo['orcamento'].'</td>';
    echo '<td>'.$registo['atual'].'</td>';
    echo '<td>'.$registo['user'].'</td>';
    echo '<td>'.$registo['desvio'].'</td>';
    echo '</tr>';
};

echo 
    '</tbody></table>';

这将产生以下 HTML:

<table border="1" cellspacing="0" cellpadding="0" class="tabela" style="margin:auto;">
    <tbody>
    <tr valign="middle" id="header">
        <th>id</th>
        <th>Data</th>
        <th>Conta_id</th>
        <th>Categoria_id</th>
        <th>Entidade_id</th>
        <th>Orçamento</th>
        <th>Atual</th>
        <th>User_key</th>
        <th>Desvio</th>
    </tr><tr><td>1</td><td>2014-01-21</td><td>3</td><td>4</td><td>5</td><td>10000.00</td><td>1800.00</td><td>1</td><td>-8200.00</td></tr><tr><td>2</td><td>2014-01-23</td><td>4</td><td>4</td><td>5</td><td>500.00</td><td>400.00</td><td>1</td><td>-100.00</td></tr><tr><td>3</td><td>2014-01-13</td><td>5</td><td>3</td><td>4</td><td>50.00</td><td>150.00</td><td>1</td><td>100.00</td></tr><tr><td>4</td><td>2014-01-08</td><td>3</td><td>4</td><td>3</td><td>500.00</td><td>900.00</td><td>1</td><td>400.00</td></tr><tr><td>5</td><td>2014-01-15</td><td>6</td><td>4</td><td>4</td><td>80.00</td><td>90.00</td><td>1</td><td>10.00</td></tr><tr><td>6</td><td>2014-01-15</td><td>5</td><td>3</td><td>4</td><td>1800.00</td><td>1650.00</td><td>1</td><td>-150.00</td></tr></tbody></table>

这显然是正确的,但页面显示的表格如下:

这段代码有什么问题?

【问题讨论】:

  • 您的 html 打印对我来说是正确的。没有问题。见jsfiddle.net/Ag4Et
  • 你确定这是表格的代码吗?
  • @ViniciusMonteiro 是的,我复制/粘贴了页面的源代码
  • @user2936213 也给我。这一切似乎都是正确的,但是当显示在页面上时,表格标题会向右移动。
  • 你能提供这个页面的链接吗?

标签: php html mysql


【解决方案1】:

我只能在 Chrome 中重现该错误,但您的标记中有许多验证错误。具体来说,您有 2 个元素 id,称为标题。将 tr 的 id 更改为其他内容。

变化:

<tr valign="middle" id="header">

到这个(或类似的):

<tr valign="middle" id="tableHeader">

【讨论】:

  • 就是这样!感谢您的帮助!
  • 看起来 header 的 id 正在从 templates/yoo_nano2/styles/lines/css/layout.css 中获取一些样式。
【解决方案2】:

您似乎缺少“Desvio”的值

<td>-8200.00</td></tr><tr>

应该是:

<td>-8200.00</td><td>&nbsp;</td></tr><tr>

【讨论】:

  • 不,有“Desvio”,一共9列。
猜你喜欢
  • 2023-03-07
  • 2011-11-23
  • 2014-05-01
  • 2013-09-19
  • 1970-01-01
  • 2014-02-28
  • 2017-02-25
  • 2018-04-20
  • 1970-01-01
相关资源
最近更新 更多