【问题标题】:JpGraph: Create a PHP Bar chart using MySQL dataJpGraph:使用 MySQL 数据创建 PHP 条形图
【发布时间】:2013-11-30 18:33:15
【问题描述】:

通过取mysql数据库表的值,想用PHP创建一个条形图。我使用 JpGraph 来绘制条形图。 我想从“学生”表中获取数据。我有一个名为“类别”的列,其中的值为“全职”或“兼职”。我想数数。类别为“全职”的行数和类别为“兼职”的行数。 x 轴应该是类别,y 轴应该是相关的行数。 PHP代码如下;

<?php
 require_once('/jpgraph-3.5.0b1/src/jpgraph.php');
 require_once('/jpgraph-3.5.0b1/src/jpgraph_bar.php'); 
 $db = mysql_connect("localhost", "root","") or die(mysql_error());

 mysql_select_db("mphildatabase",$db) or die(mysql_error());

 $sql1 = mysql_query("SELECT category FROM student") or die(mysql_error());
 $sql2 = mysql_query("SELECT COUNT(*) FROM student WHERE category='Full Time'") or die(mysql_error());
 $sql3 = mysql_query("SELECT COUNT(*) FROM student WHERE category='Part Time'") or die(mysql_error());
 while($row1 = mysql_fetch_array($sql1))
 {
 $row2 = mysql_num_rows($sql2);
 $row3 = mysql_num_rows($sql3);
 $data[] = $row2;
 //$data[] = $row3;
 $leg[] = $row1['category'];
 }
 $graph = new Graph(950,750,"auto");
 $graph->SetScale("textint");
 $graph->img->SetMargin(50,30,50,50);

 $graph->SetShadow();

  $graph->xaxis->SetTickLabels($leg);

  $bplot = new BarPlot($data);
  $bplot->SetFillColor("lightgreen"); 
  $bplot->value->Show();
  $bplot->value->SetFont(FF_ARIAL,FS_BOLD);
  $bplot->value->SetAngle(45);
  $bplot->value->SetColor("black","navy");

  $graph->Add($bplot);
  $graph->Stroke(); ?>

这将为每行提供一个单独的条形图。将为每一行打印条形图,所有这些条形图的 y 轴值为 1。如何绘制只有 2 个条形的条形图,一个显示类别为“全职”的行数,其他栏显示类别为“兼职”的行数? 谢谢!

【问题讨论】:

    标签: php mysql graph bar-chart jpgraph


    【解决方案1】:

    您必须只使用一个查询,并在一个循环中填充数组。 您的查询必须是:

    "SELECT count(*) as num_rows, category from 
    student WHERE category ='Full Time' or Category= 'Part Time'
    Group by Category
      "
    
    ...
    
    while($row1 = mysql_fetch_array($sql1))
    {
    $leg[] = $row1['category'];
    $data[] = $row1['num_rows']
    }
    

    【讨论】:

    • 这将给出一条错误消息,因为“X 或 Y 数据数组包含非数值。检查数据是否真的被指定为数字数据而不是字符串。这是为什么呢?
    • 解决了!将数组更改为 $leg[] = $row1['num-rows']; $data[] = $row1['category']; 。谢谢@chessar。
    猜你喜欢
    • 2016-08-22
    • 2012-12-09
    • 1970-01-01
    • 2015-09-03
    • 2016-07-06
    • 1970-01-01
    • 2015-05-21
    • 2014-01-05
    • 2022-01-13
    相关资源
    最近更新 更多