我将数据导出为CSV但我想计算一些东西然后导出它

时间:2016-11-19 12:26:25

标签: php mysql csv

 <?php

数据库连接

include('db.php'); 

从数据库中提取记录

if(isset($_POST['submit'])){
$first_day=$_POST['date_start'];
$last_day=$_POST['date_end'];
$output= "";
$table="users_new_test"; // Enter Your Table Name
$sql=mysqli_query($conn,"SELECT indx,date_start,id,name,tl_name,skills,grp,shift,breaktime,updatetime FROM $table WHERE date_start >= '$first_day' AND date_end <= '$last_day' ORDER BY date_start ASC");
$columns_total = mysqli_num_fields($sql);

获取字段名称

for ($i = 0; $i < $columns_total; $i++) {
$heading = mysqli_field_name($sql, $i);
$output .= '"'.$heading.'",';
}
$output .="\n";

// Get Records from the table

while ($row = mysqli_fetch_array($sql)) {
for ($i = 0; $i < $columns_total; $i++) {
$output .='"'.$row["$i"].'",';
}
$output .="\n";
}

下载文件

$filename =  date("d-m-Y").'.csv';
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename='.$filename);
echo $output;
exit;
header("location:export_excel.php");
}   
?>

我想计算特定日期的班次数。 喜欢

2016-11-19
Shift = Morning (12)
Shift = Late Morning (12)
Shift = Evening (12)
Shift = Late Evening (12)
Shift = Night (12)

2016-11-20
Shift = Morning (14)
Shift = Late Morning (10)
Shift = Evening (15)
Shift = Late Evening (9)
Shift = Night (12)

我怎样才能做到这一点。有什么建议。请看看我是新开发的。

2 个答案:

答案 0 :(得分:0)

您需要在制作CSV文件之前计算每个字段。您可以在表上进行mysql查询和回显结果,然后从中生成csv文件。如果您需要有关此问题的其他帮助,请通知我。但是,你可以从那里得到一个想法https://dev.mysql.com/doc/workbench/en/wb-admin-export-import-table.html

答案 1 :(得分:0)

@ TPLMedia24是对的。使用MySQL代替循环结果的每一行。

SELECT date_start, shift, COUNT(*) as total FROM FROM $table WHERE date_start >= '$first_day' AND date_end <= '$last_day' GROUP BY shift, date_start ORDER BY date_start ASC