php - JQuery 用户界面 : How to use the progressbar to make a horizontal bar graph?

标签 php jquery mysql jquery-ui

我正在尝试将进度条用于非传统目的。我想使用该功能来显示从数据库中检索到的两个值的水平条形图。

我的 PHP/MySQL/JQuery:

// retrieve results for display
$query = mysql_query(" SELECT furniture_purchases, electronics_purchases FROM sales WHERE store_id = $storeId ");
$sales = mysql_fetch_array($query);
$furniture = $ratings[0];
$electronics = $ratings[1];

echo ("<script type='text/javascript'>
            // display sales results
            $(document).ready(function() {
                $('div.furnitureBar').progressbar({ value: $furniture });
                $('div.electronicsBar').progressbar({ value: $electronics });
            });
        </script>");

我的 HTML:

<div class='furnitureBar'></div>
<div class='electronicsBar'></div>

现在的问题是,如果售出 101 件家具,家具的进度条将填满整个空间,因为根据 JQuery 进度条文档,100 是最大值:http://jqueryui.com/demos/progressbar/

相反,我希望这两个值相互比较时动态形成,因此如果售出 101 件家具和 90 件电子产品,那么两个条形图应该位于中间,而不是看起来 100 是最大数量销售可能。事实上,最大销售数量没有限制。

希望我说得有道理。

最佳答案

您需要缩放值以使其适合。 示例:

$furniture = $ratings[0];
$electronics = $ratings[1];

$max = max($furniture, $electronics);
if ($max > 100){
   $furniture *= (100 / $max);
   $electronics *= (100 / $max);
}

此示例确定其中一个数字是否大于 100,这会导致溢出(对于进度条)。如果是,它会计算一个比率,使最高数字现在为 100。然后,它会相应地调整第二个数字。如果您需要一个整数值,只需四舍五入或将 (int) 转换为值。

背后的数学原理:

假设 $furniture 是 104,$electronics 是 76。正如您所指出的,104 将不起作用,因为 jQuery UI 进度条只支持以下值100.

104 大于 76,因此我们计算比率以调整值,如下所示:100/104 = 0.961538462。所以;

0.961538462 * 104 = 100

0.961538462 * 76 =(四舍五入)73

关于php - JQuery 用户界面 : How to use the progressbar to make a horizontal bar graph?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3747658/

相关文章:

javascript - 将偏移量添加到javascript

javascript - 使用 javascript/jQuery 在 oracle apex 中以编程方式禁用按钮

mysql - SQL - 最佳方式[期初期末余额]

mysql - Sequelize.js 将别名关联与非别名关联一起加入

php - 传递变量作为上传目录

php - 登录后无法查看页面

php - 获取Laravel的store函数唯一ID

javascript - 根据第一个下拉选择 jquery 显示第二个下拉选项

php - LinkedIn 不接收 og :image

mysql - 索引的部分唯一性