Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/02/2016, 13:22
JimmyBrain
 
Fecha de Ingreso: noviembre-2014
Mensajes: 46
Antigüedad: 9 años, 5 meses
Puntos: 0
Logica para buscar entre fechas

Hola , tengo que hecho un buscador pagos entre fechas , el problema es que cuando se usan dos fechas con diferentes años , los pagos de los meses se mezclan , el codigo es este :

Código:
<?php
       
        function consultarPagosMesEntreFechasGrafico($fecha_inicio, $fecha_fin)
        {
           
            $consulta = mysql_query("select id_pago,month(fecha_pago),monto from pagos where str_to_date(fecha_pago, '%Y-%m-%d') between '$fecha_inicio' and '$fecha_fin'");
           
            $cantidad = mysql_num_rows($consulta);
           
            $monto_total = "0";
           
            if (!$cantidad <= 0) {
               
                $monto_total = totalPagosEntreFechas($fecha_inicio, $fecha_fin);
               
                if (!is_numeric($monto_total)) {
                    $monto_total = "0";
                }
               
            }
           
            $titulo    = "Cantidad de pagos entre fechas";
            $subtitulo = "<b>Monto total entre fechas : </b>$" . $monto_total;
           
            $ids = array();
           
            $Enero      = 0;
            $Febrero    = 0;
            $Marzo      = 0;
            $Abril      = 0;
            $Mayo       = 0;
            $Junio      = 0;
            $Julio      = 0;
            $Agosto     = 0;
            $Septiembre = 0;
            $Octubre    = 0;
            $Noviembre  = 0;
            $Diciembre  = 0;
           
            $Monto_Enero      = 0;
            $Monto_Febrero    = 0;
            $Monto_Marzo      = 0;
            $Monto_Abril      = 0;
            $Monto_Mayo       = 0;
            $Monto_Junio      = 0;
            $Monto_Julio      = 0;
            $Monto_Agosto     = 0;
            $Monto_Septiembre = 0;
           
            $Monto_Octubre   = 0;
            $Monto_Noviembre = 0;
            $Monto_Diciembre = 0;
           
            while ($resultado = mysql_fetch_array($consulta)) {
               
                $id_cliente = $resultado[0];
                $mes_pago   = $resultado[1];
                $monto      = $resultado[2];
               
                if (!in_array($id_cliente, $ids)) {
                    array_push($ids, $id_cliente);
                    if ($mes_pago == 1) {
                        $Enero++;
                        $Monto_Enero = $Monto_Enero + $monto;
                    }
                    if ($mes_pago == 2) {
                        $Febrero++;
                        $Monto_Febrero = $Monto_Febrero + $monto;
                    }
                    if ($mes_pago == 3) {
                        $Marzo++;
                        $Monto_Marzo = $Monto_Marzo + $monto;
                    }
                    if ($mes_pago == 4) {
                        $Abril++;
                        $Monto_Abril = $Monto_Abril + $monto;
                    }
                    if ($mes_pago == 5) {
                        $Mayo++;
                        $Monto_Mayo = $Monto_Mayo + $monto;
                    }
                    if ($mes_pago == 6) {
                        $Junio++;
                        $Monto_Junio = $Monto_Junio + $monto;
                    }
                    if ($mes_pago == 7) {
                        $Julio++;
                        $Monto_Julio = $Monto_Julio + $monto;
                    }
                    if ($mes_pago == 8) {
                        $Agosto++;
                        $Monto_Agosto = $Monto_Agosto + $monto;
                    }
                    if ($mes_pago == 9) {
                        $Septiembre++;
                        $Monto_Septiembre = $Monto_Septiembre + $monto;
                    }
                    if ($mes_pago == 10) {
                        $Octubre++;
                        $Monto_Octubre = $Monto_Octubre + $monto;
                    }
                    if ($mes_pago == 11) {
                        $Noviembre++;
                        $Monto_Noviembre = $Monto_Noviembre + $monto;
                    }
                    if ($mes_pago == 12) {
                        $Diciembre++;
                        $Monto_Diciembre = $Monto_Diciembre + $monto;
                    }
                }
               
            }
           
            $textos = array(
                "Enero",
                "Febrero",
                "Marzo",
                "Abril",
                "Mayo",
                "Junio",
                "Julio",
                "Agosto",
                "Septiembre",
                "Octubre",
                "Noviembre",
                "Diciembre"
            );
           
            $datos = array(
                $Enero,
                $Febrero,
                $Marzo,
                $Abril,
                $Mayo,
                $Junio,
                $Julio,
                $Agosto,
                $Septiembre,
                $Octubre,
                $Noviembre,
                $Diciembre
            );
           
            $montos = array(
                $Monto_Enero,
                $Monto_Febrero,
                $Monto_Marzo,
                $Monto_Abril,
                $Monto_Mayo,
                $Monto_Junio,
                $Monto_Julio,
                $Monto_Agosto,
                $Monto_Septiembre,
                $Monto_Octubre,
                $Monto_Noviembre,
                $Monto_Diciembre
            );
           
            $categorias = array();
            $series     = array();
           
            for ($i = 0; $i <= count($textos) - 1; $i++) {
                $nombre = limpiar_datos_grafico($textos[$i]);
                $valor  = $datos[$i];
                $monto  = $montos[$i];
                if ($monto > 0) {
                    $serie = array(
                        'name' => $nombre,
                        'y' => (int) $valor,
                        'z' => (int) $monto
                    );
                } else {
                    $serie = array(
                        'name' => $nombre,
                        'y' => (int) $valor,
                        'z' => null
                    );
                }
                array_push($categorias, $nombre);
                array_push($series, $serie);
            }
           
?>

       
        <style type="text/css">
${demo.css}
        </style>
        <script type="text/javascript">
$(function () {
    $('#container').highcharts({
        chart: {
            type: 'bar'
        },
        title: {
            text: '<?php
            echo $titulo;
?>'
        },
        subtitle: {
           text: '<?php
            echo $subtitulo;
?>'
        },
        xAxis: {
            categories: <?php
            echo json_encode($categorias);
?>,
            title: {
                text: 'Meses'
            }
        },
               
        yAxis: {
            min: 0,
            title: {
                text: 'Cantidad de pagos',
                align: 'high'
            },
            labels: {
                overflow: 'justify'
            }
        },
        tooltip: {
        useHTML: true,
        formatter: function() {
            if(this.point.z==null) {
                return '<b>Cantidad de pagos : </b>'+this.point.y;
            } else {
                return '<b>Cantidad de pagos : </b>'+this.point.y+'<br><b>Monto : </b>'+'$'+this.point.z;
            }
        }},
        plotOptions: {
       
        series: {
            dataLabels:{
                enabled:true,
                formatter:function(){
                    if (this.point.z === 0 || this.point.z === null) {
                        return '';
                    } else {
                        return '$'+this.point.z;
                    }
                }
            },events: {
                legendItemClick: function () {
                        return false;
                }
            }
        }
          },
        legend: {
            reversed: true
        },
        credits: {
            enabled: false
        },
        series: [{
        name:'Cantidad de pagos',
        data: <?php
            echo json_encode($series);
?>

 }]
    });
});
        </script>   
    </head>
    <body>
<script src="chart/js/highcharts.js"></script>
<script src="chart/js/modules/exporting.js"></script>

<div id="container" style="width: 700px; height: 400px;"></div>
¿ Como deberia resolver este problema ?