PHP+MySQL开发小项目的集合笔记(四)控制div的排列和p标签,从另外表读取加工数据并规定小数点位数

需求:HTML页面增加注释,div盒子控制曲线大小,多个盒子相互嵌套。具体数据从另外表内获取。

HTML页面更改:

<!-- Morris chart - Sales -->
              <!-- Change! -->
              <div class="chart tab-pane active" style="height: 300px;">
				<div style="float:left;margin: 15% 0% 0% 1%;word-wrap:break-word; width:76px;">Headcount (man/days)</div>
				<div class="chart tab-pane active" id="revenue-chart" style="float:left;position: relative; height: 276px;width:86%;" >
				</div>
				<p class="margin" style="margin: 0 auto; text-align: center">Number of RMKs</p>
			  </div>
<!-- Change End! -->
              <div class="chart tab-pane" id="sales-chart" style="position: relative; height: 300px;"></div>

根据:
var area = new Morris.Area({})
$('.box ul.nav a').on('shown.bs.tab', function () {
    area.redraw();
    donut.redraw();
    line.redraw();
  });
html:
<ul class="nav nav-tabs pull-right">
              <li class="active"><a href="#revenue-chart" data-toggle="tab">Area</a></li>
可知与ul.nav的a标签有关。#revenue-chart

首先要在div盒子外侧加边框border: 1px solid red;来区别盒子的位置。当一个盒子内只有两个盒子的时候,需要并排可以使用float:left; display:inline;来让两个盒子并排。控制盒子的大小最好用直接使用margin: 10% 0% 0% 0%;可以控制上右下左,与旁边盒子的边距,padding是控制盒子内的边距。让单词按照单词的实际宽度换行,可以使用word-wrap:break-word;如果让其拆单词方式换行使用其他命令。id是唯一指示符,用来准确定位。让盒子的位置整体变动使用position: relative;相对于前面的容器定位的,和absolute是相对于浏览器的定位。加字,尽量使用p标签,比div要节省资源。text-align: center可以让字以中间位置排列。

另外根据html的注释可以获取到渲染css的具体位置,查看Morris的js位置。

 

从另外表读取数据,并规定小数点位数的显示。

while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){
			$user = new User();
			$user->ID = $row["ID"];
			$TID = $row["ID"];
			$Tempsql = "SELECT * FROM test_sizing WHERE  `RMK` =  '{$TID}' ";
			$Tempresult = $mysqli->query($Tempsql);
			$Temprow = mysqli_fetch_array($Tempresult,MYSQLI_ASSOC);
			if($Temprow == NULL){
				$user->TDC_PlanningHC = "0";
				$user->TDC_EntryHC = "0";
				$user->TDC_ExitHC = "0";
				
			}else{
				for($i = 0;$i < 3;$i++){
					$Tsql = "SELECT SUM(Headcount) FROM test_sizing WHERE  `RMK` =  '{$TID}' AND  `Phase` =  '{$i}'";
					$Tresult = $mysqli->query($Tsql);
					$Trow = mysqli_fetch_array($Tresult,MYSQLI_ASSOC);
					if($i == 0){
						$TDCPlHC = sprintf("%.1f",$Trow['SUM(Headcount)']);
						$user->TDC_PlanningHC = $Trow['SUM(Headcount)'];
					}else if($i == 1){
						$TDCEnHC = sprintf("%.1f",$Trow['SUM(Headcount)']);
						$user->TDC_EntryHC = $Trow['SUM(Headcount)'];
					}else if($i == 2){
						$TDCExHC = sprintf("%.1f",$Trow['SUM(Headcount)']);
						$user->TDC_ExitHC = $Trow['SUM(Headcount)'];
					}
				}
			}
			$data[]=$user;
			}
			
		$json = json_encode($data);
		$djson = json_decode($json,true);

			$Row1=0;
			$Row2=0;
			$Row3=0;
			$Row4=0;
		for($i = 0;$i < count($djson);$i++){
			$Row1 = 1 + $i;
			$djson[$i]["y"]=$Row1;

			$Row2 = $Row2 + floatval($djson[$i]["TDC_PlanningHC"]);
			$Row2R = sprintf("%.1f",$Row2);
			$djson[$i]["TDC_PlanningHC"]=$Row2R;

			$Row3 = $Row3 + floatval($djson[$i]["TDC_EntryHC"]);
			$Row3R = sprintf("%.1f",$Row3);
			$djson[$i]["TDC_EntryHC"]=$Row3R;

			$Row4 = $Row4 + floatval($djson[$i]["TDC_ExitHC"]);
			$Row4R = sprintf("%.1f",$Row4);
			$djson[$i]["TDC_ExitHC"]=$Row4R;
			
		}

代码中加入的内容:$Tempsql,来判断是否有必要从另外的表内查看数据。如果没有必要就设置为0。因为数据是以单列内不同数值0,1,2选择后,才能找到对应数据。所以需要筛选语句:

$Tsql = "SELECT SUM(Headcount) FROM test_sizing WHERE  `RMK` =  '{$TID}' AND  `Phase` =  '{$i}'";

筛选`Phase` =  '0'或1或2,按照不同的`RMK` =  'ID',筛选的数据直接求和,然后显示。其中$TDCPlHC = sprintf("%.1f",$Trow['SUM(Headcount)']);把对应的数据取小数点一位。在for循环的相加中要求最终的得数也要得到小数点一位。

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值