0

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"}}]}

2 Answers 2

1

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);
   }  
Sign up to request clarification or add additional context in comments.

7 Comments

$post["pincode_number"][] = $row1["pincode_number"]; will show error @Vincent
Parse error: syntax error, unexpected '[', expecting ']' in C:\wamp\www\Web Service\zone.php on line 45
kindly suggest me the way
strange...is this $post["pincode_number"][] = $row1["pincode_number"]; your line number 45 ?
yes :) what piece of code do you have on your line number 45 ?
|
0

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);

1 Comment

$post1["pincode_number"][] = $row1["pincode_number"]; will show error @isnisn

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.