У меня проблема с индикатором выполнения, образованным таблицей и изображением в виде индикатора.
это формирование таблицы
<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 .. это до тех пор, пока значение $ больше не будет достаточно для заполнения или он достигает последнего $ bar5.
Однако это происходит «неправильно».
Что я в этом ошибаюсь?
Я решил проблему, изменив операцию:
$bar3_reduced = $bar3 - $bar2;
$new = $value - $bar2; //detract from the value the previous bar amount
$percent = ($new / $bar3_reduced)*100;
Так что теперь он сравнивает только прогресс на «новой» панели, а не подсчитывает их все.
Других решений пока нет …