php - 从最大的 SQL 和更改 CSS

标签 php mysql css

我的表名称为“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/

相关文章:

php - ZF 1 Mysql WHERE IN查询

mysql - 加入 where 条件

javascript - 如何让我的复选框值和选项值相加并将总和输入到我的文本区域?

css - 区分:focus via tab-key and :focus via click in CSS

c# - asp.net中的不可见控件占用asp.net中的空间

php - 如何在 PHP 中将数据从主数组传递到多个数组

php - CodeIgniter 更新语法?

php - 一个带有 div 和多个 li 的 foreach 循环

php - 过滤存储在 Couchbase 中的数据

mysql - 在列表中添加值,列表是配置单元中的字符串列