Advertisements
How do I divide the current value with previous value to get growth or shortage percentage in an array of foreach loop in Codeigniter.
My model is:
public function get_monthly_collection() {
$sql = 'SELECT p.*,
t.trnx_date
, SUM(CASE WHEN `category` = 2 THEN amount END) AS reg
, SUM(CASE WHEN `category` = 3 THEN amount END) AS rec
, SUM(CASE WHEN `category` = 4 THEN amount END) AS blk
, SUM(CASE WHEN `category` = 5 THEN amount END) AS leg
FROM mcl_transactions t
LEFT JOIN projects p ON p.title = t.mcl_no
WHERE p.project_no = 1 AND t.trnx_date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
GROUP BY t.trnx_date
ORDER BY t.trnx_date DESC';
$query = $this->db->query($sql);
if ($query->num_rows() > 0) {
return $query->result();
} else {
return null;
}
}
My View File looks like:
<div class="col-md-12">
<div class="card">
<div class="card-body p-3">
<div class="row">
<?php $reg_coll = $this->Project_model->get_monthly_reg_coll();?>
<?php foreach($reg_coll as $coll) { ?>
<div class="col-md-4">
<table style="font-size:12px" class="table table-sm table-bordered border-primary text-center">
<tr>
<td class="text-primary" colspan="4"><?php echo DATE('d-M D',strtotime($coll->trnx_date)); ?></td>
</tr>
<tr class="bg-primary text-white">
<td>Regular</td>
<td>Recovery</td>
<td>Block</td>
<td>Legal</td>
</tr>
<tr>
<td><?php echo number_format($coll->reg,0);?></td>
<td><?php echo number_format($coll->rec,0);?></td>
<td><?php echo number_format($coll->blk,0);?></td>
<td><?php echo number_format($coll->leg,0);?></td>
</tr>
<tr>
<td colspan="4"><?php echo 'Divide Current Value with Previous Value'; ?></td>
</tr>
</table>
</div>
<?php } ?>
</div>
</div>
</div>
</div>
Inside the last table cell I want to divide second index value with first index value to know if the collection amount is improving or decreasing. How can I achieve this. Thanks in advance.
>Solution :
If I’m understanding you correctly you’re looking to run a calculation based on the previous $coll
?
For that you can store the previous in a variable at the end of a loop, that way it can be referenced on the next item.
<?php $previousValue = null; ?>
<?php
foreach($reg_coll as $coll){
// ... Other stuff here
if($previousValue !== null){
echo $coll->value / $previousValue;
}
$previousValue = $coll->value;
}
?>