tonton Posted May 1, 2015 Share Posted May 1, 2015 Hi I have a json data : { "email": "[email protected]", "line_items": [ { "sku": "123456789", "price": "0.67", "price_with_tax": "4.00", "tax_lines": [ { "title": "tax010", "rate": 0.01, "price": "1.11" }, { "title": "tax00200", "rate": 0.02, "price": "2.22" } ] }, { "sku": "012345666", "price": "1.67", "price_with_tax": "5.00", "tax_lines": [ { "title": "tax0003000", "rate": 0.03, "price": "3.33" } ] } ] } and I try put this data in mySql. First data have a good value but second have a wrong data on 'price_tax1' and 'price_tax2' in mySql : Here is my MySql 1st item :::: good value email:[email protected] sku:123456789 price:0.67 price_with_tax:4.00 price_tax1:1.11 price_tax2:2.22 2nd item :::: email:[email protected] sku:012345666 price:1.67 price_with_tax:5.00 wrong value :::: price_tax1:1.11 price_tax2:2.22 here is my code : $jsondata = file_get_contents($jsondata); $dataDecode = json_decode($jsondata); $email = $dataDecode->email; try { $dtbs = new PDO($dsn_dev, $pdo_user, $pdo_password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch (Exception $e) { die('Error : ' . $e->getMessage()); } try { foreach ($dataDecode->line_items as $obj) { $var_sku = $obj->sku; $var_price = $obj->price; $var_price_with_tax = $obj->price_with_tax; $taxNewArray = array(); foreach ($dataDecode->line_items[0]->tax_lines as $obj2) { array_push($taxNewArray , $obj2); } $val1st = array_shift($taxNewArray); $val2nd = array_pop ($taxNewArray); $var_tax1 = $val1st->price; $var_tax2 = $val2nd->price; $stmt = $dtbs->prepare("INSERT INTO $tabledata ($mysql_email, $mysql_sku, $mysq_price, $mysql_price_with_tax, $mysql_price__tax1___line_items, $mysql_price__tax2___line_items ) VALUES (:email, :sku, :price, :price_with_tax, :price_tax1, :price_tax2)"); $stmt->execute(array(':email'=>$email, ':sku'=>$var_sku, ':price'=>$var_price, ':price_with_tax'=>$var_price_with_tax, ':price_tax1'=>$var_tax1, ':price_tax2'=>$var_tax2 )); } } catch(Exception $e) { throw $e; } How can I put goog value of 2nd data in mySql ? thanks Link to comment https://forums.phpfreaks.com/topic/296022-json-data-in-array/ Share on other sites More sharing options...
jcbones Posted May 1, 2015 Share Posted May 1, 2015 Not sure what you are expecting for your "good" value. However, I think the code may be confusing you a bit. I've took the liberty to clean it up a might, with some notations. Hope it helps. try { $dtbs = new PDO($dsn_dev, $pdo_user, $pdo_password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch (Exception $e) { die('Error : ' . $e->getMessage()); } try { $stmt = $dtbs->prepare("INSERT INTO $tabledata ($mysql_email, $mysql_sku, $mysq_price, $mysql_price_with_tax, $mysql_price__tax1___line_items, $mysql_price__tax2___line_items ) VALUES (:email, :sku, :price, :price_with_tax, :price_tax1, :price_tax2)"); foreach ($dataDecode->line_items as $obj) { foreach ($dataDecode->line_items[0]->tax_lines as $obj2) { $stmt->execute(array(':email'=>$email, ':sku'=>$obj->sku;, ':price'=> $obj->price, ':price_with_tax'=>$obj->price_with_tax, ':price_tax1'=>$obj2->title, //is this suppose to be rate? ':price_tax2'=>$obj2->price )); } } } catch(Exception $e) { throw $e; } Link to comment https://forums.phpfreaks.com/topic/296022-json-data-in-array/#findComment-1510552 Share on other sites More sharing options...
jcbones Posted May 1, 2015 Share Posted May 1, 2015 One closer look, I believe this is what you are looking for. try { $dtbs = new PDO($dsn_dev, $pdo_user, $pdo_password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch (Exception $e) { die('Error : ' . $e->getMessage()); } try { $stmt = $dtbs->prepare("INSERT INTO $tabledata ($mysql_email, $mysql_sku, $mysq_price, $mysql_price_with_tax, $mysql_price__tax1___line_items, $mysql_price__tax2___line_items ) VALUES (:email, :sku, :price, :price_with_tax, :price_tax1, :price_tax2)"); foreach ($dataDecode->line_items as $obj) { $prices = (array)$dataDecode->line_items[0]->tax_lines; $price1 = !empty($prices[0]) ? $prices[0]->price : 0.00; $price2 = !empty($prices[1]) ? $prices[1]->price : 0.00; $stmt->execute(array(':email'=>$email, ':sku'=>$obj->sku;, ':price'=> $obj->price, ':price_with_tax'=>$obj->price_with_tax, ':price_tax1'=>$price1, ':price_tax2'=>$price2 )); } } catch(Exception $e) { throw $e; } Link to comment https://forums.phpfreaks.com/topic/296022-json-data-in-array/#findComment-1510554 Share on other sites More sharing options...
tonton Posted May 2, 2015 Author Share Posted May 2, 2015 Not sure what you are expecting for your "good" value. However, I think the code may be confusing you a bit. I've took the liberty to clean it up a might, with some notations. foreach ($dataDecode->line_items as $obj) { foreach ($dataDecode->line_items[0]->tax_lines as $obj2) { $stmt->execute(array(':email'=>$email, ':sku'=>$obj->sku;, ':price'=> $obj->price, ':price_with_tax'=>$obj->price_with_tax, ':price_tax1'=>$obj2->title, //is this suppose to be rate? ':price_tax2'=>$obj2->price )); } } } catch(Exception $e) { throw $e; } Hi Jcbones, Non, I have a wrong valus with this code! Here is a result : 1st item email:[email protected] sku:123456789 price:0.67 price_with_tax:4.00 price_tax1:tax010 wrong! [this is a good value : 1.11) price_tax2:2.22 2nd item :::: email:[email protected] sku:012345666 price:1.67 price_with_tax:5.00 wrong value :::: price_tax1:tax00200 wrong! [this is a good value : 3.33] price_tax: 2:2.22 wrong! [this is a good value : 0.00 or NULL] Link to comment https://forums.phpfreaks.com/topic/296022-json-data-in-array/#findComment-1510591 Share on other sites More sharing options...
tonton Posted May 2, 2015 Author Share Posted May 2, 2015 One closer look, I believe this is what you are looking for. foreach ($dataDecode->line_items as $obj) { $prices = (array)$dataDecode->line_items[0]->tax_lines; $price1 = !empty($prices[0]) ? $prices[0]->price : 0.00; $price2 = !empty($prices[1]) ? $prices[1]->price : 0.00; $stmt->execute(array(':email'=>$email, ':sku'=>$obj->sku;, ':price'=> $obj->price, ':price_with_tax'=>$obj->price_with_tax, ':price_tax1'=>$price1, ':price_tax2'=>$price2 )); } } catch(Exception $e) { throw $e; } , Hi jcbones, I have also wrong valus with this code! Here is a result : 1st item :::: good value email:[email protected] sku:123456789 price:0.67 price_with_tax:4.00 price_tax1:1.11 price_tax2:2.22 2nd item :::: email:[email protected] sku:012345666 price:1.67 price_with_tax:5.00 wrong value :::: price_tax1:1.11 wrong! [this is a good value : 3.33] price_tax2:2.22 wrong! [this is a good value : 0.00 or NULL] With 2nd Items we have only one tax in json data : look like that : for 1st item : "tax_lines": [ { "title": "tax010", "rate": 0.01, "price": "1.11" }, { "title": "tax00200", "rate": 0.02, "price": "2.22" } ] and for second item (only one tax) "tax_lines": [ { "title": "tax0003000", "rate": 0.03, "price": "3.33" } ] How I must write my code so I get the following result : first item value: ... price_tax1:1.11 price_tax2:2.22 second item value (when there are only one tax) ... price_tax1:3.33 price_tax2:0.00 or second item value (when there are only one tax) ... price_tax1:3.33 price_tax2:NULL Link to comment https://forums.phpfreaks.com/topic/296022-json-data-in-array/#findComment-1510592 Share on other sites More sharing options...
jcbones Posted May 3, 2015 Share Posted May 3, 2015 Try changing: $prices = (array)$dataDecode->line_items[0]->tax_lines; To: $prices = (array)$obj->tax_lines; Oversight in translation. Link to comment https://forums.phpfreaks.com/topic/296022-json-data-in-array/#findComment-1510649 Share on other sites More sharing options...
tonton Posted May 3, 2015 Author Share Posted May 3, 2015 Many Thanks Many Thanks Jcbones, it works Link to comment https://forums.phpfreaks.com/topic/296022-json-data-in-array/#findComment-1510672 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.