Reputation: 33
I have generated a function that will go through my records within my database table and turn them into an array for further use
public function cycleCount()
{
global $db;
$selectProducts = $db->query("SELECT * FROM stockroom_products");
$results = array("catA", "catB", "catC");
while($row = $db->assoc($selectProducts))
{
if($row['Product_PRICE'] >= 10)
{
array_push($results, "catA", $row['ID']);
}
else if ($row['Product_PRICE'] >= 5 AND $row['Product_PRICE'] < 10)
{
array_push($results, "catB", $row['ID']);
}
else if ($row['Product_PRICE'] > 0 AND $row['Product_PRICE'] < 5)
{
array_push($results, "catC", $row['ID']);
}
$json_data = json_encode($results);
//echo $json_data;
echo $json_data;
}
}
And I can't seem to figure out how to make the array like
[catC[ID1, ID2, ID3]], [catB[ID1, ID2, ID3]], [catA[ID1, ID2, ID3]]
at the moment it does this
["catA","catB","catC","catB","1"]["catA","catB","catC","catB","1","catC","2"]["catA","catB","catC","catB","1","catC","2","catC","3"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14","catA","16"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14","catA","16","catB","17"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14","catA","16","catB","17","catA","18"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14","catA","16","catB","17","catA","18","catA","19"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14","catA","16","catB","17","catA","18","catA","19","catB","20"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14","catA","16","catB","17","catA","18","catA","19","catB","20","catB","21"]
Upvotes: 0
Views: 49
Reputation: 10760
array_push
does not key as second parameter according to the docs: http://php.net/manual/de/function.array-push.php
You should instead do it like this:
$results = array("catA" => [], "catB" => [], "catC" => []);
if($row['Product_PRICE'] >= 10)
{
$results["catA"][] = $row['ID'];
}
else if ($row['Product_PRICE'] >= 5 AND $row['Product_PRICE'] < 10)
{
$results["catB"][] = $row['ID'];
}
else if ($row['Product_PRICE'] > 0 AND $row['Product_PRICE'] < 5)
{
$results["catC"][] = $row['ID'];
}
Does that work for you?
Upvotes: 0
Reputation: 1680
try it
piblic function cycleCount(){
global $db;
$selectProducts = $db->query("SELECT * FROM stockroom_products");
$catA =array();
$catB =array();
$catC =array();
$results = array();
while($row = $db->assoc($selectProducts))
{
if($row['Product_PRICE'] >= 10)
{
array_push($catA,array('catA' =>$row['ID']));
}
else if ($row['Product_PRICE'] >= 5 AND $row['Product_PRICE'] < 10)
{
array_push($catB,array('catB' =>$row['ID']));
}
else if ($row['Product_PRICE'] > 0 AND $row['Product_PRICE'] < 5)
{
array_push($catC,array('catC' =>$row['ID']));
}
$json_data = json_encode($results);
//echo $json_data;
echo $json_data;
}
$results=array($catA,$catB,$catC);
print_r($results);
}
?>
Upvotes: 0
Reputation: 676
You're pushing values to a string which doesn't work.
Try defining your result array like so:
$result = array("catA" => array(), "catB" => array(), "catC" => array());
This should get you nested arrays and thus the result you seek.
Also use array_push($result['catA'], $row['ID']);
instead of array_push($reuslt, 'catA', $row[ID'])
And as @u_mulder correctly states the json should be echoed after the while loop!
Upvotes: 2