Может я конечно не в ту ветку зашла, тогда прогоните меня по правильному пути. В общем формирую таблицу я следующим образом: Код (Text): if ($_POST['selectab']) { echo '<table border="1"><tr><td><b>PROJECT</b></td><td><b>DATA1</b></td><td><b>DATA2</b></td><td><b>DATA3</b></td><td><b>DATA4</b></td><td><b>TOTAL</b></td></tr>'; foreach ($result as $row) { echo '<tr><td>' . $row['PROJECT'] . '</td><td align="right">' . $row['DATA1'] . '</td><td align="right">' . $row['DATA2'] . '</td><td align="right">' . $row['DATA3'] . '</td><td align="right">' . $row['DATA4'] . '</td><td align="right">' . $row['TOTAL'] .'</td></tr>' ; } echo '</table>'; } else Все данные берутся из базы sqlite. Туда данные я загоняю в RedHat обычным скриптом. Я в php-то ещё новичок, а уж в стилях вообще туга на оба уха. Есть 2 проблемы: Основная: Если в столбце DATA1 (данные по каждому проекту хранятся в 4 директориях) попадаются пустые клетки, то эти клетки надо помечать другим цветом. Если такая проверка или триггер или стиль уж слишком сложен, то задачу можно упростить - просто раскрашивать ВСЕ пустые клетки одним цветом, чтобы наглядно было видно, что в этих директориях данных нет. Дополнительная: Я в базу данных загоняю размеры директорий в килобайтах. Как их выводить в мегабайтах? (точность не важна - можно хоть округлять, можно хоть обрезать последние три цифры, но бывают директории менее мегабайта) И как разбивать число на разряды по тысячам? Ибо есть директории размером в терабайты, чтобы в таблице было число не 2345678, а 2 345 678.
ну? и в чем сложность? PHP: <?php if (!$row['DATA1']) { $class = 'red'; } else { $class = 'blue; } echo '<td class="' . $class . '">' . $row['DATA1'] . '</td>'; В подключаемом css надо прописать [css].red { background-color:red; } .blue { background-color:blue; }[/css]
Ну и ничего не раскрашивается. Я стиль прямо в файл внедрила: [css]<style type="text/css"> .red { background-color:#FF0000; } .blue { background-color:#0000FF; } </style>[/css] А вот какое php вышло: PHP: if ($_POST['selectab']) { echo '<table border="1"><tr><td><b>PROJECT</b></td><td><b>DATA1</b></td><td><b>DATA2</b></td><td><b>DATA3</b></td><td><b>DATA4</b></td><td><b>TOTAL</b></td></tr>'; foreach ($result as $row) { if (!$row['DATA1']) { $class = 'red'; } else { $class = 'blue'; } echo '<tr><td>' . $row['PROJECT'] . '</td><td align="right">' . $row['DATA1'] . '</td><td align="right">' . $row['DATA2'] . '</td><td align="right">' . $row['DATA3'] . '</td><td align="right">' . $row['DATA4'] . '</td><td align="right">' . $row['TOTAL'] .'</td></tr>' ; } echo '</table>'; } else Чего-то я не в то место своими кривыми ручонками вставила что ли?
Пересматриваю. Вы пишете if (!$row['DATA1']) я так понимаю это означает, что если в ячейке DATA1 есть значение, то устанавливаем $class = 'red' в красный цвет, иначе $class = 'blue' в синий цвет. Ставлю я естественно это после того как начался цикл, но до вывода данных. Может вся эта конструкция не понимает, что я делаю таблицу? Может для неё echo '<tr><td>' . $row['PROJECT'] . '</td><td align="right">' . $row['DATA1'] . - просто вывод символов и откуда ей знать где там бэкграунд?
Тупая я тупая! Или невнимательная. Спасибо! Окрасила. А с форматами чисел не подскажите, чтоб не создавать ещё одну тему? Или создавать?
http://ua2.php.net/manual/en/function.number-format.php С делением/округлением уж как-нибудь разберитесь самостоятельно.
И так ... что же у меня не выходит? number_format($row['DATA1'], $thousands_sep=" ") работает, разделяет тысячи НО только запятыми. Хоть я ставлю $thousands_sep=" ", хоть$thousands_sep=",", хоть могу $thousands_sep="ля-ля-ля" поставить - всё равно тысячи разделяются только запятыми. Деление я так понимаю надо делать через gmp. Пишу следующее: PHP: foreach ($result as $row) { $data1=gmp_div_q($row['DATA1'], "1024" [, int round]); echo '<tr><td>' . $row['PROJECT'] . '</td><td class="' . $class . '" align="right">' . gmp[strval($data1)] . '</td><td align="right">' . $row['DATA2'] . '</td><td align="right">' . $row['DATA3'] . '</td><td align="right">' . $row['DATA4'] . '</td><td align="right">' . $row['TOTAL'] .'</td></tr>' ; } echo '</table>'; } else Выдаётся ошибка: [Thu Apr 01 12:24:44 2010] [error] [client 193.200.56.73] PHP Parse error: syntax error, unexpected '[' in C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\oneday.php on line 225, referer: http://init0/oneday.php И ничего не рисует. Где у меня что со скобками? Не вижу. Хорошо! Убираем [, int round] - раз проблема в этой строке. Теперь жалуется на следующую строку: [Thu Apr 01 12:28:18 2010] [error] [client 193.200.56.73] PHP Parse error: syntax error, unexpected '[', expecting ',' or ';' in C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\oneday.php on line 226, referer: http://init0/oneday.php И ничего не рисует. Заменяем gmp[strval($data1)] на просто $data1 и получаем: [Thu Apr 01 12:30:13 2010] [error] [client 193.200.56.73] PHP Notice: Undefined variable: row in C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\oneday.php on line 217, referer: http://init0/oneday.php [Thu Apr 01 12:30:13 2010] [error] [client 193.200.56.73] PHP Fatal error: Call to undefined function gmp_div_q() in C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\oneday.php on line 225, referer: http://init0/oneday.php но в этот раз рисуется заголовок, хотя на его прорисовку (217 строка) как раз идёт жалоба: echo '<b>'. $row['DATA'] .'</b><br><table border="1"><tr><td><b>PROJECT</b></td><td><b>DATA1</b></td><td><b>DATA2</b></td><td><b>DATA3</b></td><td><b>DATA4</b></td><td><b>TOTAL</b></td></tr>'; С функцией gmp_div тоже самое. В общем чего-то не делится у меня. Может вовсе не gmp надо применять?
Так, поставила number_format($row['DATA1'], 0, ",", $thousands_sep=" ") и всё получилось, но считаю, что это извращение - мне не нужны те два параметра, а вот тут: http://www.spravkaweb.ru/php/datafun/math/system написано: "Эта функция форматирует число с плавающей точкой с разделением его на триады с указанной точностью. Она может быть вызвана с двумя или четырьмя аргументами, но не с тремя!" Что-то про вариант с двумя аргументами они преврали.
Я тупаяяяяяяяя! НО $big1=gmp_div_q($row['BIGSAN1'], "1024" , GMP_ROUND_PLUSINF) и $big1=gmp_div_q($row['BIGSAN1'], "1024" , int GMP_ROUND_PLUSINF) всё равно: [Thu Apr 01 12:57:48 2010] [error] [client 193.200.56.73] PHP Parse error: syntax error, unexpected T_ECHO in C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\oneday.php on line 226, referer: http://init0/oneday.php
В общем с форматом команд разобралась. И даже запускаю стандартные примеры: Call to undefined function gmp_div_q() Call to undefined function gmp_divexact() Видимо gmp надо где-то включать.
Да это просто сказка какая-то! Огромное спасибо! И деление сделала и сумму в конце таблицы. Но жадность фраера сгубит - теперь захотелось округление. Хотя ... оно мне надо? Но думаю для порядку надо бы научиться округлению и пользованию gmp.
Есть то оно есть, но пока разберёшься как нужная функция должна называться. Сначала на round насела, но пока поняла, что PHP_ROUND_HALF_UP только для цифры 5 катит - полдня прошло. Применила ceil. Спасибо!