
Pasar una consulta personalizada de mysql a formato Json (JqueryDatatable)
Publicado por Alexi (30 intervenciones) el 05/10/2014 20:37:42
Buenas estimado agradezco por tomarse el tiempo de leer mi duda, les comento estoy trabajando en php con Codeigniter,
estoy realizando un mantenimiento sencillo, (CRUD) con ajax, pero estoy utilizando el plugins JqueryDatatable a la cual
quiero llenarlo con un query donde consulto dos tablas distintas (base mysql) , pero no tengo idea como pasar esa consulta a formato JSON ya que ese formato recibe el datatable para llenarlo. Estoy intentando realizar de esta manera pero no me muestra nada, adjunto codigo...
Codigo PHP
Modelo
Realizo la consulta a la base y retorno un array
function getAll(){
$data = $this->db->query("CALL ConsultarItem()"); Ejecuto un Store Procedure
return $data->row_array();
}
Controlador
Obtengo el array y le hago var_dump
$data= $this->materiales_modelo->getAll();
var_dump($data);
y esto me muestra en pantalla
array (size=3)
0 =>
object(stdClass)[24]
public 'ID' => string '48' (length=2)
public 'articulo' => string 'fffffffffffffffffff' (length=19)
public 'localizacion' => string 'fffffffffffffffffff' (length=19)
public 'unidad_medida' => string 'fffffffffffffffffff' (length=19)
public 'razonsocial' => string 'OFFICECOSTA S.A.' (length=16)
1 =>
object(stdClass)[25]
public 'ID' => string '51' (length=2)
public 'articulo' => string 'AAAAAAAAAAAAAAA' (length=15)
public 'localizacion' => string 'AAAAAAAAAAAAAAA' (length=15)
public 'unidad_medida' => string 'AAAAAAAAAAAAAAA' (length=15)
public 'razonsocial' => string 'POLIPAPEL S.A.' (length=14)
2 =>
object(stdClass)[26]
public 'ID' => string '53' (length=2)
public 'articulo' => string 'AAAAAAAAAAAAAAA' (length=15)
public 'localizacion' => string 'AAAAAAAAAAAAAAA' (length=15)
public 'unidad_medida' => string 'AAAAAAAAAAAAAAA' (length=15)
public 'razonsocial' => string 'POLIPAPEL S.A.' (length=14)
Este resultado he tratado de pasarselo al Datatable Jquery de la siguiente manera
echo json_encode($data); Pero no muestra nada en el datatable y esta es la parte del
JAVASCRIPT
function load(){
ajax_datatable = $('table#ajax_datatable').dataTable({
"bServerSide": true,
"sAjaxSource": 'http://localhost/plansystem/crud_/datatable',
"bJQueryUI": true,
"bPaginate": true,
/* "sPaginationType": "full_numbers",*/
"sServerMethod": "POST",
"fnServerData": function(sSource,aoData,fnCallback)
{
aoData.push({name: "field2", value: $('#field2').val() });
$.ajax({
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"success": fnCallback
});
},
"oLanguage": {
"sEmptyTable": "No hay datos",//tabla vacia
"sInfo": "Mostrando (_START_ - _END_) de _TOTAL_ registros",
"sLengthMenu": 'Mostrar <select>'+
'<option value="10">10</option>'+
'<option value="20">20</option>'+
'<option value="30">30</option>'+
'<option value="40">40</option>'+
'<option value="50">50</option>'+
'<option value="-1">Todo</option>'+
'</select> registros',
"sLoadingRecords": "Procesando...",
"sSearch": "Buscar:",
"sZeroRecords": "No hay datos con esa busqueda",
"oPaginate": {
"sFirst": "Primero",
"sLast": "Ultimo",
"sNext": "Siguiente",
"sPrevious": "Anterior",
}
}
});
}
Espero me puedan brindar alguna sugerencia para solucionar este pequeña inconveniente,
Saludos Cordiales.
estoy realizando un mantenimiento sencillo, (CRUD) con ajax, pero estoy utilizando el plugins JqueryDatatable a la cual
quiero llenarlo con un query donde consulto dos tablas distintas (base mysql) , pero no tengo idea como pasar esa consulta a formato JSON ya que ese formato recibe el datatable para llenarlo. Estoy intentando realizar de esta manera pero no me muestra nada, adjunto codigo...
Codigo PHP
Modelo
Realizo la consulta a la base y retorno un array
function getAll(){
$data = $this->db->query("CALL ConsultarItem()"); Ejecuto un Store Procedure
return $data->row_array();
}
Controlador
Obtengo el array y le hago var_dump
$data= $this->materiales_modelo->getAll();
var_dump($data);
y esto me muestra en pantalla
array (size=3)
0 =>
object(stdClass)[24]
public 'ID' => string '48' (length=2)
public 'articulo' => string 'fffffffffffffffffff' (length=19)
public 'localizacion' => string 'fffffffffffffffffff' (length=19)
public 'unidad_medida' => string 'fffffffffffffffffff' (length=19)
public 'razonsocial' => string 'OFFICECOSTA S.A.' (length=16)
1 =>
object(stdClass)[25]
public 'ID' => string '51' (length=2)
public 'articulo' => string 'AAAAAAAAAAAAAAA' (length=15)
public 'localizacion' => string 'AAAAAAAAAAAAAAA' (length=15)
public 'unidad_medida' => string 'AAAAAAAAAAAAAAA' (length=15)
public 'razonsocial' => string 'POLIPAPEL S.A.' (length=14)
2 =>
object(stdClass)[26]
public 'ID' => string '53' (length=2)
public 'articulo' => string 'AAAAAAAAAAAAAAA' (length=15)
public 'localizacion' => string 'AAAAAAAAAAAAAAA' (length=15)
public 'unidad_medida' => string 'AAAAAAAAAAAAAAA' (length=15)
public 'razonsocial' => string 'POLIPAPEL S.A.' (length=14)
Este resultado he tratado de pasarselo al Datatable Jquery de la siguiente manera
echo json_encode($data); Pero no muestra nada en el datatable y esta es la parte del
JAVASCRIPT
function load(){
ajax_datatable = $('table#ajax_datatable').dataTable({
"bServerSide": true,
"sAjaxSource": 'http://localhost/plansystem/crud_/datatable',
"bJQueryUI": true,
"bPaginate": true,
/* "sPaginationType": "full_numbers",*/
"sServerMethod": "POST",
"fnServerData": function(sSource,aoData,fnCallback)
{
aoData.push({name: "field2", value: $('#field2').val() });
$.ajax({
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"success": fnCallback
});
},
"oLanguage": {
"sEmptyTable": "No hay datos",//tabla vacia
"sInfo": "Mostrando (_START_ - _END_) de _TOTAL_ registros",
"sLengthMenu": 'Mostrar <select>'+
'<option value="10">10</option>'+
'<option value="20">20</option>'+
'<option value="30">30</option>'+
'<option value="40">40</option>'+
'<option value="50">50</option>'+
'<option value="-1">Todo</option>'+
'</select> registros',
"sLoadingRecords": "Procesando...",
"sSearch": "Buscar:",
"sZeroRecords": "No hay datos con esa busqueda",
"oPaginate": {
"sFirst": "Primero",
"sLast": "Ultimo",
"sNext": "Siguiente",
"sPrevious": "Anterior",
}
}
});
}
Espero me puedan brindar alguna sugerencia para solucionar este pequeña inconveniente,
Saludos Cordiales.
Valora esta pregunta


0