PHP构建了html表

时间:2011-01-24 16:57:30

标签: php html math html-table

我正在使用下面的代码来构建一个表,但是由于我的数据库表中的值不断递增,我正在做一些数学计算值的差异(数字),但这搞砸了表格布局不知何故。我已经包含了一个屏幕截图,因此您可以看到表格标题下方的第一行不正确。

$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>";

enter image description here

我的问题:任何人都可以从代码中找到,为什么第一行会像这样出现?

3 个答案:

答案 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出现在第一列。