2

このテーブル名は「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のものになります

4

1 に答える 1

2

まず第一に、1 回のリクエストで必要なものをすべて取得できる場合は、データベースに何度もアクセスしないでください。このようなクエリを使用して、すべての合計と最大値を取得できます

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 |

これがSQLFiddleのデモです

PHPコードで、合計値を最大値と比較し、一致する場合は、対応する.cssクラスを設定し<td>ます. 明らかに、できれば外部スタイル シートのどこかにそのスタイルを定義する必要があります。

<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ください。

于 2013-07-03T09:13:32.120 に答える