Php 使用会话值绘制表

Php 使用会话值绘制表,php,html,mysql,html-table,background-color,Php,Html,Mysql,Html Table,Background Color,假设我有一个动态创建的表,其中填充了来自SELECT语句的MySQL数据库的数据 现在,我需要从表的外部访问在if子句内部定义的变量。为了做到这一点,我使用了一些$\u SESSION值,但当我尝试将此颜色应用于整行时,它会为所有表着色,而不是存储会话值的单行。我猜我还需要保存$RowCt值,但不知道如何保存 我处理这个问题已经有一段时间了,在不断地查看这个代码之后,我似乎有点盲目了。感谢您的帮助 代码: 不要太迂腐,但可能有更简单、更少让人头痛的方法来写这篇文章!但简而言之,我要说的是,你的

假设我有一个动态创建的表,其中填充了来自
SELECT
语句的MySQL数据库的数据

现在,我需要从表的外部访问在
if
子句内部定义的变量。为了做到这一点,我使用了一些
$\u SESSION
值,但当我尝试将此颜色应用于整行时,它会为所有表着色,而不是存储会话值的单行。我猜我还需要保存
$RowCt
值,但不知道如何保存

我处理这个问题已经有一段时间了,在不断地查看这个代码之后,我似乎有点盲目了。感谢您的帮助

代码:



不要太迂腐,但可能有更简单、更少让人头痛的方法来写这篇文章!但简而言之,我要说的是,你的代码就快到了。您的桌子是否根据一天中的时间以一种颜色显示?我想说的是,这与您的会话变量只有设置,而从不取消设置

这样的东西够了吗:

...
while($Row = mysql_fetch_assoc($Result))
{
    $timezone = new DateTimeZone( "Europe/London" );
    $date = new DateTime();
    $date->setTimezone( $timezone );
    $now = $date->format( 'H:i' );

    foreach($Row as $field => $value) {
        if ($field == 'b1') {
            if ($value > $now) {
                $Table.= "<td style='font-size:14px; background-color:YELLOW;' align='center'>$value</td>";
            } else {
                $Table.= "<td style='font-size:14px; background-color:WHITE;' align='center'>$value</td>";
            }
        } else if ($field == 'b2') {
            if ($value > $now) {
                $Table.= "<td style='font-size:14px; background-color:RED;' align='center'>$value</td>";
            } else {
                $Table.= "<td style='font-size:14px; background-color:WHITE;' align='center'>$value</td>";
            }
        } else {
            $Table.= "<td style='font-size:14px; background-color:WHITE;' align='center'>$value</td>";
        }
    }
    $Table.= "</tr>";
}
...
。。。
while($Row=mysql\u fetch\u assoc($Result))
{
$timezone=新日期时区(“欧洲/伦敦”);
$date=新的日期时间();
$date->setTimezone($timezone);
$now=$date->format('H:i');
foreach($行作为$字段=>$值){
如果($field=='b1'){
如果($value>$now){
$Table.=“$value”;
}否则{
$Table.=“$value”;
}
}else if($field=='b2'){
如果($value>$now){
$Table.=“$value”;
}否则{
$Table.=“$value”;
}
}否则{
$Table.=“$value”;
}
}
$Table.=”;
}
...
对不起,如果我把颜色弄混了!;)希望这能帮你找到正确的方向

编辑:

查看下面注释的PHP代码,以获得每3行切换颜色的解决方案(希望我做对了-写得非常快!)

。。。
//这就是我对这段代码的理解
//基于原始代码的外观和原始
//问题突出了。。。
//基于您调用行和检查字段的方式
//值'b1'和'b2',我在这里假设
//“b1”和“b2”将始终同时存在于您分析的每一行中。也许你
//不应检查“$field”变量是否与“b1”等效
//还是“b2”,而是“$value”变量?不管怎样,我要扔了
//此代码用于您的“$RowCt”问题,它将在
//3种颜色…我希望它有帮助。。。
$RowCt=0;
while($Row=mysql\u fetch\u assoc($Result))
{
//抓紧时间,一切正常。。。
$timezone=新日期时区(“欧洲/伦敦”);
$date=新的日期时间();
$date->setTimezone($timezone);
$now=$date->format('H:i');
//增加计数器,计算出颜色。。。
$RowCt++;
$background_color='白色';
如果($RowCt%3==1)
$background_color='red';
如果($RowCt%3==2)
$background_color='yellow';
$Table.=”;
foreach($行作为$字段=>$值)
$Table.=“$value”;
$Table.=”;
}
...

没有回答您最初的问题,但请先尝试清理代码。它是可读的,但有很多冗余。P.e.
foreach
-循环有多个条件,所有这些条件都会导致相同的结论(
表=“谢谢你的回答。我会尽量简化它,即使它不是我的原始代码。更多关于原始问题,我不认为它只是css问题,这就是我以这种方式发布它的原因。”在我检查它的时候完成了,所以谢谢。但是,这只会绘制那些字段(使用正确的颜色,一旦我更改了混合的颜色;P)而不是整行。谢谢:)顺便说一句,关于你发布的问题。我想我在原始问题上已经清楚了,但它愿意在定义的颜色(黄色/红色/白色)上显示整行当该行中的某个字段的值大于实际时间时。哈哈,没问题!好吧,既然这不是您的代码,那么重新编写它可能不仅有助于简化它,而且有助于解决问题。如果您执意使用原始代码,我可能会在设置特定的会话变量时尝试取消设置其他会话变量,否则请不要尝试他将行背景颜色切换到上面的我的代码:)是的,正在处理它。清除了会话,现在没有运气;返回到第一段原始代码(添加了您的代码),我认为我应该为满足条件的行保存
$RowCt
值。知道如何操作吗?例如,发布
if($RowCt++%2==0)$Style=“背景色:#FFFFFF;”else$Style=“背景色:#0099CC;"
将返回行颜色替换。如何修改变量定义上的颜色行?没问题,Alex,我希望我在上面的编辑中的示例能有所帮助,因为我开始感觉到您对PHP非常陌生,需要帮助!除了真正花时间完全为您编写外,我不确定是什么(我也做不到!)
...
while($Row = mysql_fetch_assoc($Result))
{
    $timezone = new DateTimeZone( "Europe/London" );
    $date = new DateTime();
    $date->setTimezone( $timezone );
    $now = $date->format( 'H:i' );

    foreach($Row as $field => $value) {
        if ($field == 'b1') {
            if ($value > $now) {
                $Table.= "<td style='font-size:14px; background-color:YELLOW;' align='center'>$value</td>";
            } else {
                $Table.= "<td style='font-size:14px; background-color:WHITE;' align='center'>$value</td>";
            }
        } else if ($field == 'b2') {
            if ($value > $now) {
                $Table.= "<td style='font-size:14px; background-color:RED;' align='center'>$value</td>";
            } else {
                $Table.= "<td style='font-size:14px; background-color:WHITE;' align='center'>$value</td>";
            }
        } else {
            $Table.= "<td style='font-size:14px; background-color:WHITE;' align='center'>$value</td>";
        }
    }
    $Table.= "</tr>";
}
...
...

// so this is my understanding of what I think this code must do
// based on what your original code looks like and what your original
// question was highlighting...

// based on how you're calling the rows and checking the fields for
// values 'b1' and 'b2', I'm making an assumption here that the fields
// 'b1' and 'b2' will always both exist in every row you parse. Maybe you
// shouldn't be checking the '$field' variable for equivalence to 'b1'
// or 'b2', but rather the '$value' variable? Regardless, I'm throwing down
// this code for the '$RowCt' question you had, it will alternate between the
// 3 colours...I hope it helps...

$RowCt = 0;
while($Row = mysql_fetch_assoc($Result))
{
    // get the time, that's all working ok...
    $timezone = new DateTimeZone( "Europe/London" );
    $date = new DateTime();
    $date->setTimezone( $timezone );
    $now = $date->format( 'H:i' );

    // increase the counter, work out the colour...
    $RowCt++;

    $background_color = 'white';
    if ($RowCt % 3 == 1)
        $background_color = 'red';
    if ($RowCt % 3 == 2)
        $background_color = 'yellow';

    $Table.="<tr style='background-color:". $background_color .";'>";

    foreach($Row as $field => $value)
        $Table.= "<td style='font-size:14px;' align='center'>$value</td>";

    $Table.= "</tr>";
}

...