Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta "arrastra" resultado

Estas en el tema de Consulta "arrastra" resultado en el foro de PHP en Foros del Web. Hola gente! Estoy tratando de mostrar las visitas (que tengo almacenadas en MySQL) con HighCharts . Estoy usando el modelo " Column with drilldown ". ...
  #1 (permalink)  
Antiguo 26/03/2016, 06:03
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 6 meses
Puntos: 145
Exclamación Consulta "arrastra" resultado

Hola gente!

Estoy tratando de mostrar las visitas (que tengo almacenadas en MySQL) con HighCharts. Estoy usando el modelo "Column with drilldown".

Tengo los meses almacenados en Series, y los días (en el "drilldown") de cada mes los obtengo con PHP junto a las visitas.

Esto sería; meses:



días del mes (en este caso, Marzo) y visitas:



y la tabla de la BBDD:



El problema, como se puede ver, es que los registros no coinciden.

El día 23 hay 3 visitas. El día 24 hay 2. El día 25 hay 1, y el 26 también hay 1.

No entiendo porqué me va "arrastrando" el resultado.

Dejo el código PHP que utilizo para obtener los días de cada mes y las visitas.

Código PHP:
Ver original
  1. function obtenerDias($mes, $year) {
  2.     global $conexion;
  3.     for($d=1; $d<=31; $d++) {
  4.         $time=mktime(12, 0, 0, $mes, $d, $year);          
  5.         if (date('m', $time)==$mes) {
  6.             $dia = date('d', $time);
  7.             $sql_fechas = "SELECT DISTINCT fecha FROM `usuarios` WHERE fecha LIKE '%$dia-$mes-$year%'";
  8.             $consulta_fechas = mysqli_query($conexion, $sql_fechas);
  9.        
  10.             while ($resultados_fechas = mysqli_fetch_array($consulta_fechas)) {
  11.                 $arrayFechas[] = $resultados_fechas['fecha'];
  12.             };
  13.            
  14.             $cantidad = count($arrayFechas);
  15.         };
  16.         $cantidades[] = $cantidad;
  17.         $list[] = "['".$dia."', ".$cantidad."]";
  18.     };
  19.     echo join($list, ', ');
  20. };

De esta manera inserto los datos en el código JS que requiere HighCharts:

Código Javascript:
Ver original
  1. <script>
  2. $(function () {
  3.     // Create the chart
  4.     $('#container').highcharts({
  5.  
  6.     // Los datos...
  7.  
  8.      drilldown: {
  9.             series: [{
  10.                 id: 'visitas_enero',
  11.                 name: 'Enero 2016',
  12.                 data: [<?php echo obtenerDias(1, 2016); ?>]
  13.             }, {
  14.                 id: 'visitas_febrero',
  15.                 name: 'Febrero 2016',
  16.                 data: [
  17.                     <?php echo obtenerDias(2, 2016); ?>
  18.                 ]
  19.             }, {
  20.                 id: 'visitas_marzo',
  21.                 name: 'Marzo 2016',
  22.                 data: [
  23.                     <?php echo obtenerDias(3, 2016); ?>
  24.                 ]
  25.             }//Y sigue el resto del código.

Supongo que el error está en la función de PHP, pero no lo encuentro...

jrasias d ante braso
__________________
¿Te sirvió la respuesta? Deja un +1
  #2 (permalink)  
Antiguo 26/03/2016, 22:35
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 6 meses
Puntos: 145
Respuesta: Consulta "arrastra" resultado

Sigo buscando ayuda para este asunto... :(
__________________
¿Te sirvió la respuesta? Deja un +1
  #3 (permalink)  
Antiguo 27/03/2016, 03:22
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 6 meses
Puntos: 145
Respuesta: Consulta "arrastra" resultado

Al final lo pude solucionar haciendo un cambio en la consulta.

En lugar de esto:

Código PHP:
Ver original
  1. function obtenerDias($mes, $year) {
  2.     global $conexion;
  3.     for($d=1; $d<=31; $d++) {
  4.         $time=mktime(12, 0, 0, $mes, $d, $year);          
  5.         if (date('m', $time)==$mes) {
  6.             $dia = date('d', $time);
  7.             $sql_fechas = "SELECT DISTINCT fecha FROM `usuarios` WHERE fecha LIKE '%$dia-$mes-$year%'";
  8.             $consulta_fechas = mysqli_query($conexion, $sql_fechas);
  9.        
  10.             while ($resultados_fechas = mysqli_fetch_array($consulta_fechas)) {
  11.                 $arrayFechas[] = $resultados_fechas['fecha'];
  12.             };
  13.            
  14.             $cantidad = count($arrayFechas);
  15.         };
  16.         $cantidades[] = $cantidad;
  17.         $list[] = "['".$dia."', ".$cantidad."]";
  18.     };
  19.     echo join($list, ', ');
  20. };

Uso esto:

Código PHP:
Ver original
  1. function obtenerDias($mes, $year) {
  2.     global $conexion;
  3.     for($d=1; $d<=31; $d++) {
  4.         $time=mktime(12, 0, 0, $mes, $d, $year);          
  5.         if (date('m', $time)==$mes) {
  6.             $dia = date('d', $time);
  7.             $sqlFechas = "SELECT COUNT( DISTINCT (fecha) ) as mifecha FROM usuarios WHERE fecha LIKE '%".$dia."-".$mes."-".$year."%'";
  8.             $consultaFechas = mysqli_query($conexion, $sqlFechas);
  9.             while($fecha = mysqli_fetch_array($consultaFechas)) {
  10.                 $cantidad = $fecha['mifecha'];
  11.             };
  12.             $list[] = "['".$dia."', ".$cantidad."]";
  13.         };
  14.     };
  15.     echo join($list, ', ');
  16. };



__________________
¿Te sirvió la respuesta? Deja un +1

Última edición por NueveReinas; 27/03/2016 a las 03:35

Etiquetas: fecha, mysql, registro, resultado, select, sql, tabla, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:59.