【发布时间】:2011-02-16 16:42:23
【问题描述】:
我有一张无法正确调整大小的桌子。该表通过循环填充来自数据库的信息。有时,如果数据太长,表格会超出应有的位置。当数据很长时,我希望数据包含在单元格中,以便表格保持在应有的位置。我已经尝试过正常的表格数据,但它不起作用。有什么想法吗?
<?php
echo "<table>
<tr>
<th>id</th>
<th>700-number</th>
<th>First name</th>
<th>Last name</th>
<th>Email</th>
<th>Response</th>
<th>Created On</th>
</tr>";
$num = mysql_num_rows($result);
for ($i = 0; $i < $num; $i++)
{
$row = mysql_fetch_array($result);
$id = $row['id'];
$school_id = $row['school_id'];
$fname = $row['first_name'];
$lname = $row['last_name'];
$email = $row['email'];
$attending = ($row['attending'] == 0) ? 'No' : 'Yes';
$date = $row['created_on'];
$class = (($i % 2) == 0) ? "td2" : "td1";
echo "<tr>";
echo "<td class=" . $class . ">$id</td>";
echo "<td class=" . $class . ">$school_id</td>";
echo "<td class=" . $class . ">$fname</td>";
echo "<td class=" . $class . ">$lname</td>";
echo "<td class=" . $class . ">$email</td>";
echo "<td class=" . $class . ">$attending</td>";
echo "<td class=" . $class . ">$date</td>";
echo "</tr>";
}
?>
</table>
编辑
此表格显示在固定为 800 像素宽的容器中,因此无法为表格设置百分比。我想将其设置为特定的像素大小,例如 600 像素。我也不想编辑 CSS,我想通过修改我发布的代码来修复大小。
编辑
必须有人知道这个问题的答案。到目前为止,我已经在 HTML 和 CSS 中尝试了所有建议,但无济于事。我知道它必须是我的代码的一些小问题,而我只是没有看到(即打开标签、缺少分号、应该是双引号的单引号等)。我一直在使用萤火虫试图追查这个问题的原因,我发现当我从 CSS 类 .td1 和 .td2 中删除所有数据时,我指定的宽度很好。宽度会被 CSS 类弄乱是否有某种原因?
编辑
终于可以使用自动换行和手动调整标签大小了。这是正确的代码:
<table>
<tr>
<th width="16px">ID</th>
<th width="81px">700<br />Number</th>
<th width="90px">First<br />Name</th>
<th width="90px">Last<br />Name</th>
<th width="181px">E-Mail</th>
<th width="74px">Attending</th>
<th width="82px">Created<br />On</th>
</tr>
<?php
$num = mysql_num_rows($result);
for ($i = 0; $i < $num; $i++)
{
$row = mysql_fetch_array($result);
$id = $row['id'];
$school_id = $row['school_id'];
$fname = $row['first_name'];
$lname = $row['last_name'];
$email = $row['email'];
$attending = ($row['attending'] == 0) ? 'No' : 'Yes';
$date = $row['created_on'];
$wrap_id = wordwrap($id, 4, "\n", TRUE);
$wrap_school_id = wordwrap($school_id, 9, "\n", TRUE);
$wrap_fname = wordwrap($fname, 10,"\n", TRUE);
$wrap_lname = wordwrap($lname, 10, "\n", TRUE);
$wrap_email = wordwrap($email, 20, "\n", TRUE);
$wrap_attending = wordwrap($attending, 3, "\n", TRUE);
$wrap_date = wordwrap($date, 10, "\n", TRUE);
$class = (($i % 2) == 0) ? "td2" : "td1";
echo "<tr>";
echo "<td class=" . $class . ">$wrap_id</td>";
echo "<td class=" . $class . ">$wrap_school_id</td>";
echo "<td class=" . $class . ">$wrap_fname</td>";
echo "<td class=" . $class . ">$wrap_lname</td>";
echo "<td class=" . $class . ">$wrap_email</td>";
echo "<td class=" . $class . ">$wrap_attending</td>";
echo "<td class=" . $class . ">$wrap_date</td>";
echo "</tr>";
}
?>
</table>
【问题讨论】:
-
只是一个旁注,而不是一个答案:你为什么不使用
while (false !== ($row = mysql_fetch_array($result)))?比这个诡计好。 -
粘贴你使用 worwrap 函数的方法,看看它对你不起作用......
-
查看最新编辑的答案......
标签: php html html-table