我遇到了一个由表格和图像形成的进度条的问题。
这是表格形式
<td><?php echo $img1; ?></td>
<td><?php echo $img2; ?></td>
<td><?php echo $img3; ?></td>
<td><?php echo $img4; ?></td>
<td><?php echo $img5; ?></td>
这是php代码:
<?php
$value = 10000 //this value is obtained by SQL
$bar1 = 2600 //is the value of the first bar, obtained by SQL
$bar2 = 9950 //is the value of the second bar, obtained by SQL
$bar3 = 13010 //same as before
$bar4 = 17500 //same as before
$bar5 = 19500 //same as before
if($value > 0) && ($value < $bar1) {
$percent = ($value / $bar1) *100;
$bar1 = '<img src="progress.png" width="'.$percent.'" />';
}
if($value >= $bar1) {
$percent = '100';
$bar1 = '<img src="reached.png" width="'.$percent.'" />';
?>
并且对于第一个栏是好的,按预期工作,如果值是$ bar1金额的次要值,那么它将其显示为进度,如果相反,它高于$ bar1金额,它将其显示为已到达。
问题从其他栏开始,以第3栏为例:
<?php
if($value > $bar2) && ($value < bar3) {
$percent = ($value / $bar3) *100;
$bar3 = '<img src="progress.png" width="'.$percent.'" />';
}
>?
显然百分比的反应是:76%,它几乎完全填满所有栏。事实上,之前的条形设置为9950,值为10000,因此在$ bar3(13010)上应显示类似(在30%之间),而不是76%。
目的很简单:
当$值,它填充$ bar1,然后它继续并开始填充$ bar2,如果这个也被填充,然后它移动到$ bar3 ..这直到$ value不够再填充或它到达最后的$ bar5。
但是,这种情况发生了“错误”。
我误解了这个?
答案 0 :(得分:0)
我通过更改操作解决了这个问题:
$bar3_reduced = $bar3 - $bar2;
$new = $value - $bar2; //detract from the value the previous bar amount
$percent = ($new / $bar3_reduced)*100;
所以现在只比较&#34; new&#34;吧,而不是全部计算。