Quantcast
Channel: Recent Discussions — DataTables forums
Viewing all articles
Browse latest Browse all 82143

TableTools date range

$
0
0
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
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

Viewing all articles
Browse latest Browse all 82143

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>