我正在使用下面的代码来构建一个表,但是由于我的数据库表中的值不断递增,我正在做一些数学计算值的差异(数字),但这搞砸了表格布局不知何故。我已经包含了一个屏幕截图,因此您可以看到表格标题下方的第一行不正确。
$column
是用户的$_GET
值。
$sql = "select * from (select * from mash order by tstamp desc limit 10) s order by s.id";
$result = mysql_query($sql);
$previous = 0;
$firstRun = true;
echo "<table id='dataTable' border='1'>";
echo "<tr><th>Date</th>
<th>Value</th></tr>";
while($row = mysql_fetch_array($result)){
$difference = $row[$column] - $previous;
if (!$firstRun)
echo "<tr><td>" . date("G:i:s", strtotime($row["tstamp"])) . "</td>";
echo "<td>" . $difference . "</td></tr>";
$previous = $row[$column];
$firstRun = false;
}
echo "</table>";
我的问题:任何人都可以从代码中找到,为什么第一行会像这样出现?
答案 0 :(得分:3)
问题来自这一行:
if (!$firstRun)
echo "<tr><td>" . date("G:i:s", strtotime($row["tstamp"])) . "</td>";
如果您不想显示第一行,请使用括号:
if (!$firstRun){
echo "<tr><td>" . date("G:i:s", strtotime($row["tstamp"])) . "</td>";
echo "<td>" . $difference . "</td></tr>";
}
答案 1 :(得分:0)
这是你的“if”陈述。它在第一次运行时不会回显任何内容,因此起始tr和td不会被回显,因此最终会出现一个不正确的行(以/ tr标记结尾),其中只包含一个td值。你的意思是在两个echo语句周围放置括号,以便它们只在firstrun为假时发生吗?
答案 2 :(得分:0)
首先,$column
定义在哪里?
$difference = $row[$column] - $previous;
第二,这仅在第二次迭代时执行
if (!$firstRun)
echo "<tr><td>" . date("G:i:s", strtotime($row["tstamp"])) . "</td>";
这意味着第一次在while循环中,你没有创建表行<tr>
,虽然我猜测浏览器能够“修复”丢失的标签,但这就是原因为什么-32722
出现在第一列。