Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Grafica Pchart generada con consulta Mysql

Estas en el tema de Grafica Pchart generada con consulta Mysql en el foro de Bases de Datos General en Foros del Web. Hola foreros, estoy trabajando graficas pie3D con las utilidades de PChart. Esta grafica la genero a través de una consulta que hago a Mysql, dicha ...
  #1 (permalink)  
Antiguo 19/08/2010, 20:26
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 14 años, 5 meses
Puntos: 0
Grafica Pchart generada con consulta Mysql

Hola foreros, estoy trabajando graficas pie3D con las utilidades de PChart. Esta grafica la genero a través de una consulta que hago a Mysql, dicha consulta es ta limitada a sacar los resultados de la edad de los usuarios que estan ingresados entre dos fechas "between" pero a la hora de generar me da el siguiente error

Warning: Invalid argument supplied for foreach() in C:\AppServ\www\pChart\pChart.class on line 3338

Warning: max() [function.max]: Array must contain at least one element in C:\AppServ\www\pChart\pChart.class on line 3349

Warning: Invalid argument supplied for foreach() in C:\AppServ\www\pChart\pChart.class on line 2650
[FATAL] Pie chart can only accept one serie of data.


el codigo es el siguiente, agradeceria que algiuien me lo revisara y me dijera que estoy haciendo mal en la consulta.

Código PHP:
<?php 

include "conexxion.php";
require_once(
"fondo.html");
$cn=LibMySQL::getInstancia();
include(
"pChart/pData.class");
include(
"pChart/pChart.class");

$busqueda $_POST['fecha1'];
$busquedaa $_POST['fecha2'];
                      
    
$rs=$cn->consultar("SELECT COUNT(*) as cedad,edad  FROM usuario_principal GROUP BY edad asc WHERE fecha BETWEEN '$fecha1' AND '$fecha2' ;");
    
$edad=array();
    
$cedad=array();
    foreach(
$rs as $datos){
    
$edad[]=$datos['edad']." años";    
    
$cedad[]=$datos['cedad'];
        }
     
$DataSet = new pData;
 
$DataSet->AddPoint($edad,"Edad");
 
$DataSet->AddPoint($cedad,"Porcentajes");
 
$DataSet->AddAllSeries();
 
$DataSet->SetAbsciseLabelSerie("Edad"); 
 
$Test = new pChart(380,200);
 
$Test->drawFilledRoundedRectangle(7,7,373,193,5,240,240,240);
 
$Test->drawRoundedRectangle(5,5,375,195,5,230,230,230);
  
$Test->setGraphArea(50,30,585,200);
$Test->setFontProperties("Fonts/tahoma.ttf",10);
$Test->drawTitle(10,20,"EDADES",100,100,100);
 
$Test->setFontProperties("Fonts/tahoma.ttf",8);
 
$Test->drawPieGraph($DataSet->GetData(),$DataSet->GetDataDescription(),150,90,110,PIE_PERCENTAGE,TRUE,50,20,5);
 
$Test->drawPieLegend(310,15,$DataSet->GetData(),$DataSet->GetDataDescription(),250,250,250);
   
$Test->Render("Reporteedad.png");
?>
  #2 (permalink)  
Antiguo 19/08/2010, 21:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Grafica Pchart generada con consulta Mysql

La sentencia SQL contiene un error de sintaxis.
El GROUP BY va siempre luego del WHERE, o bien como última cláusula.
Código MySQL:
Ver original
  1. SELECT COUNT(*) cedad,edad  
  2. FROM usuario_principal
  3. WHERE fecha BETWEEN '$fecha1' AND '$fecha2'
  4. GROUP BY edad asc ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 19/08/2010, 22:17
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Grafica Pchart generada con consulta Mysql

Gracias gnzsoloyo, ahora ya no aparece el error, si me genera la grafica pero ahora no toma los datos del rango seleccionado, solamente me grafica 1 valor, que puede estar pasando?
  #4 (permalink)  
Antiguo 19/08/2010, 22:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Grafica Pchart generada con consulta Mysql

Que todos los registros tengan el mismo valor en `edad`...
El agrupamiento crea conjuntos donde el valor es el mismo. Si no hay más que una edad en todos los registros, entonces el criterio no es suficientemente discriminante.
Analiza qué es lo que más te conviene usar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 19/08/2010, 23:11
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Grafica Pchart generada con consulta Mysql

Todos registros tiene un valor diferente, pues anteriormente hice una consulta para que me diera los resultados en fila y lo saco muy bien, pero a la hora de aplicar la misma consulta a la grafica es donde da el problema

mira esta es la consulta que si funciona


Código PHP:
<?php $sql "SELECT edad,COUNT(*) as total  FROM usuario_principal WHERE fecha BETWEEN '$fecha1' AND '$fecha2' GROUP BY edad"

$resmysql_query($sql) or die (mysql_error());
?>
             <?php while ($fila mysql_fetch_array($res)) {?>
        <center>
    <font color='purple' size='2' face='Helvetica'>    
             <b><i><?php echo $fila['edad'?> &nbsp;a&ntilde;os &nbsp; &nbsp;   
                :      &nbsp;&nbsp;    <?php echo $fila['total']?> &nbsp;Usuario</b></i><br>
                
<?php }
mysql_free_result($res);
?>

Última edición por mevgdea; 22/08/2010 a las 15:47
  #6 (permalink)  
Antiguo 23/08/2010, 20:47
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Grafica Pchart generada con consulta Mysql

Porfavor sigo sin resolver mi problema, necesito ayuda para resolver mi consulta para mi grafica, debo estar haciendo algo mal pero no se donde si es en la consulta o en el array

Etiquetas: mysql, gráficos
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 14:30.