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 多维数组排序实现代码
Aug 05 PHP
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
CodeIgniter中实现泛域名解析
Jul 19 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
Linux中为php配置伪静态
Dec 17 PHP
前端必学之PHP语法基础
Jan 01 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
tp5框架无刷新分页实现方法分析
Sep 26 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
博士208HAF收音机实习报告
2021/03/02 无线电
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
python3音乐播放器简单实现代码
2020/04/20 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
Python应用库大全总结
2018/05/30 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
python os模块简单应用示例
2019/05/23 Python
Python缓存技术实现过程详解
2019/09/25 Python
Python类中self参数用法详解
2020/02/13 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
法学个人求职信范文
2014/01/27 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
Nginx进程调度问题详解
2021/09/25 Servers