在php中为css进度条编写一个简单的for循环

时间:2012-12-05 14:48:45

标签: php mysql css loops progress-bar

我的mysql数据库中有一个projectstatus。根据状态,它是1,2或3.此外,我有一个css状态栏,我可以设置其宽度,以查看进度。

以下是示例代码:

<td>" . $projstatid ."
    <div class='meter-wrap'>
        <div class='meter-value' style='background-color: #0a0; width: 33,3%;'>
            <div class='meter-text'></div>
            </div>
    </div>
</td>

现在我可以在宽度大小上执行3个if语句,如:

if ($projstatid) = 1 { echo "33.3%"; } elseif {..} else {...}

但是我如何编写一个循环遍历数字的简单循环,直到它达到$projstatid的值,但每次重新循环都会增加33.3%?

如果循环将循环次数除以最大量的projstatids,那就更好了。但是,一旦我将这个基本循环工作,我就会弄明白。

修改

我要做的是创建一个执行此操作的循环:

x=1
y=0
$projectstatid = $record['projectstatid'] (in this example lets say it's 5)

loop: x=1, is it 5? Nope. return: y= +20%
loop: x=2, is it 5? Nope. return: y= +20%
etc.

直到它达到5(它将返回100%)

3 个答案:

答案 0 :(得分:2)

您可以执行以下操作来计算与当前值对应的百分比:

$percent = floor($number * 100 / $nbmax);

此处$percent是要放入css的值,$number是您当前的状态,$nbmax是它可能具有的最大值。

在你的情况下你会有:

$number  = $record['projstatid'];
$nbmax = 3;
$percent = floor($number * 100 / $nbmax);

编辑:根据你的编辑,我猜你想要这样的东西:

$number = 5;
for($i = 1 ; $i < $number; $i++) {
    $percent = floor($i * 100 / $number);
    echo $percent;
}

答案 1 :(得分:1)

您可以使用$x(这是一种循环),而不是在$x == $projectstatid之前增加switch

switch ($projectstatid)
{
    case 1:
        $y = '20%';
    break;
    case 2:
        $y = '40%';
    break;
    //etc, until the max is reached, in which case:
    default:
        $y = '100%';
}

有关switch声明的所有信息,请参阅the docs 如果这样:if ($projstatid) = 1 { echo "33.3%"; } elseif {..} else {...}就是您的代码的样子,那么它会保持回显33%并不奇怪,因为=是赋值运算符,并且赋值给变量几乎总是如此返回true。此外,你的括号不是它们应该的位置,它应该是这样的:

if ($projstatid == 1)
{
    echo "33.3%";
}
else if ($projstatid == 2)
{..}
else {...}

答案 2 :(得分:0)

<?php $meter_val = 0; ?>
<?php if ($projstatid <= 5) $meter_val = ($projstatid * 20);
<td>" . $projstatid ."
 <div class='meter-wrap'>
  <div class='meter-value' style='background-color: #0a0; width: <?php echo $meter_val; ?>%;'>
    <div class='meter-text'></div>
  </div>
 </div>
</td>