PHP在FOREACH循环完成后对mysql数据进行排序
我在这里寻找答案,但没有找到。我创建了一种在漂亮的表中显示数据库数据的方法。现在当我意识到我需要一种在执行查询后对数据进行排序的方法时 首先,我运行主sql查询以获取基本数据:PHP在FOREACH循环完成后对mysql数据进行排序,php,wordpress,join,mysqli,Php,Wordpress,Join,Mysqli,我在这里寻找答案,但没有找到。我创建了一种在漂亮的表中显示数据库数据的方法。现在当我意识到我需要一种在执行查询后对数据进行排序的方法时 首先,我运行主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
$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);
然后,对于每个用户ID,我运行一个查询以动态获取每个用户的结果
<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>
全名
单位
成就分数
创建一个MySQL函数来获取查询中的数据,并按返回值进行排序。如果您真的想把它做好,您将知道如何将其全部编写为一个MySQL查询,以便在那里进行排序。这应该是可能的——一个子查询和一些奇特的计算。但可能不容易。您需要首先根据计算结果创建一个值数组。然后用一些函数对数组排序,并使用另一个foreach循环来显示行谢谢:)我会给它一个bash,谷歌将是我的向导哈哈