Как отсортировать эту таблицу результатов с несколькими запросами в PHP, используя раскрывающийся список? - PullRequest
0 голосов
/ 01 сентября 2011

Я получил код, который генерирует такую ​​таблицу

table

и код здесь

$num1 = mysql_query("SELECT * FROM mtable WHERE DataVersionDate='$datav' && Pathogen='$pathogen' && Topic='$topic1' && Indicator='$ind1' && IndicatorSubGroup='$subindg1' && (Country IN ('$sql_cntys') OR  WHORegionAC IN ('$sql_cntys')) ");
$num2 = mysql_query("SELECT * FROM mtable WHERE DataVersionDate='$datav' && Pathogen='$pathogen' && Topic='$topic2' && Indicator='$ind2' && IndicatorSubGroup='$subindg2' && (Country IN ('$sql_cntys') OR  WHORegionAC IN ('$sql_cntys')) ");
$num3 = mysql_query("SELECT * FROM mtable WHERE DataVersionDate='$datav' && Pathogen='$pathogen' && Topic='$topic3' && Indicator='$ind3' && IndicatorSubGroup='$subindg3' && (Country IN ('$sql_cntys') OR  WHORegionAC IN ('$sql_cntys')) ");
$num4 = mysql_query("SELECT * FROM mtable WHERE DataVersionDate='$datav' && Pathogen='$pathogen' && Topic='$topic4' && Indicator='$ind4' && IndicatorSubGroup='$subindg4' && (Country IN ('$sql_cntys') OR  WHORegionAC IN ('$sql_cntys')) ");
$num5 = mysql_query("SELECT * FROM mtable WHERE DataVersionDate='$datav' && Pathogen='$pathogen' && Topic='$topic5' && Indicator='$ind5' && IndicatorSubGroup='$subindg5' && (Country IN ('$sql_cntys') OR  WHORegionAC IN ('$sql_cntys')) ");

$data = array();

while($row = mysql_fetch_assoc($num1))
{
    $c = $row['Country'];
    if (!isset($data[$c]))
    {
        $data[$c] = array('Country' => $c);
    }
    $data[$c]['MidEstimate1'] = $row['MidEstimate'];
}
while($row = mysql_fetch_assoc($num2))
{
    $c = $row['Country'];
    if (!isset($data[$c]))
    {
        $data[$c] = array('Country' => $c);
    }
    $data[$c]['MidEstimate2'] = $row['MidEstimate'];
}

while($row = mysql_fetch_assoc($num3))
{
    $c = $row['Country'];
    if (!isset($data[$c]))
    {
        $data[$c] = array('Country' => $c);
    }
    $data[$c]['MidEstimate3'] = $row['MidEstimate'];
}

while($row = mysql_fetch_assoc($num4))
{
    $c = $row['Country'];
    if (!isset($data[$c]))
    {
        $data[$c] = array('Country' => $c);
    }
    $data[$c]['MidEstimate4'] = $row['MidEstimate'];
}

while($row = mysql_fetch_assoc($num5))
{
    $c = $row['Country'];
    if (!isset($data[$c]))
    {
        $data[$c] = array('Country' => $c);
    }
    $data[$c]['MidEstimate5'] = $row['MidEstimate'];
}
$i = 0;
echo "<table width='880' align='center'>";
foreach ($data as $row)
{
    echo ($i % 5) ? "<tr>" : "<tr>" ;
    echo "<td style='padding-left:10px' width='280'>" . $row['Country']."</td>";
    echo "<td align='center' width='120'>" . $row['MidEstimate1']."</td>";
    echo "<td align='center' width='120'>" . $row['MidEstimate2']."</td>";
    echo "<td align='center' width='120'>" . $row['MidEstimate3']."</td>";
    echo "<td align='center' width='120'>" . $row['MidEstimate4']."</td>";
    echo "<td align='center' width='120'>" . $row['MidEstimate5']."</td>";
    echo "</tr>" ;
}

echo "</table>" ;

Как мне отсортировать этот столбец таблицы? то есть используется раскрывающийся список со значениями «Страна», «Показатель 1», «Показатель 2», «Показатель 3», «Показатель 4», «Показатель 5». когда пользователь выбирает таблицу значений, должен перечислить значения с соответствующим отсортированным столбцом. Пожалуйста, помогите.

Я получил ответ отсюда Sort Multi Array

Ответы [ 2 ]

1 голос
/ 07 сентября 2011
    <?PHP 
function orderBy($data, $field) { 
$code = "return strnatcmp(\$a['$field'], \$b['$field']);"; 
usort($data, create_function('$a,$b', $code)); 
return $data; } 

$data = orderBy($data, 'age'); 
?>

Полная ссылка на код доступна с здесь

0 голосов
/ 01 сентября 2011

Похоже, вы должны собрать все запросы в один. Что-то вроде SELECT * FROM matble WHERE .....

А затем переберите результат и создайте вывод в зависимости от ваших требований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...