我在MYSQL数据库中有一个包含14586条记录的表。
每条记录都有一行名为active
,值为0。
在某个时刻,此active
行的值变为1。
我需要做的只是显示bootstrap progress bar
,显示进度条中包含active=1
的字段。
我试过这样的事情:
PHP:
$result = mysqli_query($db_conx, "SELECT count(*) FROM mytable WHERE active=1");
$row = mysqli_fetch_row($result);
$num = $row[0];
Bootstrap HTML:
<div class="progress">
<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width:<?php echo $num; ?>%">
<?php echo $num; ?>%
</div>
</div>
但这是错误的,因为我在进度条中得到了一个像这个14586%的愚蠢数字。
有人可以就此提出建议吗?
任何帮助都会很棒。
提前致谢。
答案 0 :(得分:1)
您需要获取没有WHERE
过滤器的总记录以及带有WHERE active=1
的总记录。这将允许您计算从0到100的百分比值。
[total active=1] / [total records] * 100 = [percent from 0 - 100]
示例:7293 / 14586 = 0.5 * 100 = 50%
答案 1 :(得分:1)
您需要表格中的总行数,在您的情况下为14,586,即100%。获取您在示例中的数字并除以100.然后,您将使用round((float)$num * 100 ) . '%';
对数字进行四舍五入以获得百分比。
答案 2 :(得分:0)
假设您要将百分比显示为2位小数,那么您可以将其用作mysqli_query语句:
"select format(100*sum(active)/count(active),2) from mytable"
要获得向上舍入的数字,请将上述格式函数的最后一个参数更改为0.
说明:sum(active)
将这些相加,相当于计算它们,假设该列中唯一的其他值为零或空。另一方面,count(active)
计算1和0,忽略空值(如果有的话)。
如果您希望分母总数包含active
列既不是0也不是1的偶数行,包括空值,那么您将使用count(active)
代替count(*)
而不是active
会计算表中的所有记录。
如果你不确定sum(active)
列是否可能有其他数字(可能是错误的,例如2,5等),那么代替sum(active=1)
使用更精确的{{1}这意味着活动的总和,其中active = 1 。