Php 生成具有动态行高的HTML表
我需要使用PHP根据数据库中的一些值动态打印一个带有行高设置的html表。HTML5似乎不支持内联高度和标签,而是使用css。 我的要求是生成一个html文件,然后使用DOM pdf将其转换为pdf 请指导我如何内联或使用css动态设置这些参数,或者库是否已用于相同目的 我在谷歌上搜索了很多,但找不到任何符合我要求的结果。 也可以附加最终输出格式 (在回答栏中,我打印了一些值,即每行所需的高度)Php 生成具有动态行高的HTML表,php,html,Php,Html,我需要使用PHP根据数据库中的一些值动态打印一个带有行高设置的html表。HTML5似乎不支持内联高度和标签,而是使用css。 我的要求是生成一个html文件,然后使用DOM pdf将其转换为pdf 请指导我如何内联或使用css动态设置这些参数,或者库是否已用于相同目的 我在谷歌上搜索了很多,但找不到任何符合我要求的结果。 也可以附加最终输出格式 (在回答栏中,我打印了一些值,即每行所需的高度) 提前感谢您可以使用内嵌样式: 我不确定您是否可以有效地设置标记的高度,因此您可能必须单独设置行中每
提前感谢您可以使用内嵌样式:
我不确定您是否可以有效地设置
标记的高度,因此您可能必须单独设置行中每个
的高度。试试看
此外,我不确定您的行和列数组是如何构造的,但这可能会对如何实现这一点有所帮助
<?php
$array=array(array(50,'r1c1','r1c2'),array(50,'r2c1','r2c2'));
echo '<table>';
foreach($array as $row)
{
echo '<tr style="height: '.$row[0].'px;">';
echo '</tr>';
for($i=1;$i<count($row);++$1)
{
echo '<td>'.$row[$i].'</td>';
}
}
echo '</table>';
?>
如果您仍然需要帮助,请将您希望转换为
的确切数组张贴出来,我会尽力提供帮助。如果我理解正确,您的表行可以彼此大小不同,但对于每一行,数据库中都有一条规则,即设置行的高度,无论行的内容有多高,对吗?然后,您可以使用如下内容:
<html>
<head>
<style>
<?php foreach($yourRows as $key => $row) { ?>
#row<?=$key;?>{
height: <?=$row['height']; ?>px;
}
<?php } ?>
</style>
</head>
<body>
<table>
<?php foreach($yourRows as $key => $row) { ?>
<tr id="row<?=$key; ?>">
...
</tr>
<?php } ?>
</table>
</body>
无论如何,如果要使用内联样式,可以按如下方式进行:
<html>
<body>
<table>
<?php foreach($yourRows as $row) { ?>
<tr style="height:<?=$row['height']; ?>px">
Or you can apply height to td instead of the tr...
</tr>
<?php } ?>
</table>
</body>
如果您认为jQuery可能在这里工作,那么这里有一个建议。我不确定它是否适用于DOMPDF,但当我们动态创建CSS时,一旦加载DOM,它就应该可以了
如果您确切地知道每行的高度,那么使用jQuery选择它们
这是你的电话号码
这样,您不必修改输出,但必须假设内容不会高于您的固定高度
如果需要更具动态性,则需要将标识符与行相关联,比如类或类似的东西。或者,如果您的内容中有一个模式是创建一个正则表达式来扫描您的内容并以这种方式对其进行标识,那么您可以在使用jQuery进行匹配后将CSS规则应用于这些行
编辑
好的,如果数据库中存储了高度值,我可能会有点误解。看起来您已经确定无法使用内联样式
这是我的下一个建议
您正在从一个循环构建表,因此它可能看起来像这样
foreach($rows as $row) {
echo '<tr data-height="'.$row['height'].'"><td>...</td></tr>;
}
下面是一个静态数据高度值的示例。让我知道你进展如何。你能在这里分享你的代码吗?你尝试了什么?@JoeBuckle当然可以。。有图书馆吗?你真的需要固定高度吗?如果您在表格中放入一些内容,表格行的高度会自动提高。@BastianRang请检查附件中的图像。一些答案栏需要更多的空间,所以我需要调整高度。因此,在我看来,它不依赖于内容高度(即,问题列),这种方法用许多必须匹配的规则污染了页面的CSS,这可能会干扰其他地方的CSS。我认为内联样式在这里更合适。teh1,这一点您可能是对的,但是使用该方法您还可以添加内联样式——这都是关于代码示例的。我也不喜欢这个解决方案,但正如梦中的代码所说,内联样式对他不起作用,所以我没有搜索可能的问题,这会阻止他应用内联样式,而是决定让它更简单,并给他另一个解决方案。我已经在查询中共享了所需的表输出图像。请参考图片。:)希望从那件事上看清楚image@CodeinDreams当然,我看到了图像,但这仍然不能确切说明数组的外观。数组在这里很重要,因为它指示如何创建循环。从那里您可以调整以指定输出的外观。内容高度不得高于固定高度。最小高度是内容高度。如果行的所需高度大于内容高度,则应基于数据库高度字段值。有没有办法将高度值动态地输入到给定的代码中?数据库高度字段是否存储在PHP变量中?我一到办公室就会添加编辑。我有个主意
$(document).ready(function() {
$('table tr').eq(1).css({'height':'250'});
$('table tr').eq(3).css({'height':'450'});
});
foreach($rows as $row) {
echo '<tr data-height="'.$row['height'].'"><td>...</td></tr>;
}
$(document).ready(function() {
$('table tr').each(function() {
var height = $(this).data('height');
$(this).css({ 'height': height });
});
});