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一些服务器端特性的配置加强php的安全
Oct 09 PHP
基于PHP 面向对象之成员方法详解
May 04 PHP
利用中国天气预报接口实现简单天气预报
Jan 20 PHP
织梦sitemap地图实时推送给百度的教程
Aug 03 PHP
win7安装php框架Yii的方法
Jan 25 PHP
PHP模板引擎Smarty内建函数详解
Apr 11 PHP
header与缓冲区之间的深层次分析
Jul 30 PHP
php实现微信企业付款到个人零钱功能
Oct 09 PHP
php实现银联商务公众号+服务窗支付的示例代码
Oct 12 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
Nov 09 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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
用libtemplate实现静态网页生成
2006/10/09 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
Jquery异步请求数据实例代码
2011/12/28 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
基于python if 判断选择结构的实例详解
2019/05/06 Python
Django实现文件上传下载功能
2019/10/06 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
python opencv实现图像配准与比较
2021/02/09 Python
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
如何安装ruby on rails
2014/02/09 面试题
化学学院毕业生自荐信范文
2013/12/17 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
南京青奥会口号
2014/06/12 职场文书
启动仪式策划方案
2014/06/14 职场文书
化学教育专业求职信
2014/07/08 职场文书
学习计划书怎么写
2014/09/15 职场文书
教师考核评语大全
2014/12/31 职场文书
专家推荐信怎么写
2015/03/25 职场文书
与死神共舞观后感
2015/06/15 职场文书
海底两万里读书笔记
2015/06/26 职场文书
元宵节晚会主持词
2015/07/01 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
javascript的var与let,const之间的区别详解
2022/02/18 Javascript