Допустим, у меня есть динамически созданная таблица, которая заполнена данными из базы данных MySQL из предложения SELECT
.
Теперь мне нужно получить доступ к переменной, определенной внутри предложения if
внутри таблицы, снаружи. Для этого я использую некоторые значения $_SESSION
, но когда я пытаюсь применить эту раскраску ко всей строке, она окрашивает всю таблицу вместо одной строки, в которой хранится значение сеанса. Я предполагаю, что мне нужно сохранить также значение $RowCt
, но не знаю, как.
Я уже давно сталкиваюсь с этой проблемой и, похоже, я немного ослеп, когда постоянно смотрю на этот код. Любая помощь приветствуется.
Код:
<?php include("../includes/header.php")?>
<div class="content" align="center">
<?php
function SQLResultTable($Query)
{
$link = mysql_connect("localhost", "...", "...") or die('Could not connect: ' . mysql_error());
mysql_select_db("...") or die('Could not select database');
$Table = "";
$Table.= "<table border='0' align='center'>";
$Result = mysql_query($Query); //Execute the query
if(mysql_error())
{
$Table.= "<tr><td>MySQL ERROR: " . mysql_error() . "</td></tr>";
}
else
{
//Header Row with Field Names
$NumFields = mysql_num_fields($Result);
$Table.= "<tr style=\"background-color: #D00000; float:center; font-size:14px; color: #FFFFFF;\" align='center'>";
for ($i=0; $i < $NumFields; $i++)
{
if ((mysql_field_name($Result, $i))=="a1") { $Table.= "<th>a1</th>";
} else if ((mysql_field_name($Result, $i))=="a2") { $Table.= "<th>a2</th>";
} else if ((mysql_field_name($Result, $i))=="a3") { $Table.= "<th>a3</th>";
} else if ((mysql_field_name($Result, $i))=="a4") { $Table.= "<th>a4</th>";
} else if ((mysql_field_name($Result, $i))=="a5") { $Table.= "<th>a5</th>";
} else if ((mysql_field_name($Result, $i))=="a6") { $Table.= "<th>a6</th>";
} else if ((mysql_field_name($Result, $i))=="a7") { $Table.= "<th>a7</th>";
} else if ((mysql_field_name($Result, $i))=="a8") { $Table.= "<th>a8</th>";
} else if ((mysql_field_name($Result, $i))=="a9") { $Table.= "<th>a9</th>";
} else if ((mysql_field_name($Result, $i))=="a10") { $Table.= "<th>a10</th>";
} else if ((mysql_field_name($Result, $i))=="a11") { $Table.= "<th>a11</th>";
} else if ((mysql_field_name($Result, $i))=="a12") { $Table.= "<th>a12</th>";
} else { $Table.= "<th>" . mysql_field_name($Result, $i) . "</th>"; }
}
$Table.= "</tr>";
$RowCt = 0;
while($Row = mysql_fetch_assoc($Result))
{
$timezone = new DateTimeZone( "Europe/London" );
$date = new DateTime();
$date->setTimezone( $timezone );
$now = $date->format( 'H:i' );
if (!isset($_SESSION['b2'])) {
$Table.="<tr style='background-color:red;'>";
} else if (!isset($_SESSION['b1'])) {
$Table.="<tr style='background-color:yellow;'>";
} else {
$Table.="<tr style='background-color:white;'>";
}
foreach($Row as $field => $value) {
if ($field == 'b1') {
if ($value > $now) {
$_SESSION['b1'] = $b1;
$Table.= "<td style='font-size:14px;' align='center'>$value</td>";
} else {
$Table.= "<td style='font-size:14px;' align='center'>$value</td>";
}
} else if ($field == 'b2') {
if ($value > $now) {
$_SESSION['b2'] = $b2;
$Table.= "<td style='font-size:14px;' align='center'>$value</td>";
} else {
$Table.= "<td style='font-size:14px;' align='center'>$value</td>";
}
} else {
$Table.= "<td style='font-size:14px;' align='center'>$value</td>";
}
}
$Table.= "</tr>";
}
$Table.= "<tr style=\"background-color: #FFFFFF; font-size:10px; color: #000000;\"><td colspan='$NumFields'><br />Query returned " . mysql_num_rows($Result) . " result(s).</td></tr>";
}
$Table.= "</table>";
return $Table;
}
?>
<?php
echo "<div align='center'><u><strong><a href='index.php'>Query Results</a></strong></u></div>";
echo SQLResultTable("SELECT a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12 FROM test_db ORDER BY a6");
?>
</div>
Теперь значение $now
возвращает фактический час, т.е. 08:30; и $value
в полях b1
и b2
возвращает аналогичное значение в том же формате, который хранится в предыдущей форме.
Дело в том, что: когда поздно (значение в поле b1 больше, чем сейчас), оно окрашивает строку в желтый цвет. Если это очень поздно (значение в поле b2 больше, чем сейчас), оно окрашивает строку в красный цвет. В противном случае строка отображается на белом фоне.
С помощью приведенного выше кода он раскрашивает всю таблицу. И не могу найти, как отменить это, так что он просто строка, в которой хранится значение сеанса, то есть где его поздно или очень поздно.
Любая помощь приветствуется, спросите, нужны ли вам дополнительные данные.