根据php中的值格式化单元格

时间:2019-04-02 10:24:32

标签: javascript php html

我有2个文本文件,并使用php将其内容读入2个数组中。然后,我创建一个表格并将其显示在我的网站上。我现在想根据特定值为数组2(第2列)中的每个单元格着色。

例如:

  

如果array2中的值包含“忙”,则应将其格式化为红色,如果   它包含“可用”,应格式为绿色。

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <form action="" method="post" class="formbody">
        <div class="codetable">
        <?php
            $file1 = "c:/presencetool/ramfile1.txt";
            $file2 = "c:/presencetool/ramfile2.txt";
            $line1= file($file1, FILE_IGNORE_NEW_LINES);
            $line2 = file($file2, FILE_IGNORE_NEW_LINES);
            $combine = array_combine($line1, $line2);   
            $html = "<table align=center>";
            $html .= "<tr><td width=300px></td><td></td></tr>";
            $i = 1;
            foreach ($combine as $file1 =>  $file2):
                $html .= "<tr>";
                $html .= "<td>".$file1."</td>";
                $html .= "<td>".$file2."</td>";
                $html .= "</tr>";
                $i++;
            endforeach;
            $html .= "</table>";
            echo $html;
        ?>
        <div class="codelabel"> 
        </div>
        </div>
    </form>
</body>
</html>

我尝试了一些可能的解决方案,但无法将其投入工作。 有任何想法吗?如果我需要提供任何信息,请询问。

编辑: ramfile 1&2的内容:

ramfile1:

  

User @ 1

     

User @ 2

     

User @ 3

     

...

     

User @ n

ramfile2:

  

     

     

可用

     

     

...

2 个答案:

答案 0 :(得分:1)

<?php
$path = $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'demo'.DIRECTORY_SEPARATOR;

$file1 = $path.'ramfile1.txt';
$file2 = $path.'ramfile2.txt';

if(file_exists($file1) && file_exists($file2)) {
    $line1= file($file1, FILE_IGNORE_NEW_LINES);
    $line2 = file($file2, FILE_IGNORE_NEW_LINES);
    $combine = array_combine($line1, $line2);

    $html = '<table align="center">';
    $html .= '<tr><td width="300px"></td><td></td></tr>';
    $i = 1;
    foreach ($combine as $key => $value):
        $html .= '<tr class="'.$value.'">';
        $html .= '<td>'.$key.'</td>';
        $html .= '<td>'.$value.'</td>';
        $html .= '</tr>';
        $i++;
    endforeach;
    $html .= '</table>';
    echo $html;
}
?>
<style>
    .Busy { background-color: #f2a179;}
    .Available { background-color: #00ff00;}
</style>

答案 1 :(得分:0)

  

foreach($ combine作为$ file1 => $ file2):

此行完全没有意义。它可能会运行,但不会执行您描述的操作。我想你真的想要这样的东西。...

DECLARE @sql NVARCHAR(max)=''

SELECT @sql = @sql + N' ALTER SEQUENCE ' + s.name + N'.' +sq.name 
                   + N' RESTART WITH '+ cast (cast(sq.current_value as bigint) + cast(sq.increment as bigint) AS NVARCHAR(20))
                   + CHAR(10) + CHAR(13)    
FROM sys.sequences sq
join sys.schemas s on s.schema_id = sq.schema_id

PRINT @sql

但是,您要根据行号在一个文件中解析另一个文件中的数据,这是对数据结构的非常糟糕的选择。

  

如果array2中的值包含“忙”,则应将其格式化为红色,如果包含“可用”,则应将其格式化为绿色。

有很多方法可以做到这一点。您可以调用一个函数。...

foreach ($file1 as $i=>$value) {
            $html .= "<tr>";
            $html .= "<td>".$file1[$i]."</td>";
            $html .= "<td>".$file2[$i]."</td>";
            $html .= "</tr>";
}

或者您可以使用依赖注入,也可以使用数组查找。或者,您可以简单地基于该值声明CSS类,并将该值注入为TD的类名称(但请记住,这允许控制数据的人将html / javascript注入您的页面:

$bgcolor=lookup_css_class($file2[$i]);
$html .= "<td class='$bgcolor'>$file2[$i]</td>";