Reputation: 65
I am working on android app with json data. For that I had make webservices using php and json. In which I got results but its not proper for my app. Below is my code:
<?php
require("config.inc.php");
$query= "SELECT * from zone";
try {
$stmt = $db->prepare($query);
$result = @$stmt->execute($query_params);
}
catch (PDOException $ex) {
$zone["success"] = 0;
$zone["message"] = "Database Error!";
die(json_encode($zone));
}
$rows = $stmt->fetchAll();
if ($rows) {
$zone["posts"] = array();
foreach ($rows as $row) {
$post = array();
$post["zone_id"]=$row["zone_id"];
$post["zone_name"]=$row["zone_name"];
$post["zone_turn"]=$row["zone_turn"];
$post["zone_charge"]=$row["zone_charge"];
$query1= "SELECT * from pincode_master where zone_id=".$row['zone_id']."";
try {
$stmt = $db->prepare($query1);
$result = @$stmt->execute($query_params);
}
catch (PDOException $ex) {
$zone["success"] = 0;
$zone["message"] = "Database Error!";
die(json_encode($zone));
}
$rows1 = $stmt->fetchAll();
if ($rows1) {
$zone["posts1"] = array();
foreach ($rows1 as $row1) {
$post1 = array();
//$post1["zone_id"]=$row1["zone_id"];
$post1["pincode_number"]=$row1["pincode_number"];
//echo $post["pincode_number"];
array_push($zone["posts1"], $post1);
}
}
array_push($zone["posts"], $post,$zone["posts1"]);
}
echo json_encode($zone);
} else {
$zone["success"] = 0;
$zone["message"] = "No Zone asssign for this day!";
}
?>
From above code I got below json array. It will contain all data in one array except the pincode number because I got it from another table.:
{"posts[{"zone_id":"2","zone_name":"A","zone_turn":"Monday,Thrusday","zone_charge":"15"},[{"pincode_number":"390007"},{"pincode_number":"390016"},{"pincode_number":"390021"},{"pincode_number":"390023"}],{"zone_id":"3","zone_name":"B","zone_turn":"Tuesday,Friday","zone_charge":"15"},[{"pincode_number":"390001"},{"pincode_number":"390004"},{"pincode_number":"390006"},{"pincode_number":"390010"},{"pincode_number":"390018"},{"pincode_number":"390019"},{"pincode_number":"390020"},{"pincode_number":"390022"}],{"zone_id":"7","zone_name":"W","zone_turn":"Saturday,Sunday,Friday","zone_charge":"15"},[{"pincode_number":"390001"},{"pincode_number":"390004"},{"pincode_number":"390006"},{"pincode_number":"390010"},{"pincode_number":"390018"},{"pincode_number":"390019"},{"pincode_number":"390020"},{"pincode_number":"390022"}],{"zone_id":"8","zone_name":"X","zone_turn":"Wednesday,Saturday,Sunday","zone_charge":"15"},[{"pincode_number":"390001"},{"pincode_number":"390004"},{"pincode_number":"390006"},{"pincode_number":"390010"},{"pincode_number":"390018"},{"pincode_number":"390019"},{"pincode_number":"390020"},{"pincode_number":"390022"}]],"posts1":[{"pincode_number":"390001"},{"pincode_number":"390004"},{"pincode_number":"390006"},{"pincode_number":"390010"},{"pincode_number":"390018"},{"pincode_number":"390019"},{"pincode_number":"390020"},{"pincode_number":"390022"}]}
But I want below one:
{"posts[{"zone_id":"2","zone_name":"A","zone_turn":"Monday,Thrusday","zone_charge":"15","pincode_number":{"390007","390016","390021"}}]}
Upvotes: 0
Views: 558
Reputation: 2433
You don't have to create a new array like this, $zone["posts1"] = array();
to add your pincodes, you can simply append the pincode data as well in to your already existing $post array.
$post = array();
$post["zone_id"]=$row["zone_id"];
$post["zone_name"]=$row["zone_name"];
$post["zone_turn"]=$row["zone_turn"];
$post["zone_charge"]=$row["zone_charge"];
.
.
.
$rows1 = $stmt->fetchAll();
if ($rows1) {
foreach ($rows1 as $row1) {
$post["pincode_number"][] = $row1["pincode_number"];
}
}
array_push($zone["posts"], $post);
}
Upvotes: 1
Reputation: 254
Just make $post1
a multi-dimensional array and array_push
after and OUTSIDE the foreach. Like below:
foreach ($rows1 as $row1) {
$post1 = array();
$post1["pincode_number"][] = $row1["pincode_number"];
}
array_push($zone["posts1"], $post1);
Upvotes: 0