2

我正在尝试从数据库中检索所有这些数据,将其放入一个表中(如有必要,可以使用多个表),并按列显示它们,分成 4 个,分成多个页面。

我想知道如何让表格水平显示,例如

表头 表头 表头
表 数据 表 数据 表
数据 表 数据 表 数据

而不是:

表头
表数据
表数据

表头
表数据等

这是到目前为止的代码:

// While loop that will display the results in groups of 4
while($row=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC))
{ $newDate = $row['datenow']->format('d/m/Y'); ?>

<table id="syncresults">
<thead>
    <tr>
        <th scope="col" id="dateheader"> <?php echo $newDate ?></th>
    </tr>
</thead>

<tbody>
    <tr>
        <td><?php echo $row['nbsactive']; ?></td>
    </tr>
    <tr>
        <td><?php echo $row['nbsmanysynced']; ?></td>
    </tr>
    <tr>
        <td><?php echo $row['nbsthreedays']; ?></td>
    </tr>
</tbody>

任何有关如何执行此操作或为我指明正确方向的建议将不胜感激。

4

4 回答 4

0

在表内使用表。

// php fetch data
while($row=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC))
{
    echo'<table>
    <tr><td><table> place data here</table></td></tr>

    <tr><td><table>or here </table></td></tr>

    <tr><td><table>or here, depending on what the data is</table></td></tr>

    </table>';
}
于 2012-11-12T17:38:54.103 回答
0

将您的代码替换为:

    <table>
    <?php
$i=0;
    while($row=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC))
    { $newDate = $row['datenow']->format('d/m/Y'); ?>

    $j=$i%3;
      ?>
      <?php
    if($j==0)
    {
      echo"<tr>";
    }
      ?>
    <td>
    <table id="syncresults">
    <thead>
        <tr>
            <th scope="col" id="dateheader"> <?php echo $newDate ?></th>
        </tr>
    </thead>

    <tbody>
        <tr>
            <td><?php echo $row['nbsactive']; ?></td>
        </tr>
        <tr>
            <td><?php echo $row['nbsmanysynced']; ?></td>
        </tr>
        <tr>
            <td><?php echo $row['nbsthreedays']; ?></td>
        </tr>
    </tbody></table>
    </td>
    <?php
    if($j==2)
    {
      echo"</tr><tr><td colspan='3'>&nbsp;</td></tr>";
    }
    $i++;
    }
    ?>
    </table>
于 2012-11-12T17:57:16.593 回答
0

这里没有足够的信息来说明您是否应该使用表格,因为您提供了非数据。

如果我们正在编写一个壁橱组织应用程序,我们的数据可能会像这样从数据库中出来:

John | Shoes | 3
John | Pants | 10
Sally | Shoes | 12
Sally | Pants | 8
Billy | Shoes | 4
Billy | Pants | 9
Kate | Shoes | 6
Kate | Pants | 6

但我们想像这样显示它:

Member | Shoes | Pants
John | 3 | 10
Sally | 12 | 8
Billy | 4 | 9
Kate | 6 | 6

我们会像这样编写我们的循环:

<table>
<tr>
<?
$last = null;
while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {
    if ($last != $row['member']) {
        if ($last) { // $last is null on our first pass through the loop, so don't print the tr's
?>
</tr>

<tr>
<?
        }
?>
    <td><?=$row['member']?></td>
<?
        $last = $row['member'];
    }
?>
    <td><?=$row['quantity']?></td>
<?
}
?>
</tr>
</table>

标头?好吧,通常我会建议循环两次并重置指针,但我没有看到您正在使用的接口的等价物mysql_data_seekpg_result_seek,所以我无法为您提供任何帮助。在结果的第一“行”上使用输出缓冲以及将所有标题作为数组收集的收集器变量可以在无需重置指针的情况下工作。

如果您只是想在 4 列中显示结果,因为您认为它看起来更漂亮,而不是因为它表示表格数据,那么使用 CSS 列将是更好的方法。

于 2012-11-12T18:41:31.040 回答
0
$th1="<tr>";
$td1="<tr>";
$td2="<tr>";
$td3="<tr>";

while($row=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) { 

    $newDate = $row['datenow']->format('d/m/Y');

    $th1.="<th scope='col' id='dateheader'>".$newDate."</th>";
    $td1.="<td>".$row['nbsactive']."</td>";
    $td2.="<td>".$row['nbsmanysynced']."</td>";
    $td3.="<td>".$row['nbsthreedays']."</td>";

}

$th1.="</tr>";
$td1.="</tr>";
$td2.="</tr>";
$td3.="</tr>";

$result="<table id='syncresults'>".$th1.$td1.$td2.$td3."</table>";
于 2012-11-20T08:39:57.897 回答