Создание красочной таблицы из файла CSV с помощью php - PullRequest
0 голосов
/ 11 марта 2011

Прежде всего, я хотел бы сказать, что я только начинаю с PHP, поэтому, пожалуйста, будьте добры. То, что я пытаюсь сделать, это распечатать таблицу из CSV-файла. Первый ряд я хочу выделить жирным шрифтом на сером фоне. Следующие строки должны чередоваться с белым и зеленым фоном с текстом, который не выделен жирным шрифтом. Ниже моя попытка, но она просто создает таблицу со всем жирным текстом, имеющим серый фон

<?php
echo "<html><body><table>\n\n";
$f = fopen("acsv.csv", "r");

$green = "#DDFFCC";
$white = "#FFFFFF";
$grey = "#EEEEEE";
$color = "#EEEEEE";
echo "<table border=1 cellpadding=4 cellspacing=0>";
echo "<tr>";



while (($line = fgetcsv($f)) !== false) {


        foreach ($line as $cell) {
                if ($color = "#EEEEEE"){
                    echo "<td bgcolor= ".$color."><b>" . htmlspecialchars($cell) . "</b></td>";
                }
                else{
                    echo "<td bgcolor= ".$color.">" . htmlspecialchars($cell) . "</td>";
                }

        }
        echo "<tr>\n";

        switch($color){
            case "#EEEEEE":
                $color = "#FFFFFF";
                break;
            case "#FFFFFF":
                $color = "#DDFFCC";
                break;
            case "#DDFFCC":
                $color = "#FFFFFF";
                break;
        }
}
fclose($f);
echo "\n</table></body></html>";

EDIT:

Я также хотел бы знать, как определить цвета со значимыми именами, чтобы сделать код более читабельным

Ответы [ 3 ]

3 голосов
/ 11 марта 2011

Чтобы проверить, установлено ли для $ color значение "#EEEEEE", вам нужно использовать двойное равенство (==) в вашем if выражении , аналогично C / C ++ / C #. В противном случае вы просто говорите PHP установить $ color в "#EEEEEE".

if ($color == "#EEEEEE"){ 
0 голосов
/ 11 марта 2011

Вам необходимо закрыть теги:

foreach ($line as $cell) {
                if ($color = "#EEEEEE"){
                    echo "<td bgcolor= ".$color."><b>" . htmlspecialchars($cell) . "</b></td>";
                }
                else{
                    echo "<td bgcolor= ".$color.">" . htmlspecialchars($cell) . "</td>";
                }

        }
        echo "`</tr>`<tr>\n";
0 голосов
/ 11 марта 2011

Оператор switch должен находиться внутри foreach, иначе цвета изменятся только после завершения цикла.

<?php
echo "<html><body><table>\n\n";
$f = fopen("acsv.csv", "r");

$green = "#DDFFCC";
$white = "#FFFFFF";
$grey = "#EEEEEE";
$color = "#EEEEEE";
echo "<table border=1 cellpadding=4 cellspacing=0>";
echo "<tr>";



while (($line = fgetcsv($f)) !== false) {


        foreach ($line as $cell) {
        if ($color == "#EEEEEE"){
                echo "<td bgcolor= ".$color."><b>" . htmlspecialchars($cell) . "</b></td>";
            }
            else{
                echo "<td bgcolor= ".$color.">" . htmlspecialchars($cell) . "</td>";
            }
        switch($color){
            case "#EEEEEE":
                $color = "#FFFFFF";
                break;
            case "#FFFFFF":
                $color = "#DDFFCC";
                break;
            case "#DDFFCC":
                $color = "#FFFFFF";
                break;
        }



        }
        echo "</tr><tr>\n";

}
fclose($f);
echo "\n</table></body></html>";
...