-1
我有一個產品數據庫,table1包含當前價格,table2包含以前的價格。帶有數據庫數據的百分比計算失敗
我要計算每個項目,就是在價格上的差異,就是在百分比差異。
出於某種原因,百分比計算不工作,並返回一個零。
要確保我的計算本身是好的,我把同樣的產品,併爲起初我取了DB後確定的項目值,以及二審的計算是直接從DB。
只有第一種情形下正常工作,returing -17%
差異。
代碼:
<?php
/* database section start */
$mysqli = new mysqli("db","user","pass","db_name");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* database section end */
// Choose Relevant Products, and turn them into an array
$item_array = array(
'item1',
'item1'
);
//implode items, turn into string
$item_implode = join("','", $item_array);
//declare an overall array for result
$product = array();
$result = $mysqli->query("SELECT p.Name, p.now_price, h.was_price FROM table1 p LEFT JOIN table2 h ON p.ProductId = h.ProductId WHERE p.Name IN ('$item_implode') ORDER BY FIELD (p.Name, '$item_implode');");
while($row = $result->fetch_assoc()) {
$product_name = $row['Name'];
// find all keys in $item_array which value is the products
$keys = array_keys($item_array, $product_name);
foreach ($keys as $key) {
// add values for these keys
$product[$key + 1]["Name"] = $row['Name'];
$product[$key + 1]["now_price"] = $row['now_price'];//
$product[$key + 1]["was_price"] = $row['was_price'];
$product[$key + 1]["delta"] = $row['now_price']-$row['was_price'];
$product[$key + 1]["delta_percent"]= $row['delta']/$row['was_price'];
}
}
// Manual definition:
$product[1]["delta"]=$product[1]["now_price"]-$product[1]["was_price"];
$product[1]["delta_percent"]= $product[1]["delta"]/$product[1]["was_price"];
?>
<body>
<?php $i = 1; while ($i <= 2) { ?>
<ul class="listab">
<li>#: <?= $i ?></li>
<li>Now: <?= $product[$i]["now_price"] ?></li>
<li>Was: <?= $product[$i]["was_price"] ?></li>
<li>Diff: <?= $product[$i]["delta"] ?></li>
<li>Per: <?= $product[$i]["delta_percent"] ?></li>
</ul>
<?php $i = $i + 1; } ?>
</body>
</html>
輸出:
#: 1
Now: 306.99
Was: 369.99
Diff: -63
Per: -0.170274872294
#: 2
Now: 306.99
Was: 369.99
Diff: -63
Per: 0
謝謝。也許有一些更好的方法來計算從蝙蝠的百分比差異? – rockyraw
我已經展示瞭如何在SQL中完成它。 – Barmar