
02/02/2016, 13:22
|
| | Fecha de Ingreso: noviembre-2014
Mensajes: 46
Antigüedad: 10 años, 3 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 ? |