繁体   English   中英

分裂长PHP生成的HTML表?

[英]Splitting Long php generated HTML table?

我使用MySql查询从数据库中选择数据,然后以HTML Table的形式打印。 它工作正常,很好,但是有时表包含数百行,并且网页看起来异常笨拙。 有没有一种方法可以将桌子并排分成两半或三半。

当前输出

在此处输入图片说明

所需的输出

在此处输入图片说明

PHP

<?php
....
echo "<h3>Classes attended :</h3>";
echo "<table class='dates' border='1'>";

 foreach ($results as $dates) {

    echo "<tr><td width='50%'>";
    echo $dates->db_date;
    echo "</td>";
    echo "<td width='50%'>";
    echo $dates->day_name;
    echo "</td>";
    echo "</tr>";

}
echo "</table>";
?>

最好的方法是什么? 帮助将不胜感激。

您可以使用PHP来确定循环索引是否可以被某个数字整除,例如:

echo "<h3>Classes attended :</h3>";
echo "<table class='dates' border='1'>";
$rowCount = 1;
$numRows = count($results);
$maxRows = 12;

foreach ($results as $dates) {

    echo "<tr><td width='50%'>";
    echo $dates->db_date;
    echo "</td>";
    echo "<td width='50%'>";
    echo $dates->day_name;
    echo "</td>";
    echo "</tr>";
    if($rowCount % $maxRows == 0 && $rowCount != $numRows)  {
       echo "</table><table class='dates' border='1'>";
    }
    $rowCount ++;
}

echo "</table>";

这就是这样做的基础。 基本上,在循环中,您正在测试每个索引,以查看是否可以将其用$ maxRows整除,如果是,则将关闭表并打开一个新索引。 您必须添加样式以将表并排放置。

如果您想扩展此概念,可以将$ maxRows设置为$ numRows的评估。 例如,如果您想将项目尽可能地分成两半以便只显示两个表,则可以执行以下操作: $numRows = count($results); $maxRows = round($numRows / 2); $numRows = count($results); $maxRows = round($numRows / 2);

受到罗伯特·韦德(Robert Wade)的回答的启发:

<?php
....
echo "<h3>Classes attended :</h3>";

 $i=0;
 $maxRows=10;
 foreach ($results as $dates) {
    $a=$i/$maxRows == 0 ? "<table class='dates' border='1'>":"";
    $b=$i/$maxRows == 0 ? "</table>":"";

    echo $a;
    echo "<tr><td width='50%'>";
    echo $dates->db_date;
    echo "</td>";
    echo "<td width='50%'>";
    echo $dates->day_name;
    echo "</td>";
    echo "</tr>";
    echo $b;

    $i++;
}
?>

最后,在表中添加一些CSS样式。

您也可以使用array_chunk()拆分结果。 或者,您可以进行分页并仅在查询中获得一些范围,而不必彼此相邻放置许多表。 例如:

SELECT * FROM `clients` LIMIT 5, 10 

从第5行开始选择10行。现在,当您更改页面时,只需更改限制值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM