我正在尝试对同一字段进行两次计数,因为当前设置输入的工作代码为“ 10”,“ 11”,“ 12”,“ 13”,“ 40”,“ 400”,“ 80”作为已完成的工作,但是其他工作代码(例如55、56、57)表示工作尚未完成。
通过以下内容,我设法计算了work_code表并显示了成功完成的工作量,但是我在努力如何为未完成的工作(即55、56等)计算与该显示相同的表。
下面是我的代码.....
<?php
require 'db.php';
$sqltran = mysqli_query($con, "SELECT *, ROUND(SUM(Sales),0), ROUND(AVG(Sales),2), COUNT(Work_Code) FROM results_tbl_1 WHERE RECORD_ID BETWEEN 468100 AND 500000 AND Work_Code IN ('10', '11', '12', '13', '40', '400', '80') GROUP BY ENG_ID ORDER BY ROUND(SUM(Sales),0) DESC ") or die(mysqli_error($con));
$arrVal = array();
$i=1;
while ($rowList = mysqli_fetch_array($sqltran)) {
$name = array(
'num' => '<img alt="" height="16" src="./top10.png" width="16">' . $i,
'eng'=> $rowList['ENG_ID'],
'totalvisits'=> $rowList['COUNT(Work_Code)'],
'ajv'=> '£' . $rowList['ROUND(AVG(Sales),2)'],
'sales'=> '£' . $rowList['ROUND(SUM(Sales),0)'],
);
array_push($arrVal, $name);
$i++;
}
echo json_encode($arrVal);
mysqli_close($con);
然后,数据将使用以下配置显示在引导表上。
<script type="text/javascript">
var $table = $('#table');
$table.bootstrapTable({
url: 'test/board.php',
search: false,
pagination: true,
buttonsClass: 'primary',
showFooter: false,
minimumCountColumns: 2,
columns: [{
field: 'num',
title: 'Rank',
sortable: false,
},{
field: 'eng',
title: 'Engineer',
sortable: false,
},{
field: 'totalvisits',
title: 'Total Jobs',
sortable: false,
},{
field: 'ajv',
title: 'AJV',
sortable: false,
},{
field: 'sales',
title: 'Total',
sortable: false,
}, ],
});
我的问题是如何计算工作代码55,56等并在桌子上显示计数?
谢谢 :)
最佳答案
创建两个新数组,一个用于表示完成的作业代码,另一个用于表示未完成的作业代码。另外,在这种情况下,请勿尝试在查询中进行计数。
然后,当您遍历结果时,测试$row['Work_Code'] against the arrays using
array_search()`。您还需要两个变量来存储计数。
它看起来像这样:
$completedJobs = array(1,2,3,4,5);
$incompleteJobs = array(7,8,9,10,11);
$completeTotal = 0;
$incompleteTotal = 0;
$i=1;
while ($rowList = mysqli_fetch_array($sqltran)) {
//I've stripped out what is not relevant to my example
if(array_search($rowList['Work_Code'], $completedJobs) {
$completeTotal++;
}
if(array_search($rowList['Work_code'],$incompleteJobs){
$incompleteTotal++;
}
}