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原创论坛
Oct 09 PHP
PHP4与PHP3中一个不兼容问题的解决方法
Oct 09 PHP
PHP面向对象编程快速入门
Dec 14 PHP
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
PHP+XML 制作简单的留言本 图文教程
Nov 02 PHP
php 计划任务 检测用户连接状态
Mar 29 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
May 06 PHP
PHP SPL标准库之接口(Interface)详解
May 11 PHP
PHP怎样用正则抓取页面中的网址
Aug 09 PHP
PHP示例演示发送邮件给某个邮箱
Apr 03 PHP
对laravel的session获取与存取方法详解
Oct 08 PHP
php获取微信openid方法总结
Oct 10 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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
laravel model 两表联查示例
2019/10/24 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
jquery trim() 功能源代码
2011/02/14 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
python实现mysql的读写分离及负载均衡
2018/02/04 Python
基于python代码实现简易滤除数字的方法
2018/07/17 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
简单了解python的内存管理机制
2019/07/08 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
初级Java程序员面试题
2016/03/03 面试题
2014元旦晚会策划方案
2014/02/19 职场文书
公共场所标语
2014/06/30 职场文书
店面出租协议书范本
2014/11/28 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers