I am trying to make json data in php using json_encode() function. Then I will use this data on the client side. I acheived some of the part. My current code displays json data in this format
{
"data":
{
"tag":"home",
"success":1,
"error":0,
"uid":"4fc8f94f1a51c5.32653037",
"name":"Zafar Saleem",
"profile_photo":"http:\/\/example.info\/android\/profile_photos\/profile1.jpg",
"places":
{
"place_photo":"http:\/\/example.info\/android\/places_photos\/place1.jpg",
"created_at":"2012-06-02 00:00:00",
"seeked":"0"
}
}
}
{
"data":
{
"tag":"home",
"success":1,
"error":0,
"uid":"4fc9c413554104.22444656",
"name":"Name",
"profile_photo":"http:\/\/example.info\/android\/profile_photos\/profile2.jpg",
"places":
{
"place_photo":"http:\/\/example.info\/android\/places_photos\/place2.jpg",
"created_at":"2012-06-03 00:00:00",
"seeked":"0"
}
}
}
{
"data":
{
"tag":"home",
"success":1,
"error":0,
"uid":"4fc9c48c529675.45551665",
"name":"Name",
"profile_photo":"http:\/\/example.info\/android\/profile_photos\/profile3.jpg",
"places":
{
"place_photo":"http:\/\/example.info\/android\/places_photos\/place3.jpg",
"created_at":"2012-06-04 00:00:00",
"seeked":"20"
}
}
}
what I want to show above data in this form
{
"data":
[
{
"tag":"home",
"success":1,
"error":0,
"uid":"4fc8f94f1a51c5.32653037",
"name":"Zafar Saleem",
"profile_photo":"http:\/\/example.info\/android\/profile_photos\/profile1.jpg",
"places":
{
"place_photo":"http:\/\/example.info\/android\/places_photos\/place1.jpg",
"created_at":"2012-06-02 00:00:00",
"seeked":"0"
}
},
{
"tag":"home",
"success":1,
"error":0,
"uid":"4fc9c413554104.22444656",
"name":"Name",
"profile_photo":"http:\/\/example.info\/android\/profile_photos\/profile2.jpg",
"places":
{
"place_photo":"http:\/\/example.info\/android\/places_photos\/place2.jpg",
"created_at":"2012-06-03 00:00:00",
"seeked":"0"
}
},
{
"tag":"home",
"success":1,
"error":0,
"uid":"4fc9c48c529675.45551665",
"name":"Name",
"profile_photo":"http:\/\/example.info\/android\/profile_photos\/profile3.jpg",
"places":
{
"place_photo":"http:\/\/example.info\/android\/places_photos\/place3.jpg",
"created_at":"2012-06-04 00:00:00",
"seeked":"20"
}
}
]
}
here is my php code that generates json data
database function that gets data from database
public function getHome() {
$result = mysql_query("SELECT * FROM places") or die(mysql_error());
// check for result
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$data[] = $row;
}
return $data;
/*
$result = mysql_fetch_array($result);
return $result;
*/
} else {
// user not found
return false;
}
}
here is where I make json on php
if($db->getHome()) {
$data = $db->getHome();
foreach($data as $r) {
$response['success'] = 1;
$response['uid'] = $r['uid'];
$response['name'] = $r['name'];
$response['profile_photo'] = $r['profile_photo_path'];
$response['places']['place_photo'] = $r['place_photo_path'];
$response['places']['latitude'] = $r['latitude'];
$response['places']['longitude'] = $r['longitude'];
$response['places']['created_at'] = $r['created_at'];
$response['places']['seeked'] = $r['total_completed'];
echo json_encode(array('data' => $response));
}
} else {
$response['error'] = 1;
$response['error_msg'] = 'No data available';
echo json_encode($response);
}
Consider making the code look like this:
Your code was echoing out each data row by itself, so that’s why you weren’t seeing an array (using square brackets).
I’ve also made your code a bit clearer by moving the response conversion into a separate function; this way it can be used by functions such as
array_mapto convert an array of data in one format to another format.Hope it helps.