PHP сортирует данные mysql после завершения цикла FOREACH - PullRequest
0 голосов

Я искал ответ здесь, но не смог его найти.Я создал способ отображения данных из моей базы данных в красивой таблице.Теперь, когда я понял, что мне нужен способ сортировки этих данных после того, как я выполнил свой запрос?

сначала я запускаю основной SQL-запрос, чтобы получить основные данные:

$sql = "SELECT {$wpdb->users}.ID, firstname.meta_value as first_name, 
lastname.meta_value as last_name, webaria_company.meta_value as webaria_company
       FROM {$wpdb->users}
       INNER JOIN (SELECT user_id, meta_value FROM {$wpdb->usermeta} 
       WHERE meta_key = 'first_name') as firstname ON {$wpdb->users}.ID = firstname.user_id
       INNER JOIN (SELECT user_id, meta_value FROM {$wpdb->usermeta} WHERE meta_key = 'last_name') as lastname ON {$wpdb->users}.ID = lastname.user_id
       INNER JOIN (SELECT user_id, meta_value FROM {$wpdb->usermeta} 
       WHERE meta_key = 'webaria_company') as webaria_company ON {$wpdb->users}.ID = webaria_company.user_id";
$asuserlist = $wpdb->get_results($sql);

Затем для каждого идентификатора пользователя явыполнить запрос, чтобы получить результаты для каждого пользователя динамически

 <table width="100%">
                    <thead>
                    <tr>
                    <th align="center">Full Name</th>
                    <th align="center">Company</th>
                    <th align="center">Attainment Score</th>
                    </tr>
                    </thead>

            <?php 
            if (empty($asuserlist)) { 
            echo "No Users' Data Available Yet!";
            } 
            else { 
                foreach($asuserlist as $key=>$value){                       
                    $result = $wpdb->get_results( "SELECT `score_as` FROM `wattp2_as_score` WHERE `user_id`='".$asuserlist[$key]->ID."' AND `approved`=1 AND `date` > '".$sqldateoneyear."' ORDER BY `date` DESC LIMIT 4" );
                    // count results in the array of AS SCORE
                    $countresults = count($result);
                    // add all results of AS SCORE
                    $sum = 0;
                    foreach($result as $key2=>$value){
                    if(isset($value->score_as))
                    $sum += $value->score_as;
                    }
                    // get the average AS SCORE
                    $as_score1 = ($sum) / ($countresults);
                    // round AS SCORE
                    $as_score_round = round($as_score1);
                    if ($countresults == 0) {
                    $as_score_hund = "No Data"; } else {
                    $as_score_hund = $as_score_round . " over " . $countresults; }; ?>

                    <tbody><tr><td><?php echo $asuserlist[$key]->first_name . " " . $asuserlist[$key]->last_name; ?></td><td><?php echo $asuserlist[$key]->webaria_company; ?></td><td><?php echo $as_score_hund; ?></td></tr></tbody>
                    <?php } }?>
                    </table>

Проблема в том, что мне нужно иметь возможность сортировать результаты таблицы по данным, которые рассчитываются внутри цикла, и я, честно говоря, не знаю,это возможно, или я должен повторить мой код.Мне нужно иметь возможность сортировать таблицу по $ countresults и $ as_score_hund.

Любые советы приветствуются, даже краткие

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