PHP实现动态柱状图改进版


Posted in PHP onMarch 30, 2015

本文实例分析了PHP实现动态柱状图的改进版。分享给大家供大家参考。具体分析如下:

前面已经写过如果只做动态柱状图的情况,其实原理还是很简单的。因为昨天下午有新的需求,今天上午又修改了一番,并将数据根据编号不同分割显示在表中。

下面把代码粘出来,方便以后自己查看,思路只是一时的火花,今天我想出来这么做,不一定下次还能想得到,也不用费劲的去想,所以写成笔记是比较好的形式。

<!DOCTYPE html> 
<?php 
// 计算上一个月的今天 
function last_month_today($time) 
{ 
  $last_month_time = mktime(date("G", $time), date("i", $time), date("s", $time), date("n", $time), 0, date("Y", $time)); 
  $last_month_t = date("t", $last_month_time); 
  if ($last_month_t < date("j", $time)) { 
  return date("Y-m-t H:i:s", $last_month_time); 
  } 
  return date(date("Y-m", $last_month_time) . "-d", $time); 
} 
?> 
<?php 
include dirname(dirname(dirname(__FILE__))) . '/config.php'; 
$endDate = date('Y-m-d'); 
$date = strtotime($endDate); 
$beginDate = last_month_today($date); 
$sql = 'select count(*) from newpro where p_date>\'' . $beginDate . '\' and p_date<\'' . $endDate . '\''; 
$d = db()->query($sql)->fetch(PDO::FETCH_NUM); 
$sql2 = $sql . ' and is_pa_check_first=1 and is_pa_check_second=1 and is_pa_check_third=1'; 
$d2 = db()->query($sql2)->fetch(PDO::FETCH_NUM); 
$sql3 = $sql . ' and is_pa_check_first=1'; 
$d3 = db()->query($sql3)->fetch(PDO::FETCH_NUM); 
$sql4 = $sql . ' and is_pa_check_first=1 and is_pa_check_second=1'; 
$d4 = db()->query($sql4)->fetch(PDO::FETCH_NUM); 
// 查询每个人通过审核的情况: 
$sqlab = 'select d_m,sum(sroce) as total_score,count(d_m) as total_number 
from newpro 
  where is_pa_check_first=1 
  and is_pa_check_second=1 
  and is_pa_check_third =1 
group by d_m'; 
$row = db()->query($sqlab)->fetchAll(PDO::FETCH_ASSOC); 
?> 
<html> 
<head> 
<meta charset="utf-8" /> 
<style> 
div { 
  background-color: #669900; 
  width: 50px; 
} 
#div1 { 
  height: 200px; 
} 
#table td { 
} 
</style> 
<script type="text/javascript" src="../../../js/jquery-1.7.2.min.js"></script> 
</head> 
<body> 
  <h3 align="center">近一个月总的情况</h3> 
  <table border="0" align="center" id="table1"> 
  <caption> 
     <?php echo "时间:".$beginDate."至".$endDate?> 
     </caption> 
  <tr align="center" valign="bottom"> 
    <td> 
    <p><?php echo $d[0]?></p> 
    <div id="div1"></div> 
    </td> 
    <td> 
    <p><?php echo $d3[0]?></p> 
    <div style="height:<?php $str=floor(($d3[0]/$d[0])*200); echo $str.'px'?>"></div> 
    </td> 
    <td> 
    <p><?php echo $d4[0]?></p> 
    <div style="height:<?php $str=floor(($d4[0]/$d[0])*200); echo $str.'px'?>"></div> 
    </td> 
    <td> 
    <p><?php echo $d2[0]?></p> 
    <div style="height:<?php $str=floor(($d2[0]/$d[0])*200); echo $str.'px'?>"></div> 
    </td> 
  </tr>
  <tr align="center" valign="top"> 
    <td><p>总计</p></td> 
    <td><p>一审通过</p></td> 
    <td><p>二审通过</p></td> 
    <td><p>审核通过</p></td> 
  </tr> 
  </table> 
  <h3 align="center">近一个月每个人的情况</h3> 
  <table border="0" width="100%"> 
  <caption>每个人的完成情况如下表:</caption>
  <!-- 因为总的列数比较长,如果显示在一个表格中,数据会很拥挤,多的话根本就看不清楚。 
     所以需要将数据进行分割,根据长度进行动态的分割,显示在多张表中。 
   --> 
    <?php 
    $arr = array_chunk($row,2,false);//2表示分割的单位长度,false表示索引从0开始 
    foreach($arr as $newRow){ 
      $thStr = "<th style='background-color:#669900' width='110px' height='30px'>产品开发编号</th>"; 
      $trStr_total_score = "<tr align='center' style='background-color:silver' height='25px'><td>总分</td>"; 
      $trStr_total_number = "<tr align='center' style='background-color:silver' height='25px'><td>总数量</td>"; 
      $trStr_average_score = "<tr align='center' style='background-color:silver' height='25px'><td>平均分</td>"; 
      $resultStr = ""; 
      foreach ($newRow as $key => $value) { 
      // echo $key."=>".$value."<br/>"; 
      $x = 0; 
      foreach ($value as $key2 => $value2) { 
        // echo $key2 . "=>" . $value2 . "<br/>"; 
        if ($key2 == 'd_m') { 
        $thStr .= "<th style='background-color:#669900'>" . $value2 . "</th>"; // 表头 
        } elseif ($key2 == 'total_score') { 
        $value2 = sprintf("%.2f", $value2); //保留2位小数 
        $trStr_total_score .= "<td>" . $value2 . "</td>"; 
        $x += $value2; 
        } elseif ($key2 == 'total_number') { 
 
        $trStr_total_number .= "<td>" . $value2 . "</td>"; 
        $x /= $value2; 
        } 
      } 
      $x = sprintf("%.2f",$x); 
      $trStr_average_score .= "<td>" . $x . "</td>"; 
      } 
      echo "<table border='0' width='100%'>"; 
      echo $thStr; 
      echo $trStr_total_number . "</tr>"; 
      echo $trStr_total_score . "</tr>"; 
      echo $trStr_average_score . "</tr>"; 
      echo "</table>"; 
      echo "<p height='150px'></p>"; 
    } 
    ?> 
  </table> 
</body> 
</html>

数据库方便就不弄了,其实,根据查询的表名和字段名,是很容易建一个测试的数据表的。关键是思路,无论怎么变,思路是关键。

为了更加方便的了解代码的效果,截个图吧

PHP实现动态柱状图改进版

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP编程过程中需要了解的this,self,parent的区别
Dec 30 PHP
判断是否为指定长度内字符串的php函数
Feb 16 PHP
php利用iframe实现无刷新文件上传功能的代码
Sep 29 PHP
php增删改查示例自己写的demo
Sep 04 PHP
php批量更改数据库表前缀实现方法
Oct 26 PHP
PHP防止注入攻击实例分析
Nov 03 PHP
PHP版QQ互联OAuth示例代码分享
Jul 05 PHP
Yii使用Captcha验证码的方法
Dec 28 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
Jun 14 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 PHP
php7 图形用户界面GUI 开发示例
Feb 22 PHP
PHP动态柱状图实现方法
Mar 30 #PHP
php实现的一个简单json rpc框架实例
Mar 30 #PHP
php实现读取内存顺序号
Mar 29 #PHP
php实现插入排序
Mar 29 #PHP
php实现插入数组但不影响原有顺序的方法
Mar 27 #PHP
WordPress自定义时间显示格式
Mar 27 #PHP
在php和MySql中计算时间差的方法详解
Mar 27 #PHP
You might like
SONY ICF-SW55的电路分析
2021/03/02 无线电
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
2013/12/24 Javascript
使用console进行性能测试
2015/04/27 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
简单了解python关系(比较)运算符
2019/07/08 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
pyspark给dataframe增加新的一列的实现示例
2020/04/24 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
建筑专业自荐信
2013/10/18 职场文书
土木工程个人自荐信范文
2013/11/30 职场文书
大学生自荐书范文
2013/12/10 职场文书
业务员岗位职责范本
2013/12/15 职场文书
创业计划书模版
2014/02/05 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
什么是css原子化,有什么用?
2022/04/24 HTML / CSS