2011-01-24 4 views
0

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

$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

Мой вопрос: Может ли кто-нибудь место из кода, почему первый ряд вышли бы, как это?

+0

В настоящее время? Возможно, было бы хорошо видеть, какой HTML он производит – Chris

+0

@ Крис, боится не fella, его чувствительные данные клиента, вот почему я ограничен помещением скриншота :( – benhowdle89

+0

Что вы хотите сделать «if (! $ FirstRun)» В этом случае вы просто удаляете начало строки и первую ячейку, поэтому ваша первая строка перепутана – Nabab

ответ

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>"; 
} 
+0

Thanks Nabab, вы получили его! – benhowdle89

0

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

0

в первую очередь, где определяется $column?

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

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

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

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

+0

$ column - значение $ _GET от пользователя. – benhowdle89

Смежные вопросы