我的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%)
答案 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>