温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP如何实现动态柱状图改进版

发布时间:2021-06-25 14:16:58 来源:亿速云 阅读:114 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关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>    <h4 align="center">近一个月总的情况</h4>    <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 ></div>      </td>      <td>      <p><?php echo $d4[0]?></p>      <div ></div>      </td>      <td>      <p><?php echo $d2[0]?></p>      <div ></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>    <h4 align="center">近一个月每个人的情况</h4>    <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如何实现动态柱状图改进版”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI