Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/02/2012, 22:37
HyQnet
 
Fecha de Ingreso: mayo-2010
Mensajes: 35
Antigüedad: 14 años, 10 meses
Puntos: 1
Gráficos php + Mysql de "visitas"

Hola amigos!

Me rompí la cabeza pensando como puedo hacer esto, y sinceramente me fui sangrando por hay porque no se me ocurrió nada útil (si, tal vez el hecho de que sean la 1:10 afecte )

Tengo el siguiente script

Código PHP:

<?php
//MYSQL CONNECTION
$connect mysql_connect("IP""USER""PASS") or die ("No conecta con SQLSERVER");
mysql_select_db('DB',$connect);

//OBTENER USUARIOS ONLINE
$sql "SELECT COUNT(*) FROM users WHERE online = '1'"
$query mysql_query($sql) or die(mysql_error());
$count mysql_result($query,0,0); 

//FECHA
$dma date("d-m-Y");
$hora 5+date(H);
$minuto date(i);
$segundos date(s);
$hms $hora.":".$minuto.":".$segundos;
$fecha $dma $hms;
mysql_query("INSERT INTO online_stats (id, uonline, dma, hms) VALUES (NULL, '".$count."' , '".$dma."' , '".$hms."')") or die(mysql_error());
Explicación del código

Este el el cronjob, se ejecuta cada 10 minutos y lo que hace básicamente es contar los usuarios OnLine y los guarda en la tabla con la siguiente estructura

1 | id | int(11) | AUTO_INCREMENT <-ID para organizarme
2 | uonline | int(11) |Ninguna <-Cantidad de Onlines
3 | dma | varchar(15) | Ninguna <-Dia Mes Año
4 | hms | varchar(15) | Ninguna <- Hora Minutos Segundos

Hasta acá todo perfecto. El tema es que ahora quiero hacer un gráfico usando [URL="http://jpgraph.net"]jpgraph[/URL] (una libreria php para hacer graficos)

Esto también es bastante fácil, ya que viene casi todo hecho.

Mi problema


El objetivo de implementar esto es ver los puntos débiles de usuarios conectados así como las horas mas fuertes. Y a su vez ver el crecimiento (o decadencia) de usuarios a travez del tiempo

Por lo que necesito adaptar el script original de jpgraph a 3 nuevos script (que podría ser uno solo pero modificado por GETS.

Script original

Código PHP:
<?

//MYSQL CONNECTION
$connect mysql_connect("IP""USER""PASS") or die ("No conecta con SQLSERVER");
mysql_select_db('DB',$connect);

// content="text/plain; charset=utf-8"
require_once ('jpgraph/src/jpgraph.php');
require_once (
'jpgraph/src/jpgraph_line.php');

$datay1 = array(20,15,23,15); // Aqui tiene que ir la cantidad de usuarios

// Setup the graph
$graph = new Graph(1000,300);
$graph->SetScale("textlin");

$theme_class=new UniversalTheme;

$graph->SetTheme($theme_class);
$graph->img->SetAntiAliasing(false);
$graph->title->Set('Usuarios Onlines Periodo ');
$graph->SetBox(false);

$graph->img->SetAntiAliasing();

$graph->yaxis->HideZeroLabel();
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

$graph->xgrid->Show();
$graph->xgrid->SetLineStyle("solid");
$graph->xaxis->SetTickLabels(array('A','B','C','D')); // Aqui el dia las horas o las semanas
$graph->xgrid->SetColor('#E3E3E3');

// Create the first line
$p1 = new LinePlot($datay1);
$graph->Add($p1);
$p1->SetColor("#6495ED");
$p1->SetLegend('Line 1');

$graph->legend->SetFrameWeight(1);

// Output line
$graph->Stroke();

?>
Está claro que un WHILE me serviría de mucho, ya que pido los datos y luego los imprimo en una variable .

Ej - Pido gráficos del día de hoy entre las 17:50 y las 19:00 en caso de que tena estos registros en php:

usuarios | hora
255 -> 17:50:00
200 -> 18:00:00
210 -> 18:10:00
190 -> 18:20:00
199 -> 18:30:00
222 -> 18:40:00
269 -> 18:50:00
300 -> 19:00:00

Con el while puedo sacar variable X e Y

Código PHP:
$y 255,200,210,190,199,222,269,300
$x 
17:50:00,18:00:00,18:10:00,18:20:00 .... 

y luego en


Código PHP:
$datay1 = array($y); // Aqui tiene que ir la cantidad de usuarios 
lo mismo con la x. El tema de las horas es facil...

Ahora mi problema es cuando quiero hacer la de los días. Por día tengo 144 resultados... si yo quiero graficár el avance diario como puedo hacer la consulta y luego el while teniendo en cuenta que si quier graficar un periodo de 15 dias no puedo tener en el eje x 2160 valores (144 por dia X 15 dias = 2160) ya que no se llegaría a ver en que día hubo bajas y cual hubo caídas.

Sinceramente agradezco a todos su ayuda desde ya.
Y pido a la gente que sabe que disculpe mi incompetencia, ya que solo tengo 16 años y me apasiona.
Espero que se entienda lo que me sucede y alguien pueda tirarme un salvavidas :D

Saludos!

PD - Aquí hay una vista previa del código


Última edición por HyQnet; 20/02/2012 a las 22:39 Razón: Agregamos muestra de codigo.