Search multiple datepicker on same grid - php
I'm using multiple datepicker on same grid and I face the problem to get a proper result.
I used 3 datepicker in 1 grid.
Only the first datepicker (Order Date)is able to output proper result while the other 2 datepicker (Start Date & End Date) are not able to generate proper result.
There is no problem with the query, so could you find out what's going on here?
Thanks in advance!
php wrapper
<?php
ob_start();
require_once 'config.php';
// include the jqGrid Class
require_once "php/jqGrid.php";
// include the PDO driver class
require_once "php/jqGridPdo.php";
// include the datepicker
require_once "php/jqCalendar.php";
// Connection to the server
$conn = new PDO(DB_DSN,DB_USER,DB_PASSWORD);
// Tell the db that we use utf-8
$conn->query("SET NAMES utf8");
// Create the jqGrid instance
$grid = new jqGridRender($conn);
// Write the SQL Query
$grid->SelectCommand = "SELECT c.CompanyID, c.CompanyCode, c.CompanyName, c.Area, o.OrderCode, o.Date, m.maID ,m.System, m.Status, m.StartDate, m.EndDate, m.Type FROM company c, orders o, maintenance_agreement m WHERE c.CompanyID = o.CompanyID AND o.OrderID = m.OrderID ";
// Set the table to where you update the data
$grid->table = 'maintenance_agreement';
// set the ouput format to json
$grid->dataType = 'json';
// Let the grid create the model
$grid->setPrimaryKeyId('maID');
// Let the grid create the model
$grid->setColModel();
// Set the url from where we obtain the data
$grid->setUrl('grouping_ma_details.php');
// Set grid caption using the option caption
$grid->setGridOptions(array(
"sortable"=>true,
"rownumbers"=>true,
"caption"=>"Group by Maintenance Agreement",
"rowNum"=>20,
"height"=>'auto',
"width"=>1300,
"sortname"=>"maID",
"hoverrows"=>true,
"rowList"=>array(10,20,50),
"footerrow"=>false,
"userDataOnFooter"=>false,
"grouping"=>true,
"groupingView"=>array(
"groupField" => array('CompanyName'),
"groupColumnShow" => array(true), //show or hide area column
"groupText" =>array('<b> Company Name: {0}</b>',),
"groupDataSorted" => true,
"groupSummary" => array(true)
)
));
//Start Date
$grid->setColProperty("StartDate", array("label"=>"Start Date","width"=>120,"align"=>"center","fixed"=>true,
"formatter"=>"date",
"formatoptions"=>array("srcformat"=>"Y-m-d H:i:s","newformat"=>"d M Y")
));
$grid->setUserTime("d M Y");
$grid->setUserDate("d M Y");
$grid->setDatepicker("StartDate",array("buttonOnly"=>false));
$grid->datearray = array('StartDate');
//End Date
$grid->setColProperty("EndDate", array("label"=>"End Date","width"=>120,"align"=>"center","fixed"=>true,
"formatter"=>"date",
"formatoptions"=>array("srcformat"=>"Y-m-d H:i:s","newformat"=>"d M Y")
));
$grid->setUserTime("d M Y");
$grid->setUserDate("d M Y");
$grid->setDatepicker("EndDate",array("buttonOnly"=>false));
$grid->datearray = array('EndDate');
//Order Date
$grid->setColProperty("Date", array("label"=>"Order Date","width"=>100,"editable"=>false,"align"=>"center","fixed"=>true,
"formatter"=>"date",
"formatoptions"=>array("srcformat"=>"Y-m-d H:i:s","newformat"=>"d M Y")
));
$grid->setUserTime("d M Y");
$grid->setUserDate("d M Y");
$grid->setDatepicker("Date",array("buttonOnly"=>false));
$grid->datearray = array('Date');
// Enable toolbar searching
$grid->toolbarfilter = true;
$grid->setFilterOptions(array("stringResult"=>true,"searchOnEnter"=>false,"defaultSearch"=>"cn"));
// Enable navigator
$grid->navigator = true;
$grid->setNavOptions('navigator', array("pdf"=>true, "excel"=>true,"add"=>false,"edit"=>true,"del"=>false,"view"=>true, "search"=>true));
$grid->renderGrid('#grid','#pager',true, null, null, true,true);
$conn = null;
?>
javascript code
jQuery(document).ready(function ($) {
jQuery('#grid').jqGrid({
"width": 1300,
"hoverrows": true,
"viewrecords": true,
"jsonReader": {
"repeatitems": false,
"subgrid": {
"repeatitems": false
}
},
"xmlReader": {
"repeatitems": false,
"subgrid": {
"repeatitems": false
}
},
"gridview": true,
"url": "grouping_ma_details.php",
"editurl": "grouping_ma_details.php",
"cellurl": "grouping_ma_details.php",
"sortable": true,
"rownumbers": true,
"caption": "Group by Maintenance Agreement",
"rowNum": 20,
"height": "auto",
"sortname": "maID",
"rowList": [10, 20, 50],
"footerrow": false,
"userDataOnFooter": false,
"grouping": true,
"groupingView": {
"groupField": ["CompanyName"],
"groupColumnShow": [true],
"groupText": ["<b> Company Name: {0}</b>"],
"groupDataSorted": true,
"groupSummary": [true]
},
"datatype": "json",
"colModel": [{
"name": "CompanyID",
"index": "CompanyID",
"sorttype": "int",
"editable": true
}, {
"name": "CompanyCode",
"index": "CompanyCode",
"sorttype": "string",
"editable": true
}, {
"name": "CompanyName",
"index": "CompanyName",
"sorttype": "string",
"editable": true
}, {
"name": "Area",
"index": "Area",
"sorttype": "string",
"editable": true
}, {
"name": "OrderCode",
"index": "OrderCode",
"sorttype": "string",
"editable": true
}, {
"name": "Date",
"index": "Date",
"sorttype": "date",
"label": "Order Date",
"width": 100,
"editable": false,
"align": "center",
"fixed": true,
"formatter": "date",
"formatoptions": {
"srcformat": "Y-m-d H:i:s",
"newformat": "d M Y"
},
"editoptions": {
"dataInit": function (el) {
setTimeout(function () {
if (jQuery.ui) {
if (jQuery.ui.datepicker) {
jQuery(el).datepicker({
"disabled": false,
"dateFormat": "dd M yy"
});
jQuery('.ui-datepicker').css({
'font-size': '75%'
});
}
}
}, 100);
}
},
"searchoptions": {
"dataInit": function (el) {
setTimeout(function () {
if (jQuery.ui) {
if (jQuery.ui.datepicker) {
jQuery(el).datepicker({
"disabled": false,
"dateFormat": "dd M yy"
});
jQuery('.ui-datepicker').css({
'font-size': '75%'
});
}
}
}, 100);
}
}
}, {
"name": "maID",
"index": "maID",
"sorttype": "int",
"key": true,
"editable": true
}, {
"name": "System",
"index": "System",
"sorttype": "string",
"editable": true
}, {
"name": "Status",
"index": "Status",
"sorttype": "string",
"editable": true
}, {
"name": "StartDate",
"index": "StartDate",
"sorttype": "date",
"label": "Start Date",
"width": 120,
"align": "center",
"fixed": true,
"formatter": "date",
"formatoptions": {
"srcformat": "Y-m-d H:i:s",
"newformat": "d M Y"
},
"editoptions": {
"dataInit": function (el) {
setTimeout(function () {
if (jQuery.ui) {
if (jQuery.ui.datepicker) {
jQuery(el).datepicker({
"disabled": false,
"dateFormat": "dd M yy"
});
jQuery('.ui-datepicker').css({
'font-size': '75%'
});
}
}
}, 100);
}
},
"searchoptions": {
"dataInit": function (el) {
setTimeout(function () {
if (jQuery.ui) {
if (jQuery.ui.datepicker) {
jQuery(el).datepicker({
"disabled": false,
"dateFormat": "dd M yy"
});
jQuery('.ui-datepicker').css({
'font-size': '75%'
});
}
}
}, 100);
}
},
"editable": true
}, {
"name": "EndDate",
"index": "EndDate",
"sorttype": "date",
"label": "End Date",
"width": 120,
"align": "center",
"fixed": true,
"formatter": "date",
"formatoptions": {
"srcformat": "Y-m-d H:i:s",
"newformat": "d M Y"
},
"editoptions": {
"dataInit": function (el) {
setTimeout(function () {
if (jQuery.ui) {
if (jQuery.ui.datepicker) {
jQuery(el).datepicker({
"disabled": false,
"dateFormat": "dd M yy"
});
jQuery('.ui-datepicker').css({
'font-size': '75%'
});
}
}
}, 100);
}
},
"searchoptions": {
"dataInit": function (el) {
setTimeout(function () {
if (jQuery.ui) {
if (jQuery.ui.datepicker) {
jQuery(el).datepicker({
"disabled": false,
"dateFormat": "dd M yy"
});
jQuery('.ui-datepicker').css({
'font-size': '75%'
});
}
}
}, 100);
}
},
"editable": true
}, {
"name": "Type",
"index": "Type",
"sorttype": "string",
"editable": true
}],
"postData": {
"oper": "grid"
},
"prmNames": {
"page": "page",
"rows": "rows",
"sort": "sidx",
"order": "sord",
"search": "_search",
"nd": "nd",
"id": "maID",
"filter": "filters",
"searchField": "searchField",
"searchOper": "searchOper",
"searchString": "searchString",
"oper": "oper",
"query": "grid",
"addoper": "add",
"editoper": "edit",
"deloper": "del",
"excel": "excel",
"subgrid": "subgrid",
"totalrows": "totalrows",
"autocomplete": "autocmpl"
},
"loadError": function (xhr, status, err) {
try {
jQuery.jgrid.info_dialog(jQuery.jgrid.errors.errcap, '<div class="ui-state-error">' + xhr.responseText + '</div>', jQuery.jgrid.edit.bClose, {
buttonalign: 'right'
});
} catch (e) {
alert(xhr.responseText);
}
},
"pager": "#pager"
});
jQuery('#grid').jqGrid('navGrid', '#pager', {
"edit": true,
"add": false,
"del": false,
"search": true,
"refresh": true,
"view": true,
"excel": true,
"pdf": true,
"csv": false,
"columns": false
}, {
"drag": true,
"resize": true,
"closeOnEscape": true,
"dataheight": 150,
"errorTextFormat": function (r) {
return r.responseText;
}
}, {
"drag": true,
"resize": true,
"closeOnEscape": true,
"dataheight": 150,
"errorTextFormat": function (r) {
return r.responseText;
}
}, {
"errorTextFormat": function (r) {
return r.responseText;
}
}, {
"drag": true,
"closeAfterSearch": true,
"multipleSearch": true
}, {
"drag": true,
"resize": true,
"closeOnEscape": true,
"dataheight": 150
});
jQuery('#grid').jqGrid('navButtonAdd', '#pager', {
id: 'pager_excel',
caption: '',
title: 'Export To Excel',
onClickButton: function (e) {
try {
jQuery("#grid").jqGrid('excelExport', {
tag: 'excel',
url: 'grouping_ma_details.php'
});
} catch (e) {
window.location = 'grouping_ma_details.php?oper=excel';
}
},
buttonicon: 'ui-icon-newwin'
});
jQuery('#grid').jqGrid('navButtonAdd', '#pager', {
id: 'pager_pdf',
caption: '',
title: 'Export To Pdf',
onClickButton: function (e) {
try {
jQuery("#grid").jqGrid('excelExport', {
tag: 'pdf',
url: 'grouping_ma_details.php'
});
} catch (e) {
window.location = 'grouping_ma_details.php?oper=pdf';
}
},
buttonicon: 'ui-icon-print'
});
jQuery('#grid').jqGrid('filterToolbar', {
"stringResult": true,
"searchOnEnter": false,
"defaultSearch": "cn"
});
});
If one uses searching toolbar (filterToolbar) it can be specified only one operation used during searching. You used
$('#grid').jqGrid('filterToolbar',
{ stringResult: true, searchOnEnter: false, defaultSearch: "cn" });
So the operation "Contains" ("cn") will be apply on all columns during filtering where sopt of searchoptions is not specified. It's extremely important to include sopt of searchoptions for all columns having stype: "select".
If you don't use Searching Dialog then you can include sopt: ["eq"] in searchoptions for all columns having stype: "select" and formatter: "date". If you use Searching Dialog additionally to Searching Toolbar you should in sopt with some array where "eq" is the first element of the array. In the case the operation "Equal" will be used during filtering of the grid.
Because you use Advanced Searching Dialog (with multipleSearch: true) you can verify the filter generated by the Searching Toolbar very easy. You need just set any filter (or filters) and then open Searching Dialog after that. If you don't opened the searching dialog before you will see the filter generated by searching filter. I recommend you to use recreateForm: true option together with multipleSearch: true (or probably with multipleGroup: true). In the case you will always see the current used filter in the searching dialog instead of the last searching dialog (it will be hide instead of destroying).
Related
how to reload or refresh data in treeTable in php
i have issue on use treeTable while reload data and after save and update data form $(document).ready(function() { const datajson = <?php echo $data_json ?>; $('#tablejson').treeTable({ "data": datajson, "collapsed": true, "responsive": true, "lengthChange": true, "autoWidth": false, "fnDrawCallback": function() { $('[data-toggle="tooltip"]').tooltip(); }, "aLengthMenu": [ [10, 50, 100, -1], [10, 50, 100, "All"] ], "iDisplayLength": 10, "columns": [{ "data": "nama_module", }, { "data": "controller", }, { "data": "function", }, { "data": "nm_group", }, { "data": "label", }, { "data": "btn" } ], "order": [], }); $('#btn-reload').click(function() { $('#tablejson').dataTable().api().ajax.reload(); }); }); i try to click button for reload tabel use $('#tablejson').dataTable().api().ajax.reload(); but not working, this is happen while i use treeTable, if i use datatable only its work for reload or refresh table. does anyone have the same case with me ? thanks
finally, i found a solution in my case, i use code like this $('#btn-reload').click(function() { $('#tablejson').DataTable() .order([2, 'desc']) .draw(); }); thanks....
parse Json response with attributes
I'm trying to parse Json result below fromAjax response. Foreach CostingItem i need to access to UnitPrice.Amount, but I got error. Can someone help me to access items? I got this response from Laravel based webservice. { "CostingItem": [{ "#attributes": { "Description": "Basic Price", "Quantity": "1", "PassengerRPH": "1", "PriceBasis": "Passenger" }, "UnitPrice": { "#attributes": { "Amount": "1823.82", "OriginalAmount": "1974.32" } }, "ExtendedPrice": { "#attributes": { "Amount": "1823.82", "OriginalAmount": "1974.32" } }, "Commission": { "#attributes": { "Rate": "11.00", "Type": "P" } } }, { "#attributes": { "Description": "Basic Price", "Quantity": "1", "PassengerRPH": "2", "PriceBasis": "Passenger" }, "UnitPrice": { "#attributes": { "Amount": "1823.82", "OriginalAmount": "1974.32" } }, "ExtendedPrice": { "#attributes": { "Amount": "1823.82", "OriginalAmount": "1974.32" } }, "Commission": { "#attributes": { "Rate": "11.00", "Type": "P" } } }] } here is the script used in Ajax: $.ajax({ type: "POST", url: "/public/fetch-bambini", data: { id: d, tipologia: tipologia, bambini: bambini, neonati: neonati, adulti: adulti }, success: function(response) { $.each(response.CostingItem, function(k, v) { console.log(v); }); } }); This return this response:
How to handle json format error shows if the table is empty
Am fetching values from a table, its working perfectly. When the table is empty am getting aler box json formating error. How can i handle that error? my sql query is given below, am using php zend framework public function getProductsAction(){ $oProductModel = new Application_Model_Db_Table_Products(); $oSelect = $oProductModel->fetchAllProductItems(); echo Zend_Json::encode($this->_helper->DataTables($oSelect, array('product_id','e.ename as employee_name','name','brand','conditions','about','image_path','reserved_price','Max(b.bid_amount) as amount'))); } and view page is $(document).ready(function(){ jQuery('#product-table').dataTable({ <?php if(Qsm_User::isAdmin()){ ?> "sDom": 'Tlfrtip', "oTableTools": { "sSwfPath": "/js/DataTables/extras/TableTools/media/swf/copy_csv_xls_pdf.swf", "aButtons": [{ "sExtends": "collection", "sButtonText": 'Save <span class="caret" />', "aButtons": [ "csv", "xls", "pdf" ] }] }, <?php } ?> "sPaginationType": "full_numbers", "bProcessing": true, "bServerSide": false, "sAjaxSource": '/buyproduct/api/get-products', "aoColumns": [ {"sTitle":"ID", "bVisible":false}, {"sTitle":"Emp Name", "bVisible":true}, {"sTitle":"Product", "sWidth": '10%'}, {"sTitle":"Brand", "sWidth": '10%'}, {"sTitle":"Condition", "sWidth": '10%'}, {"sTitle":"Description", "sWidth": '20%'}, {"sTitle":"Image","sWidth": '18%', "mData": null, "bSearchable": false, "bSortable": false, "fnRender": function (oObj){ var actions = ""; actions += "<span class=''>\n\ <img src='/uploads/gallery/" + oObj.aData[6] + "' alt='Image' title='Image' class='style_prevu_kit' width='0px' height='0px' />"; actions +="</span>"; return actions; } }, {"sTitle":"Starting Bid Price", "sWidth": '10%'}, {"sTitle":"Current Bid Price", "sWidth": '10%'}, { "sTitle":"Bid", "sWidth": '17%', "mData": null, "bSearchable": false, "bSortable": false, "fnRender": function (oObj){ var actions = ""; actions += "<span class='data_actions iconsweet'>\n\ <a title='Buy' href='/buyproduct/index/bid/id/" + oObj.aData[0] + "'><img src='/images/buy.png' alt='Buy' title='Buy' /></a>"; actions +="</span>"; return actions; } } <?php if(Qsm_User::isAdmin()){ ?> ,{ "sTitle":"Transaction", "sWidth": '22%', "mData": null, "bSearchable": false, "bSortable": false, "fnRender": function (oObj){ var actions1 = ""; actions1 += "<span class='data_actions iconsweet'>\n\ <a title='Transaction' href='/buyproduct/index/transaction/id/" + oObj.aData[0] + "'><img src='/images/icons/edit3.png' alt='Edit' title='Transaction' /></a>"; actions1 +="</span>"; return actions1; } } <?php } ?> ] }); }); Please anybody help me to handle this json formating error
your action will return empty string on no row condition which is invalid json data, Check the value returned from $this->_helper->DataTables($oSelect, array('product_id','e.ename as employee_name','name','brand','conditions','about','image_path','reserved_price','Max(b.bid_amount) as amount')) if null/or no rows echo something like this or empty row data { "msg": "no-data" } Update: public function getProductsAction(){ $oProductModel = new Application_Model_Db_Table_Products(); $oSelect = $oProductModel->fetchAllProductItems(); if($oSelect){ echo Zend_Json::encode($this->_helper->DataTables($oSelect, array('product_id','e.ename as employee_name','name','brand','conditions','about','image_path','reserved_price','Max(b.bid_amount) as amount'))); }else{ echo '{"msg": "no-data"}'; //or edit with empty data matching required by your view } }
Datatable Show/Hide Checkbox is not working proferly
I am using DataTable to display the data. All the column names with check box is displaying when i click show and hide button. When i uncheck all the column and when i try to check the column name at that time the first column is getting copied or getting displayed in the all the row values. Following is my code which i written. $('#datatable_col_reorder').dataTable({ "processing": true, "sAjaxSource": "<?php echo $config['ajaxUrlPath'];>json.php", "bFilter" : true, "fnServerData": function ( sAjaxSource , aoData, fnCallback ) { aoData.push( { "name": "eventName", "value": $('#eventName').val() }); aoData.push( { "name": "et", "value": $('#Type').val() }); aoData.push( { "name": "vn", "value": $('#address').val() }); aoData.push( { "name": "da", "value": $('#date_added').val() }); aoData.push( { "name": "ti", "value": $('#time_added').val() }); aoData.push( { "name": "st", "value": $('#status').val() }); aoData.push( { "name": "br", "value": $('#status1').val() }); aoData.push( { "name": "cr", "value": $('#status2').val() }); aoData.push( { "name": "pr", "value": $('#spercentage').val() }); // etc $( "#status2,#address,#spercentage" ).keyup(function() { var table = $('#datatable_col_reorder').DataTable(); table.ajax.reload(); }); $( "#status,#Type,#date_added,#time_added,#status1,#status2" ).change(function() { var table = $('#datatable_col_reorder').DataTable(); table.ajax.reload(); }); $.getJSON( sAjaxSource, aoData, function (json) { console.log(json); fnCallback(json) } ); }, "sDom":"<'col-sm-1 col-xs-1 col-md-1 col-lg-1 showHidebutton'C><'dt-toolbar'r>"+ "t"+ "<'dt-toolbar-footer'<'col-sm-6 col-xs-12 hidden-xs'i><'col-sm-6 col-xs-12'p>>", "autoWidth" : true, "rowCallback": function( nRow, aData, iDisplayIndex ) { // responsiveHelper_datatable_tabletools.createExpandIcon(nRow); $('td:eq(0)', nRow).html(''+aData[0]+''); return nRow; }, "preDrawCallback" : function() { // Initialize the responsive datatables helper once. if (!responsiveHelper_datatable_col_reorder) { responsiveHelper_datatable_col_reorder = new ResponsiveDatatablesHelper($('#datatable_col_reorder'), breakpointDefinition); } }, "drawCallback" : function(oSettings) { responsiveHelper_datatable_col_reorder.respond(); } }); When i uncheck all and when i try to recheck each checkboxes, at that time the first column values are getting displayed in all other column like type,status,address etc. Example: Consider Name: XYZ, After deselecting checkboxes if i try to recheck at that time the each column values is showing "XYZ" in status,address columns. Thanks in advance.
jquery jeditable save to database
I am using the following code to enable live edit with jeditable: <script type="text/javascript"> $(document).ready(function(){ var aDataSet = [ ["klad1111.com","<img src='world/se.png' />","-","0","0","0%","0"], ["klad2222.com","<img src='world/dk.png' />","2012-12-05","1","3","300%","15"], ["klad33333.com","<img src='world/dk.png' />","-","0","0","0%","0"], ["klad6666.info","<img src='world/dk.png' />","-","0","0","0%","0"], ["klad44444.info","<img src='world/dk.png' />","-","0","0","0%","0"], ["klad5555.com","<img src='world/se.png' />","-","0","0","0%","0"], ]; $('#dynamic').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"></table>' ); $('#example').dataTable( { "aaData": aDataSet, "aoColumns": [ { "sTitle": "Namn" }, { "sTitle": "Land" }, { "sTitle": "Uppdaterad" }, { "sTitle": "Neutrala Posts", "sClass": "center" }, { "sTitle": "Post / Client", "sClass": "center" }, { "sTitle": "Ratio", "sClass": "center" }, { "sTitle": "Total Posts", "sClass": "center" } ] } ); /* Init DataTables */ var oTable = $('#example').dataTable(); /* Apply the jEditable handlers to the table */ $('td', oTable.fnGetNodes()).editable( 'editable_ajax.php', { "callback": function( sValue, y ) { var aPos = oTable.fnGetPosition( this ); oTable.fnUpdate( sValue, aPos[0], aPos[1] ); }, "submitdata": function ( value, settings ) { return { "row_id": this.parentNode.getAttribute('id'), "column": oTable.fnGetPosition( this )[2] }; }, "height": "14px" } ); }); </script> Live edit kind of works, when i click on a cell i get up a input box. But the save part is not working.. I am not sure how to update my database accordingly.. Any ideas?