Hi all,
I use TableTools, with download function and it's work.
When I use filters, it's good but I don't know why, when I use a date range filter, in my export, I don't have this filter.
However, the filter is working in my datatable.
Can you help me ?
Code JS
csvGeneral.php code :
Thanks for your help
Magali
I use TableTools, with download function and it's work.
When I use filters, it's good but I don't know why, when I use a date range filter, in my export, I don't have this filter.
However, the filter is working in my datatable.
Can you help me ?
Code JS
TableTools.BUTTONS.download = {
"sAction": "text",
"sTag": "default",
"sFieldBoundary": "",
"sFieldSeperator": "\t",
"sNewLine": "<br>",
"sToolTip": "",
"sButtonClass": "DTTT_button_text",
"sButtonClassHover": "DTTT_button_text_hover",
"sButtonText": "Download",
"mColumns": "all",
"bHeader": true,
"bFooter": true,
"sDiv": "",
"fnMouseover": null,
"fnMouseout": null,
"fnClick": function( nButton, oConfig ) {
var oParams = this.s.dt.oApi._fnAjaxParameters( this.s.dt );
var iframe = document.createElement('iframe');
iframe.style.height = "500px";
iframe.style.width = "1000px";
iframe.src = oConfig.sUrl+"?"+$.param(oParams);
document.body.appendChild( iframe );
},
"fnSelect": null,
"fnComplete": null,
"fnInit": null
};
$(document).ready(function() {
// Affichage du tableau avec le détail des entrées
$('#tabDetail').dataTable({
"aaSorting": [[ 1, 'desc' ]],
"bProcessing": true,
"bServerSide": true,
"sPaginationType": "full_numbers",
"sDom": 'T<"clear">lfrtip',
"oTableTools": {
"aButtons": [{
"sExtends": "download",
"sButtonText": "EXCEL",
"sUrl": "extranet/scriptPHP/csvGeneral.php"
},{
"sExtends": "download",
"sButtonText": "PDF",
"sUrl": "extranet/scriptPHP/pdfGeneral.php"
}]
},
"sAjaxSource": "extranet/scriptPHP/serverSideGeneral.php",
"fnServerData": function( sUrl, aoData, fnCallback ) {
$.ajax( {
"url": sUrl,
"data": aoData,
"success": fnCallback,
"dataType": "json",
"cache": false
} );
}
}).columnFilter({
aoColumns: [{ type: "text" },
{ type: "date-range"},
{ type: "time-range" , values: ["07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"]},
{ type: "select", values: ['muret', 'labarthe']}]
});
});
csvGeneral.php code :
<?php
//envoi des headers csv
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="Detail des entrees.csv"');
// Champs de la base de données
$aColumns = array( 'usager', 'date', 'heure', 'decheterie', 'commune', 'etat');
// Table
$sTable = "te_stats";
// Connexion à la base
include("../inc/gestiondech_config.inc.php");
// Eventuels filtres
$sWhere = "";
if ( $_GET['sSearch'] != "" ){
$sWhere = "WHERE (";
for ( $i=0 ; $i<count($aColumns) ; $i++ ) $sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
$sWhere = substr_replace( $sWhere, "", -3 );
$sWhere .= ')';
}
for ( $i=0 ; $i<count($aColumns) ; $i++ ){
if ( $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' ){
if ( $sWhere == "" ) $sWhere = "WHERE "; else $sWhere .= " AND ";
// Vérification du champs de recherche
$columnFilterValue = mysql_real_escape_string($_GET['sSearch_' . $i]);
// check for values range
$rangeSeparator = "~";
$columnFilterRangeMatches = explode($rangeSeparator, $columnFilterValue);
if (!empty($rangeSeparator) && strstr($columnFilterValue, $rangeSeparator)) {
// get min and max
$columnFilterRangeMatches = explode($rangeSeparator, $columnFilterValue);
// Si on est sur le time range
if($aColumns[$i] == 'heure'){
$heureMin = $columnFilterRangeMatches[0].":00:00";
$heureMax = $columnFilterRangeMatches[1].":00:00";
if (!empty($columnFilterRangeMatches[0]) && !empty($columnFilterRangeMatches[1]))
$sWhere .= $aColumns[$i] . " BETWEEN '" . $heureMin . "' and '" . $heureMax . "' ";
else if (empty($columnFilterRangeMatches[0]) && !empty($columnFilterRangeMatches[1]))
$sWhere .= $aColumns[$i] . " <= '" . $heureMax . "' ";
else if (!empty($columnFilterRangeMatches[0]) && empty($columnFilterRangeMatches[1]))
$sWhere .= $aColumns[$i] . " >= '" . $heureMin . "' ";
}
// Si on est sur le date range
if($aColumns[$i] == 'date'){
if (!empty($columnFilterRangeMatches[0]) && !empty($columnFilterRangeMatches[1]))
$sWhere .= $aColumns[$i] . " BETWEEN '" . $columnFilterRangeMatches[0] . "' and '" . $columnFilterRangeMatches[1] . "' ";
else if (empty($columnFilterRangeMatches[0]) && !empty($columnFilterRangeMatches[1]))
$sWhere .= $aColumns[$i] . " <= '" . $columnFilterRangeMatches[1] . "' ";
else if (!empty($columnFilterRangeMatches[0]) && empty($columnFilterRangeMatches[1]))
$sWhere .= $aColumns[$i] . " >= '" . $columnFilterRangeMatches[0] . "' ";
}
} else $sWhere .= $aColumns[$i] . " LIKE '%".$columnFilterValue."%' ";
}
}
// Requête MySQL
$sQuery = "SELECT * FROM $sTable $sWhere";
$rResult = mysql_query( $sQuery, $connexion) or die(mysql_error());
$csv = "";
//Première ligne avec le noms des colonnes
for($i=0 ; $i<count($aColumns) ; $i++) $csv.= ucfirst($aColumns[$i]).';';
$csv = substr_replace($csv, "", -1);
$csv .= "\n";
while($data = mysql_fetch_array($rResult)){
if($data['etat'] == 1) $etat = "a"; else $etat = "d";
$csv .= $data['usager'].";".$data['date'].";".$data['heure'].";".$data['decheterie'].";".$data['commune'].";$etat\n";
}
echo $csv;
mysql_close();
exit;
?>
Thanks for your help
Magali