我对进度条百分比有疑问。我正在使用 MySQL 数据库创建投票系统(是/否),如果 2 个数字加起来超过 100,则进度条无法正常工作。 http://i.stack.imgur.com/uTpdM.png
我只需要将数字“转换”为百分比,即使票数超过 100。例如,如果有 1000 票(750 票赞成,250 票反对),结果应该是“75%是,25% 否”。
提前致谢!
<body>
<?php
define('HOST', 'localhost');
define('USER', 'root');
define('PASSWORD', '');
define('DB', 'rating');
$db_connection = new mysqli(HOST, USER, PASSWORD, DB);
$SQL_REQUEST = "SELECT Yes, No FROM `ratings`";
$RESULT = $db_connection->query($SQL_REQUEST);
if($RESULT->num_rows > 0)
{
while($ROW = $RESULT->fetch_assoc())
{
$gp = $ROW['Yes'];
$bp = $ROW['No'];
}
}
?>
<div class="container">
<div class="panel panel-default panel-margin-top">
<div class="transparent">
<div class="panel-heading">
<div class="panel-title">
Rate It
</div>
</div>
</div>
<div class="panel-body">
<div class="progress">
<div class="progress-bar progress-bar-success" style="width:<?php echo $gp ?>%"><?php echo $gp ?>% users voted Yes</div>
<div class="progress-bar progress-bar-danger" style="width:<?php echo $bp ?>%"><?php echo $gp ?>% users voted No</div>
</div>
</div>
</div>
</div>
</body>
最佳答案
你覆盖了yes
, 和 no
在每次迭代中。
while($ROW = $RESULT->fetch_assoc())
{
$gp = $ROW['Yes'];
$bp = $ROW['No'];
}
您重新分配值。我会这样做:
$gp = 0;
$bp = 0;
while($ROW = $RESULT->fetch_assoc())
{
$gp = !empty($ROW['Yes']) ? $gp + 1 : $gp;
$bp = !empty($ROW['No']) ? $bp + 1 : $bp;
}
或者如果$ROW['Yes']
和 $ROW['No']
是 tinyints....
$gp = 0;
$bp = 0;
while($ROW = $RESULT->fetch_assoc())
{
$gp += $ROW['Yes'];
$bp += $ROW['No'];
}
因为您只有一行,所以不需要循环获取。
if($RESULT->num_rows > 0)
{
$ROW = $RESULT->fetch_assoc())
$gp = empty($ROW['Yes']) ? 0 : $ROW['Yes'];
$bp = empty($ROW['No']) ? 0 : $ROW['No'];
$yes_vote_average = round(($gp / ($gp + $bp)) ,2) * 100;
$no_vote_average = round(($bp / ($gp + $bp)), 2) * 100;
}
然后使用 $yes_vote_average
和 $no_vote_average
在<div>...</div>
分别输出。
关于PHP 进度条 : % Of 2 Numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39191768/