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