使用PHP的MYSQL数据的Bootstrap进度条?

时间:2017-09-06 18:37:01

标签: php mysql twitter-bootstrap

我在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%的愚蠢数字。

有人可以就此提出建议吗?

任何帮助都会很棒。

提前致谢。

3 个答案:

答案 0 :(得分:1)

您需要获取没有WHERE过滤器的总记录以及带有WHERE active=1的总记录。这将允许您计算从0到100的百分比值。

[total active=1] / [total records] * 100 = [percent from 0 - 100]

示例:7293 / 14586 = 0.5 * 100 = 50%

请参阅:https://en.wikipedia.org/wiki/Percentage

答案 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