entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Error al recargar una datatable en un modal

Hola, a todos tengo un formulario de consulta el cual solo se oprime un botón y debe recargarse la tabla Formulario de consulta, he intentando generar esa recarga de datos la primera que hice fue que por ajax me generase las filas

("#btnMovimientos").click(function(){
                            var form_data = {
                                codigo:$('#cuenta').val(),
                                fechaI:$('#txtFechaInicial').val(),
                                fechaF:$('#txtFechaFinal').val()
                            };                        

                            $.ajax({
                                type: 'POST',
                                url: "consultasBasicas/movimientos_efectuados.php",
                                data: form_data,
                                success: function (data) {                                    
                                   $("#cuerpo").html(data);
                                   console.log(data);
                                }
                            });                            
                        });
                    }); 
<?php
session_start();
require_once '../Conexion/conexion.php';
$i=0;
$tabla = "";
$codigo = $_POST['codigo'];
$fechaInicial = $_POST['fechaI'];
$valorFechaI = explode("/", $fechaInicial);
$fechaI = $valorFechaI[2].'-'.$valorFechaI[1].'-'.$valorFechaI[0];
$fechaFinal = $_POST['fechaF'];
$valorFechaFinal = explode("/", $fechaFinal);
$fechaF=$valorFechaFinal[2].'-'.$valorFechaFinal[1].'-'.$valorFechaFinal[0];
$sql = "SELECT DISTINCT tpc.nombre,cnt.numero,cnt.fecha,ct.naturaleza,dtc.valor,dtc.descripcion,cnt.tercero,dtc.centrocosto,dtc.proyecto
FROM gf_cuenta ct
LEFT JOIN gf_detalle_comprobante dtc ON dtc.cuenta = ct.id_unico
LEFT JOIN gf_comprobante_cnt cnt ON dtc.comprobante = cnt.id_unico
LEFT JOIN gf_tipo_comprobante tpc ON cnt.tipocomprobante = tpc.id_unico
WHERE ct.codi_cuenta = '$codigo' AND  cnt.fecha BETWEEN ('$fechaI') AND ('$fechaF')";
$result = $mysqli->query($sql);
$filas =$result->num_rows;
if($filas!=0){
    while($row=$result->fetch_row()){
        $valorFecha=  explode("-", $row[2]);
        $fecha = $valorFecha[2].'/'.$valorFecha[1].'/'.$valorFecha[0];
        #Captura del valor debito por su naturaleza
        $debtido = "";
        if($row[3]==1){
            if($row[4]>=0){
                $debtido=  '<label class="valorLabel" style="font-weight:normal">'.number_format($row[4], 2, '.', ',').'</label>';
            }else{
                $debtido = '<label style="font-weight:normal">0.00</label>';
            }
        }else if($row[3]==2){
            if($row[4] <= 0){
                $x = (float) substr($row[4],'1');
                $debtido = '<label class="valorLabel" style="font-weight:normal">'.number_format($x, 2,'.', ',').'</label>';
            }else{
                $debtido = '<label class="valorLabel" style="font-weight:normal">0.00</label>';
            }
        }
        #captura del valor crédito
        $credito = "";
        if ($row[3] == 2) {
            if($row[4] >= 0){
                $credito = '<label class="valorLabel" style="font-weight:normal">'.number_format($row[4], 2, '.', ',').'</label>';
            }else{
                $credito = '<label class="valorLabel" style="font-weight:normal">0.00</label>';
            }
        }else if($row[3] == 1){
            if($row[4] <= 0){
                $y = (float) substr($row[4],'1');
                $credito = '<label class="valorLabel" style="font-weight:normal">'.number_format($y, 2, '.', ',').'</label>';
            }else{
                $credito = '<label class="valorLabel" style="font-weight:normal">0.00</label>';
            }
        }
        $tercero = $row[6];
        $sqlTercero = "SELECT  IF(CONCAT(ter.nombreuno,' ', ter.nombredos, ' ', ter.apellidouno, ' ', ter.apellidodos) IS NULL OR CONCAT(ter.nombreuno,' ', ter.nombredos, ' ', ter.apellidouno, ' ', ter.apellidodos)='',
                    (ter.razonsocial),CONCAT(ter.nombreuno,' ',ter.nombredos,' ',ter.apellidouno,' ',ter.apellidodos)) AS 'NOMBRE', 
                    ter.id_unico, CONCAT(ti.nombre,' - ',ter.numeroidentificacion) AS 'TipoD' FROM gf_tercero ter
                    LEFT JOIN gf_tipo_identificacion ti ON ti.id_unico = ter.tipoidentificacion
                    WHERE ter.id_unico=$tercero";
        $resultTercero = $mysqli->query($sqlTercero);
        $persona = mysqli_fetch_row($resultTercero);
        #centro de costo
        $sqlCentroCosto = "SELECT nombre FROM gf_centro_costo WHERE id_unico = $row[7]";
        $resultCentroCosto = $mysqli->query($sqlCentroCosto);
        $centroCosto = mysqli_fetch_row($resultCentroCosto);
        #proyecto
        $sqlProyecto = "SELECT nombre FROM gf_proyecto WHERE id_unico = $row[8]";
        $resultProyecto = $mysqli->query($sqlProyecto);
        $proyecto = mysqli_fetch_row($resultProyecto);

        try{
            echo '<tr role="row" class="class="odd"">'
        . '<td class="campos oculto dt-body-center sorting_1"><label class="valorLabel" style="font-weight:normal"></label></td>'
        . '<td class="campos oculto"><label class="valorLabel" style="font-weight:normal"></label></td>'
        . '<td class="campos text-left"><label class="valorLabel" style="font-weight:normal">'.ucwords(strtolower($row[0])).'</label></td>'
        . '<td class="campos text-right"><label class="valorLabel" style="font-weight:normal">'.ucwords(strtolower($row[1])).'</label></td>'
        . '<td class="campos text-right"><label class="valorLabel" style="font-weight:normal">'.$fecha.'</label></td>'
        . '<td class="campos text-right">'.$debtido.'</td>'
        . '<td class="campos text-right">'.$credito.'</td>'
        . '<td class="campos text-left"><label class="valorLabel" style="font-weight:normal">'.ucwords(strtolower($row[5])).'</label></td>'
        . '<td class="campos text-left"><label class="valorLabel" style="font-weight:normal" title="'.ucwords(strtolower($persona[2])).'">'.ucwords(strtolower($persona[0])).'</label></td>'
        . '<td class="campos text-left"><label class="valorLabel" style="font-weight:normal">'.ucwords(strtolower($centroCosto[0])).'</label></td>'
        . '<td class="campos text-left"><label class="valorLabel" style="font-weight:normal">'.ucwords(strtolower($proyecto[0])).'</label></td>'            
        . '</tr>';    
        }  catch (Exception $e){}
    }

}else{
    echo '<tr><td colspan="12" class="text-center">No Existen Registros...<td><tr>';
}

?>

La segunda opción que intente al oprimir el botón fue
Segundo Intento

y en el formulario volvi a armar mi json de la misma manera que mi segundo intento y
me sale el siguiente error Error

en el archivo movimientos_efectuados capturo las variables por get
archivo

y cuando reviso el json resultante me sale de la forma correcta
Resultado JSON

por favor alguién que me pueda ayudar a solucionar este error, gracias por su atención

2 Respuestas

1voto

Alex_Numpaque Puntos10380

Hola a todos ya lo solucione, gracias @jrgm0005 por tu concejo, aquí dejo mi solución.

<?php
session_start();
require_once '../Conexion/conexion.php';
$i=0;
$tabla = "";
$codigo = $_GET['codigo'];
$fechaInicial = $_GET['fechaI'];
$valorFechaI = explode("/", $fechaInicial);
$fechaI = $valorFechaI[2].'-'.$valorFechaI[1].'-'.$valorFechaI[0];
$fechaFinal = $_GET['fechaF'];
$valorFechaFinal = explode("/", $fechaFinal);
$fechaF=$valorFechaFinal[2].'-'.$valorFechaFinal[1].'-'.$valorFechaFinal[0];
$sql = "SELECT DISTINCT tpc.nombre,cnt.numero,cnt.fecha,ct.naturaleza,dtc.valor,dtc.descripcion,cnt.tercero,dtc.centrocosto,dtc.proyecto
FROM gf_cuenta ct
LEFT JOIN gf_detalle_comprobante dtc ON dtc.cuenta = ct.id_unico
LEFT JOIN gf_comprobante_cnt cnt ON dtc.comprobante = cnt.id_unico
LEFT JOIN gf_tipo_comprobante tpc ON cnt.tipocomprobante = tpc.id_unico
WHERE ct.codi_cuenta = '$codigo' AND  cnt.fecha BETWEEN ('$fechaI') AND ('$fechaF')";
$result = $mysqli->query($sql);
$filas =$result->num_rows;
if($filas!=0){
    while($row=$result->fetch_row()){
        $valorFecha=  explode("-", $row[2]);
        $fecha = $valorFecha[2].'/'.$valorFecha[1].'/'.$valorFecha[0];
        $debtido = "";
        if($row[3]==1){
            if($row[4]>=0){
                $debtido=  number_format($row[4], 2, '.', ',');
            }else{
                $debtido = '0.00';
            }
        }else if($row[3]==2){
            if($row[4] <= 0){
                $x = (float) substr($row[4],'1');
                $debtido = number_format($x, 2,'.', ',');
            }else{
                $debtido = '0.00';
            }
        }
        $credito = "";
        if ($row[3] == 2) {
            if($row[4] >= 0){
                $credito = number_format($row[4], 2, '.', ',');
            }else{
                $credito = '0.00';
            }
        }else if($row[3] == 1){
            if($row[4] <= 0){
                $y = (float) substr($row[4],'1');
                $credito = number_format($y, 2, '.', ',');
            }else{
                $credito = '0.00';
            }
        }
        $tercero = $row[6];
        $sqlTercero = "SELECT DISTINCT IF(CONCAT(ter.nombreuno,' ', ter.nombredos, ' ', ter.apellidouno, ' ', ter.apellidodos) IS NULL OR CONCAT(ter.nombreuno,' ', ter.nombredos, ' ', ter.apellidouno, ' ', ter.apellidodos)='',
                    (ter.razonsocial),CONCAT(ter.nombreuno,' ',ter.nombredos,' ',ter.apellidouno,' ',ter.apellidodos)) AS 'NOMBRE', 
                    ter.id_unico, CONCAT(ti.nombre,' - ',ter.numeroidentificacion) AS 'TipoD' FROM gf_tercero ter
                    LEFT JOIN gf_tipo_identificacion ti ON ti.id_unico = ter.tipoidentificacion
                    WHERE ter.id_unico=$tercero";
        $resultTercero = $mysqli->query($sqlTercero);
        $persona = mysqli_fetch_row($resultTercero);
        $sqlCentroCosto = "SELECT nombre FROM gf_centro_costo WHERE id_unico = $row[7]";
        $resultCentroCosto = $mysqli->query($sqlCentroCosto);
        $centroCosto = mysqli_fetch_row($resultCentroCosto);
        $sqlProyecto = "SELECT nombre FROM gf_proyecto WHERE id_unico = $row[8]";
        $resultProyecto = $mysqli->query($sqlProyecto);
        $proyecto = mysqli_fetch_row($resultProyecto);

        $tabla.='{"Tipo":"'.ucwords(strtolower($row[0])).'","Número":"'.ucwords(strtolower($row[1])).'","Fecha":"'.$fecha.'","Valor Débito":"'.$debtido.'","Valor Crédito":"'.$credito.'","Descripción":"'.ucwords(strtolower($row[5])).'","Tercero":"'.ucwords(strtolower($persona[2])).'","Centro Costo":"'.ucwords(strtolower($centroCosto[0])).'","Proyecto":"'.ucwords(strtolower($proyecto[0])).'"},';
        $i++;        
    }
    $tabla = substr($tabla,0, strlen($tabla) - 1);
    echo '{"data":['.$tabla.']}';
}else{
    echo '<tr><td class="text-center" colspan="12" class="text-center"><p>No Existen Registros...</p><td><tr>';
}
?>

$("#btnMovimientos").click(function(){                                                                                                                                                              
                        $("#tablaMovimientos").dataTable().fnDestroy();                            
                        $('#tablaMovimientos').DataTable( {
                            "autoFill": true,
                            "scrollX": true,
                            "pageLength": 5,
                              "language": {
                                "lengthMenu": "Mostrar _MENU_ registros",
                                "zeroRecords": "No Existen Registros...",
                                "info": "Página _PAGE_ de _PAGES_ ",
                                "infoEmpty": "No existen datos",
                                "infoFiltered": "(Filtrado de _MAX_ registros)",
                                "sInfo":"Mostrando _START_ - _END_ de _TOTAL_ registros","sInfoEmpty":"Mostrando 0 - 0 de 0 registros"
                              },
                              'columnDefs': [{
                               'targets': 0,
                               'searchable':false,
                               'orderable':false
                            }],
                            ajax: {
                                url: 'consultasBasicas/movimientos_efectuados.php?codigo='+$('#cuenta').val()+"&fechaI="+$('#txtFechaInicial').val()+"&fechaF="+$('#txtFechaFinal').val(),
                                dataSrc: 'data'
                            },
                            columns: [
                                {data:'Tipo'},
                                {data:'Número'},
                                {data:'Fecha'},
                                {data:'Valor Débito'},
                                {data:'Valor Crédito'},
                                {data:'Descripción'},
                                {data:'Tercero'},
                                {data:'Centro Costo'},
                                {data:'Proyecto'}
                            ]
                        } );  
                    });

Funcionado

Peter comentado Oct 18, 2016

Gracias por compartir la solución!

jrgm0005 comentado Oct 18, 2016

Me alegro que te haya servido, es algo que se debería de hacer siempre, ir probando todo poco a poco para ir haciendo el código lo más modular y simple posible.

2votos

jrgm0005 Puntos2940

Hola, mi consejo es que hagas micro pruebas paso a paso, si ya tienes los datos, muestralos con print_r y trabaja con ellos de alguna manera.

Una vez que los tienes y estás seguro de que son esos datos válidos, revisa la declaración de tu datatable, los campos y el tipo que va a mostrar en cada uno de ellos, son fallos tontos que ocurren a menudo te lo puedo asegurar.

Finalmente, observando el error, lo que indica es que table_id debe ser númerico y ahí se ve como una cadena, revisa todo.

Espero tus noticias.

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta