我的表名称为“casillas”
colum_1 colum_2 colum_3 colum_4
___ ___ ___ ___ ___ ___ ___
field_1 | 46654 | 8463 | 1284 | 1654
field_2 | 14668 | 547896 | 11563 | 4565
field_3 | 6486 | 54763 | 15697 | 56776
field_4 | 45684 | 5668 | 989 | 48678
我在 PHP 中显示它,如下所示:
$result = mysql_query("SELECT SUM(colum_1) FROM casillas");
while($row = mysql_fetch_array($result)){
$colum_1_result = $row['SUM(colum_1)'];
}
$result = mysql_query("SELECT SUM(colum_2) FROM casillas");
while($row = mysql_fetch_array($result)){
$colum_2_result = $row['SUM(colum_2)'];
}
$result = mysql_query("SELECT SUM(colum_3) FROM casillas");
while($row = mysql_fetch_array($result)){
$colum_3_result = $row['SUM(colum_3)'];
}
$result = mysql_query("SELECT SUM(colum_4) FROM casillas");
while($row = mysql_fetch_array($result)){
$colum_4_result = $row['SUM(colum_4)'];
}
echo '<table style="width: 100%">
<tr>
<td>Results:</td>
<td>'.$colum_1_result.'</td>
<td>'.$colum_2_result.'</td>
<td>'.$colum_3_result.'</td>
<td>'.$colum_4_result.'</td>
</tr>
</table>';
我的问题是:当单元格的值大于其他值时,有没有办法使其加粗或更改单元格的 CSS?
在本例中,它将是来自 colum_2 的内容
最佳答案
首先,当您可以在一个请求中获取所需的所有内容时,请不要多次访问数据库。您可以通过这样的查询获得所有总和和最大值
SELECT sum1, sum2, sum3, sum4, GREATEST(sum1, sum2, sum3, sum4) max_sum
FROM
(
SELECT SUM(colum_1) sum1, SUM(colum_2) sum2, SUM(colum_3) sum3, SUM(colum_4) sum4
FROM casillas
) q
查询的示例输出:
| SUM1 | SUM2 | SUM3 | SUM4 | MAX_SUM | ---------------------------------------------- | 113492 | 616790 | 29533 | 111673 | 616790 |
Here is SQLFiddle demo
Now in php code compare a sum value with the greatest value and if it's a match set a CSS class for the corresponding <td>
. Obviously you need to define that style somewhere preferably in an external style sheet.
<style>
.maxsum {
font-weight: bold;
}
</style>
<?php
$link = mysql_connect('localhost', 'user', 'password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db('dbname', $link);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}
$sql = "SELECT sum1, sum2, sum3, sum4, GREATEST(sum1, sum2, sum3, sum4) max_sum
FROM
(
SELECT SUM(colum_1) sum1, SUM(colum_2) sum2, SUM(colum_3) sum3, SUM(colum_4) sum4
FROM casillas
) q";
$result = mysql_query($sql);
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}
if ($row = mysql_fetch_assoc($result)) {
echo '<table style="width: 100%">
<tr>
<td>Results:</td>
<td '. ($row['sum1'] == $row['max_sum'] ? 'class="maxsum"' : '') .' >'.$row['sum1'].'</td>
<td '. ($row['sum2'] == $row['max_sum'] ? 'class="maxsum"' : '') .' >'.$row['sum2'].'</td>
<td '. ($row['sum3'] == $row['max_sum'] ? 'class="maxsum"' : '') .' >'.$row['sum3'].'</td>
<td '. ($row['sum4'] == $row['max_sum'] ? 'class="maxsum"' : '') .' >'.$row['sum4'].'</td>
</tr>
</table>';
}
附注:mysql_
扩展已弃用,不再受支持。因此考虑切换到 mysqli_
或 PDO
。
关于php - 从最大的 SQL 和更改 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17442879/