PHP построил HTML-таблицу - PullRequest
0 голосов
/ 24 января 2011

Я использую приведенный ниже код для построения таблицы, но, поскольку значения в моей таблице базы данных постоянно увеличиваются, я делаю некоторые математические расчеты для определения различий в значениях (численно), но это испортило макет таблицыкак-то.Я включил снимок экрана, чтобы вы могли видеть, что первая строка под заголовком таблицы просто неверна.

$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 ]

3 голосов
/ 24 января 2011

Проблема исходит из этой строки:

 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>";
 }
0 голосов
/ 24 января 2011

Прежде всего, где определено $column?

$difference = $row[$column] - $previous;

секунда, это выполняется только на второй итерации

if (!$firstRun)
echo "<tr><td>" . date("G:i:s", strtotime($row["tstamp"])) . "</td>";

Это означает, что в первый раз в цикле while вы не создаете строку таблицы <tr> , хотя я предполагаю, что браузер может "исправить" отсутствующий тег, но это может быть причиной, по которой -32722 появляется в первом столбце.

0 голосов
/ 24 января 2011

Это ваше "если" утверждение. Он ничего не отображает при первом запуске, поэтому начальные значения tr и td не отображаются, поэтому в итоге получается неправильная строка (заканчивающаяся тегом / tr), содержащая только одно значение td Вы хотели заключить в скобки два эхо-оператора, чтобы они возникали только тогда, когда firstrun ложен?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...