【问题标题】:Morris Donut chart with data from mysql来自 mysql 的数据的莫里斯甜甜圈图
【发布时间】:2015-06-02 16:52:14
【问题描述】:

使用下面的代码,我正在尝试创建一个莫里斯甜甜圈图。但我没有得到预期的输出。 这是我第一次尝试通过从 mysql 获取数据来创建莫里斯图。所以如果有什么大错,请见谅。 这是代码“morris.php”

<?php
require_once('connection.php');
?>
<html>
<head>
 <link rel="stylesheet" href="morris.css">
 <script src="jquery.min.js"></script>
 <script src="raphael-min.js"></script>
 <script src="morris.min.js"></script>
 <meta charset=utf-8 />
</head>
<body>

<?php 
$sql= "select wlt_txn_cat as cat , sum(wlt_txn_amount) as amt from wallet_txns where wlt_txn_type = 'Expense' group by wlt_txn_amount desc";
$result = mysqli_query($GLOBALS["___mysqli_ston"], $sql) or die(((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));
if ( mysqli_num_rows($result) >0)
while($row = mysqli_fetch_array($result))
{
?>

<div id="donut-example" style="height: 250px;"></div>

<script type="application/javascript">

Morris.Donut({
  element: 'donut-example',
  data: [

    {label: "<?php echo $row['cat'] ?>", value: "<?php echo $row['amt'] ?>"}

        ]
  });

</script>

 <?php  } ?>

</body>
</html>

屏幕截图....

获取正确输出的实际代码(所附图像的右侧是下面的...我正在尝试使用 php 从 mysql db 获取“标签”和“值”。

Morris.Donut({
  element: 'donut-example',
  data: [
    {label: "Download Sales", value: 15},
    {label: "In-Store Sales", value: 30},
    {label: "Mail-Order Sales", value: 20},
    {label: "General Sales", value: 40}
  ],
  backgroundColor: '#ccc',
  labelColor: '#060',
  colors: ['#DD4B39','#4486F7','#FAC504','#019C5A']
  });

【问题讨论】:

  • “但我没有得到预期的输出”- 请告诉我们第一个你的预期输出是什么。
  • 对不起,每条记录的输出都在单独的行中。但通常在 Morris Donut 中,输出会显示在一个带有所有记录的圆圈中。
  • @PrajithAS - 使用附加信息更新您的问题。最好能显示预期结果和实际结果。
  • @Jeremy J Starcher - 附上屏幕截图和细节。我不知道我在要求一个不可能的想法。感谢您的支持。

标签: php morris.js


【解决方案1】:

在 Google 和 Stackoverflow 的帮助下(通过搜索文章和参考资料),我终于找到了解决方案。我不知道这是否是最好的解决方案。但它像我预期的那样对我有用。 这是使用的完整代码。

<html>
<head>
 <link rel="stylesheet" href="morris.css">
 <script src="jquery.min.js"></script>
 <script src="raphael-min.js"></script>
 <script src="morris.min.js"></script>
 <meta charset=utf-8 />
</head>
<body>

<?php
$db=new PDO('mysql:dbname=mydb;host=localhost;','root',''); 

$row=$db->prepare ("SELECT wlt_txn_cat as cat,sum(wlt_txn_amount)as amt FROM wallet_txns where  wlt_txn_cat <> 'Transfer' and wlt_txn_type = 'Expense' and wlt_txn_date between DATE (DATE_SUB(LAST_DAY(DATE_ADD(NOW(), INTERVAL 0 MONTH)),INTERVAL DAY(LAST_DAY(DATE_ADD(NOW(), INTERVAL 0 MONTH)))-1 DAY)) and date(CURDATE()) group by wlt_txn_cat ORDER BY wlt_txn_amount desc ");

$row->execute(); 
$json_data=array();  
foreach($row as $rec)  
{  
    $json_array['label']=$rec['cat'];  
    $json_array['value']=$rec['amt'];  
    array_push($json_data,$json_array);  
}  

{ ?>
<div id="donut-example" style="height: 250px;"></div>

<script type="application/javascript">

Morris.Donut({
  element: 'donut-example',
  data: <?php echo json_encode($json_data)?>
  });

</script>

<?php  } ?>

</body>
</html>

【讨论】:

    【解决方案2】:

    如果是重音字母,请记住:Put

    $db->query('SET NAMES utf8'); 
    

    在你的 PHP 文件中连接到数据库之后**

    否则,您将获得 null 值而不是标签。

    感谢这篇文章以及以下文章: Accented characters in mySQL table

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多