0

我的 mysql 数据库中有一个项目状态。根据状态,它是 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's 的值,但每次重新循环都会增加 33.3%?

如果循环将循环的时间量除以 projstatid 的最大量,那就更好了。但是我会弄清楚,一旦我有这个基本循环工作。

编辑

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

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%)

4

3 回答 3

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;
}
于 2012-12-05T14:52:06.783 回答
1

而不是递增$xuntil $x == $projectstatid,您可以使用 a 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%';
}

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

if ($projstatid == 1)
{
    echo "33.3%";
}
else if ($projstatid == 2)
{..}
else {...}
于 2012-12-05T15:09:40.233 回答
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>
于 2012-12-05T15:07:12.037 回答