Controller的代码:
public function statExport(){
$statTable = $this->request->params['named']['statTable'];
if (isset($statTable)){
$statProductInstanceName = $this->request->params['named']['statProductInstanceName'];
$statImeiCode = $this->request->params['named']['statImeiCode'];
$statSoftwareVersion1 = $this->request->params['named']['statSoftwareVersion1'];
$statSoftwareVersion2 = $this->request->params['named']['statSoftwareVersion2'];
$statOperationName = $this->request->params['named']['statOperationName'];
$statStatusType = $this->request->params['named']['statStatusType'];
$statClientTypeName = $this->request->params['named']['statClientTypeName'];
$statRootFlagValue = $this->request->params['named']['statRootFlagValue'];
$statConnectTypeValue = $this->request->params['named']['statConnectTypeValue'];
$statCheckTypeValue = $this->request->params['named']['statCheckTypeValue'];
$statDatetime = $this->request->params['named']['statDatetime'];
$sql = 'SELECT Stat.stat_id, StatProductInstance.stat_productinstance_name, StatImei.stat_imei_code, StatSoftware1.stat_software_version, StatSoftware2.stat_software_version, StatOperation.stat_operation_name, StatStatus.stat_status_type,
StatClientType.stat_clienttype_name, StatRootFlag.stat_root_flag_value, StatConnectType.stat_connect_type_value, StatCheckType.stat_check_type_value, Stat.stat_datetime
FROM stat_' . $statTable . ' Stat
LEFT JOIN stat_productinstance StatProductInstance ON Stat.stat_productinstance_id = StatProductInstance.stat_productinstance_id
LEFT JOIN stat_imei StatImei ON Stat.stat_imei_id = StatImei.stat_imei_id
LEFT JOIN stat_software StatSoftware1 ON Stat.stat_from_software_id = StatSoftware1.stat_software_id
LEFT JOIN stat_software StatSoftware2 ON Stat.stat_to_software_id = StatSoftware2.stat_software_id
LEFT JOIN stat_operation StatOperation ON Stat.stat_operation_id = StatOperation.stat_operation_id
LEFT JOIN stat_status StatStatus ON Stat.stat_status_id = StatStatus.stat_status_id
LEFT JOIN stat_clienttype StatClientType ON Stat.stat_clienttype_id = StatClientType.stat_clienttype_id
LEFT JOIN
stat_root_flag StatRootFlag ON Stat.stat_root_flag = StatRootFlag.stat_root_flag_id
LEFT JOIN stat_connect_type StatConnectType ON Stat.stat_connect_type = StatConnectType.stat_connect_type_id
LEFT JOIN stat_check_type StatCheckType ON Stat.stat_check_type = StatCheckType.stat_check_type_id
WHERE 1 = 1
';
if (!empty($statProductInstanceName)) {
$sql .= " AND StatProductInstance.stat_productinstance_name LIKE '%". $statProductInstanceName . "%' ";
}
if (!empty($statImeiCode)) {
$sql .= " AND StatImei.stat_imei_code LIKE '%". $statImeiCode . "%' ";
}
if (!empty($statSoftwareVersion1)) {
$sql .= " AND StatSoftware1.stat_software_version LIKE '%". $statSoftwareVersion1 . "%' ";
}
if (!empty($statSoftwareVersion2)) {
$sql .= " AND StatSoftware2.stat_software_version LIKE '%". $statSoftwareVersion2 . "%' ";
}
if (!empty($statOperationName)) {
$sql .= " AND StatOperation.stat_operation_name LIKE '%". $statOperationName . "%' ";
}
if (!empty($statStatusType)) {
$sql .= " AND StatStatus.stat_status_type LIKE '%". $statStatusType . "%' ";
}
if (!empty($statClientTypeName)) {
$sql .= " AND StatClientType.stat_clienttype_name LIKE '%". $statClientTypeName . "%' ";
}
if (!empty($statRootFlagValue)) {
$sql .= " AND StatRootFlag.stat_root_flag_value LIKE '%". $statRootFlagValue . "%' ";
}
if (!empty($statConnectTypeValue)) {
$sql .= " AND StatConnectType.stat_connect_type_value LIKE '%". $statConnectTypeValue . "%' ";
}
if (!empty($statCheckTypeValue)) {
$sql .= " AND StatCheckType.stat_check_type_value LIKE '%". $statCheckTypeValue . "%' ";
}
if (!empty($statDatetime)) {
$sql .= " AND TO_DAYS(FROM_UNIXTIME(Stat.stat_datetime)) = to_days('". $statDatetime . "') ";
}
echo '<br>' . $sql . '<br>';
$results = $this->Stat->query($sql);
$filename = date("Y-m-d_His")."_by_day_report_".$statTable.".csv";
$content = "ID,Product Instance,IMEI,From,To,Operation,Status,Client Type,Root,Connect Type,Check Type,DateTime\n";
foreach($results as $stat){
$statId = isset($stat['Stat']['stat_id']) ? $stat['Stat']['stat_id'] : 0;
$statProductInstanceName = isset($stat['StatProductInstance']['stat_productinstance_name']) ? $stat['StatProductInstance']['stat_productinstance_name'] : 0;
$statImeiCode = isset($stat['StatImei']['stat_imei_code']) ? $stat['StatImei']['stat_imei_code'] : 0;
$statSoftwareVersion1 = isset($stat['StatSoftware1']['stat_software_version']) ? $stat['StatSoftware1']['stat_software_version'] : 0;
$statSoftwareVersion2 = isset($stat['StatSoftware2']['stat_software_version']) ? $stat['StatSoftware2']['stat_software_version'] : 0;
$statOperationName = isset($stat['StatOperation']['stat_operation_name']) ? $stat['StatOperation']['stat_operation_name'] : 0;
$statStatusType = isset($stat['StatStatus']['stat_status_type']) ? $stat['StatStatus']['stat_status_type'] : 0;
$statClientTypeName = isset($stat['StatClientType']['stat_clienttype_name']) ? $stat['StatClientType']['stat_clienttype_name'] : 0;
$statRootFlagValue = isset($stat['StatRootFlag']['stat_root_flag_value']) ? $stat['StatRootFlag']['stat_root_flag_value'] : 0;
$statConnectTypeValue = isset($stat['StatConnectType']['stat_connect_type_value']) ? $stat['StatConnectType']['stat_connect_type_value'] : 0;
$statCheckTypeValue = isset($stat['StatCheckType']['stat_check_type_value']) ? $stat['StatCheckType']['stat_check_type_value'] : 0;
$statDatetime = isset($stat['Stat']['stat_datetime']) ? $stat['Stat']['stat_datetime'] : 0;
$statDateTimeFormat = date('Y-m-d H:i:s',$statDatetime);
$content .= $statId .",". $statProductInstanceName .",". $statImeiCode .",". $statSoftwareVersion1 .",". $statSoftwareVersion2 .",". $statOperationName .",".
$statStatusType .",". $statClientTypeName .",". $statRootFlagValue .",". $statConnectTypeValue .",". $statCheckTypeValue .",". $statDateTimeFormat . "\n";
}
$this->exportCSV($filename, $content);
exit;
} else {
exit;
}
}
private function exportCSV($filename,$data) {
header("Content-type:text/csv");
header("Content-Disposition:attachment;filename=".$filename);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
echo $data;
}
statExport.ctp
<a id="export" href="" target="_blank" >Export</a>
<script type="text/javascript">
$(document).ready(function(){
$('button[type="submit"]').click(function(){
if($('#StatStatProduct').val() == ""){
customizeMessageBox(3,1,'Warning','Product should not be empty.');
}else{
$('#StatIndexForm').submit();
}
return false;
});
$('#export').click(function(){
if($('#StatStatProduct').val() == ""){
customizeMessageBox(3,1,'Warning','Product should not be empty.');
return false;
} else {
var statTable= $('#StatStatProduct').find('option:selected').text();
var statProductInstanceName = $('#StatProductInstanceStatProductinstanceName').val();
var statImeiCode = $('#StatImeiStatImeiCode').val();
var statSoftwareVersion1 = $('#StatSoftware1StatSoftwareVersion').val();
var statSoftwareVersion2 = $('#StatSoftware2StatSoftwareVersion').val();
var statOperationName = $('#StatOperationStatOperationName').val();
var statStatusType = $('#StatStatusStatStatusType').val();
var statClientTypeName = $('#StatClientTypeStatClienttypeName').val();
var statRootFlagValue = $('#StatStatRootFlag').find('option:selected').text();;
var statConnectTypeValue = $('#StatStatConnectType').find('option:selected').text();;
var statCheckTypeValue = $('#StatStatCheckType').find('option:selected').text();;
var statDatetime = $('#StatStatDatetime').val();
var exportHref = 'stats/statExport/statTable:' + statTable + '/statProductInstanceName:' + statProductInstanceName + '/statImeiCode:' + statImeiCode
+ '/statSoftwareVersion1:' + statSoftwareVersion1 + '/statSoftwareVersion2:' + statSoftwareVersion2 + '/statOperationName:' + statOperationName + '/statStatusType:' + statStatusType
+ '/statClientTypeName:' + statClientTypeName + '/statRootFlagValue:' + statRootFlagValue + '/statConnectTypeValue:' + statConnectTypeValue
+ '/statCheckTypeValue:' + statCheckTypeValue + '/statDatetime:' + statDatetime ;
alert(exportHref);
$('#export').attr('href', exportHref);
}
});
});
</script>