Update Amount in Repeat Group

skh

Member
I need to update the inventory amounts available after an order has been placed.

This is in a repeat group with joined data. Obviously not a php programmer, but trying to learn. I've tried the basic following code in a variety of different ways but can't seem to update the inventory. Any help will be much appreciated!

Code:
<?php
$repeatcount = $formModel->_formdata['fabrik_repeat_group'][14];
for($i=0; $i<$repeatcount; $i++ )
{
$batchNum = $formModel->_formdata['join'][26]['order_items___batch_id'][$i];
$ordQty = $formModel->_formdata['join'][26]['order_items___orditems_qty'][$i];
$db =& JFactory::getDbo();
$query = "UPDATE batch SET aval_cases = aval_cases - '$ordQty' WHERE batch_id = '$batchNum'";
$db->setQuery($query);
$db->query();
}
?>

I should add, I'm using this file to run php on my Form onAfterProcess.
 
Have you tried dumping the variables, make sure you are picking up everything correctly?

Try this:

PHP:
$db =& JFactory::getDbo();
$repeatcount = $formModel->_formData['fabrik_repeat_group'][14];
var_dump($repeatcount);echo "<br />";
for($i=0; $i<$repeatcount; $i++ )
{
$batchNum = $formModel->_formdata['join'][26]['order_items___batch_id'][$i];
$ordQty = $formModel->_formdata['join'][26]['order_items___orditems_qty'][$i];

$query = "UPDATE batch SET aval_cases = aval_cases - '$ordQty' WHERE batch_id = '$batchNum'";
var_dump($ordQty, $batchNum);echo "<br />";
$db->setQuery($query);
$db->query();
}
exit;

Which should print out those variables, then exit, so just those variable dumps show on your browser page.

-- hugh
 
Thanks hugh,

I used the var dump to see what was happening and I wasn't getting any data. I saw your new getElementData() method and used it. Now I'm getting results. However, the query is not pulling in the WHERE part. Here are the results. The quantity and batch id are coming across and the quantity is being used in the query, but the batch id is empty.

string(1) "1"
string(1) "5" array(1) { [0]=> string(2) "80" }
string(66) "UPDATE batch SET aval_cases = aval_cases - '5' WHERE batch_id = ''"

Here is the code I'm using to pull this:

Code:
<?php
$db =& JFactory::getDbo();
$repeatcount = $formModel->_formData['fabrik_repeat_group'][14];
var_dump($repeatcount);echo "<br />";
for($i=0; $i<$repeatcount; $i++ )
{
$batchNum = $formModel->getElementData('order_items___batch_id', false, '', $i);
$ordQty = $formModel->getElementData('order_items___orditems_qty', false, '', $i);
var_dump($ordQty, $batchNum);echo "<br />";
$query = "UPDATE batch SET aval_cases = aval_cases - '$ordQty' WHERE batch_id = " . $db->quote($batchNum);
var_dump($query);exit;
$db->setQuery($query);
$db->query();
}
?>

I've tried several different variations but can't seem to get it to populate properly.

Thanks for you help.

skh
 
As per the var_dump, your $batchNum is an array, so you need to extract the value from that.

So try this:

PHP:
<?php
$db =& JFactory::getDbo();
$repeatcount = $formModel->_formData['fabrik_repeat_group'][14];
var_dump($repeatcount);echo "<br />";
for($i=0; $i<$repeatcount; $i++ )
{
$batchNum = $formModel->getElementData('order_items___batch_id', false, '', $i);
if (is_array($btachNum)) {
   $batchNum = $batchNum[0];
}
$ordQty = $formModel->getElementData('order_items___orditems_qty', false, '', $i);
var_dump($ordQty, $batchNum);echo "<br />";
$query = "UPDATE batch SET aval_cases = aval_cases - '$ordQty' WHERE batch_id = " . $db->quote($batchNum);
var_dump($query);exit;
$db->setQuery($query);
$db->query();
}
?>

If that fixes the query, just take out the var_dump()'s and exit, and it should work.

-- hugh
 
We are in need of some funding.
More details.

Thank you.

Members online

Back
Top