如何用PHP从多个列中选择最小值


How to Select Smallest Value From Multiple Columns with PHP

我有一个表,下面是:

    6xx     8xx      9xx     11xx      12xx
  1  0.01    0.002    0.004   0.001     0.025
  2  0.025   0.125    0.002   0.01      0.011

我想从列中找到最小的值使该列为绿色

例如,在第一个最小值是0.001,所以我希望它是绿色的,对于第二个0.002是最小值,我希望它是绿色的。

有没有人可以指导我如何制作这个,谢谢

下面是我如何从数据库中选择它并在表

中显示int的代码
<?php
$dbHost = 'localhost'; // usually localhost
$dbUsername = 'xxxx';
$dbPassword = 'xxxx';
$dbDatabase = 'xxxx';
$db = mysql_connect($dbHost, $dbUsername, $dbPassword) or die ("Unable to connect to Database Server.");
mysql_select_db ($dbDatabase, $db) or die ("Could not select database.");

$ColumnNames = mysql_query("SELECT column_name 
                              FROM information_schema.COLUMNS 
                             WHERE table_name = 'supplierprice' 
                               AND column_name NOT IN ('supp_price_id',
                                                       'region',
                                                       'country',
                                                       'net_id',
                                                       'networkname', 
                                                       'mcc', 
                                                       'mnc', 
                                                       'mnp')")
                or die("mysql error"); 
$columnArray=array();
$i=0;
while($rows=mysql_fetch_array($ColumnNames))
{
$columnArray[]=$rows[0];
echo "<th style='width:67px;' class='. $columnArray[$i] .' >" . $columnArray[$i] . " 
            </th>";
$i++;
}
?>
foreach($columnArray as $value) {

//$columnArray[]=$rows1[0];
echo '<td style="width:67px;font-weight:'.$text.'" id="CPH_GridView1_xxx" width="0px;" class="'.$value.' '.$rows["net_id"].'"><p>'.$rows[$value].'</p></td>';   
}

你的问题的一个答案可能是:

1-通过如下SQL查询提取每列的最小值:

$res1=mysql_query('select min(6xx) as min6, min(8xx)as min8, min(9xx) as min9, min(11xx)as min11, min(12xx) as min12 from tbl_name');
$rec1=mysql_fetch_array($res1);
$min6=rec1['min6'];
$min8=rec1['min8'];
$min9=rec1['min9'];
....

2-当你在HTML中获取信息时,你应该检查值是否像min那么背景(一些css)变成绿色:

$res=mysql_query('select * from tbl_name');
echo "<table>";
foreach($rec=mysql_fetch_array($res))
{
echo "<tr>"
    echo "<td";
        if($rec['6xx']==$min6) echo "class='green_cell' ";
    echo "";
        echo $rec['6xx'];
    echo "</td>";
    ....
echo "</tr>"

不完全确定您的需求。您似乎正在获取表的一些列名。我假定您希望获取这些列的值并将它们显示在一个表中,突出显示值最小的列。

如果有这样的东西。获取列,循环一次以显示标题。对于每一行,它调用一个函数来显示它们。找到最低值的键(如果两个键共享最低值,则使用最低键)。它循环返回的列并回显它们,在最低值列的样式中显示color:#ff0000;

<?php
$dbHost = 'localhost'; // usually localhost
$dbUsername = 'xxxx';
$dbPassword = 'xxxx';
$dbDatabase = 'xxxx';
$db = mysql_connect($dbHost, $dbUsername, $dbPassword) or die ("Unable to connect to Database Server.");
mysql_select_db ($dbDatabase, $db) or die ("Could not select database.");
$ColumnNames = mysql_query("SELECT GROUP_CONCAT(CONCAT('`', column_name, '`')) AS some_columns
                              FROM information_schema.COLUMNS 
                             WHERE table_name = 'supplierprice' 
                               AND column_name NOT IN ('supp_price_id',
                                                       'region',
                                                       'country',
                                                       'net_id',
                                                       'networkname', 
                                                       'mcc', 
                                                       'mnc', 
                                                       'mnp')")
                or die("mysql error"); 
if($rows=mysql_fetch_array($ColumnNames))
{
    $sql = "SELECT ".$row['some_columns']." FROM supplierprice";
    $query_values = mysql_query($sql);
    if($rows2=mysql_fetch_assoc($ColumnNames))
    {
        echo "<tr>";
        foreach($rows2 AS $key=>$value)
        {
            echo "<th style='width:67px;' >".$key." </th>";
        }
        echo "</tr>";
        process_row($rows2);
        while($rows2=mysql_fetch_assoc($ColumnNames))
        {
            process_row($rows2);
        }
    }
}
function process_row($in_row)
{
    $lowest_values_key = min(array_keys($in_row, min($in_row)));  
    echo "<tr>";
    foreach($in_row AS $key=>$value)
    {
        echo "<td style='width:67px;".(($lowest_values_key == $key) ? 'color:#ff0000;' : '' )."' >".$value." </th>";
    }
    echo "</tr>";
}
?>