I am trying to get two array values within an array. I have two situations, one is done and the another one is not done. Within an array I am able to get a single array, but not able to achieve multiples, as mentioned in the below expected output.
[{"id":"3","category":"Name","text":"text with some data","image":"http:\/\/examole.net\/folder\/images\/category1.jpg"},{"id":"4","category":"Name","text":"text with some data","image":"http:\/\/examole.net\/folder\/images\/category1.jpg"}]
code with done and notdone query
$response = array();
$response2 = array();
if(isset($_REQUEST['action']) && $_REQUEST['action']=='test') {
$query="select * from exampledb where id='".$db->escape($_REQUEST['id'])."' and workdone='done'";
$num= $db->num_rows($query);
if($num) {
$rows = $db->get_results($query);
foreach($rows as $k=>$row1) {
$response[$k]['id'] = $row1['id'];
$response[$k]['category'] = $row1['category'];
$response[$k]['text'] = $row1['text'];
$response[$k]['image'] = $row1['image'];
}
} else{
$response['message']='No user Found';
$response['status']='fail';
}
$query="select * from exampledb where id='".$db->escape($_REQUEST['id'])."' and workdone='notdone'";
$num= $db->num_rows($query);
if($num) {
$rows = $db->get_results($query);
foreach($rows as $k=>$row1) {
$response[$k]['id'] = $row1['id'];
$response[$k]['category'] = $row1['category'];
$response[$k]['text'] = $row1['text'];
$response[$k]['image'] = $row1['image'];
}
} else {
$response['message']='No user Found';
$response['status']='fail';
}
echo json_encode($response);
echo json_encode($response2);
}
}
expecting output
[{Done:{{"id":"3","category":"Name","text":"text with some data","image":"http:\/\/examole.net\/folder\/images\/category1.jpg"},{"id":"4","category":"Name","text":"text with some data","image":"http:\/\/examole.net\/folder\/images\/category1.jpg"} },
Notdone:{{"id":"3","category":"Name","text":"text with some data","image":"http:\/\/examole.net\/folder\/images\/category1.jpg"},{"id":"4","category":"Name","text":"text with some data","image":"http:\/\/examole.net\/folder\/images\/category1.jpg"} }}]
You can make this in two way
1.
Leave everything as is and move the echo
just after the sql/array processing code:
//... [...] ...
}
else{
$response['message']='No user Found';
$response['status']='fail';
}
echo json_encode($response); //<---- here for the first
$query="select * from exampledb where id='".$db->escape($_REQUEST['id'])."' and workdone='notdone'";
$num= $db->num_rows($query); //.......
and
//... [...] ...
}
else{
$response['message']='No user Found';
$response['status']='fail';
}
echo json_encode($response); //<---- here for the second
//.......
2
change relative variables inside foearch after your SECOND query
// this remains the same from here
$query="select * from exampledb where id='".$db->escape($_REQUEST['id'])."' and workdone='done'";
$num= $db->num_rows($query);
if($num)
{
$rows = $db->get_results($query);
foreach($rows as $k=>$row1) {
$response[$k]['id'] = $row1['id'];
$response[$k]['category'] = $row1['category'];
$response[$k]['text'] = $row1['text'];
$response[$k]['image'] = $row1['image'];
}
}
else{
$response['message']='No user Found';
$response['status']='fail';
}
// ----------------- to here
// and here ....
$query="select * from exampledb where id='".$db->escape($_REQUEST['id'])."' and workdone='notdone'";
$num= $db->num_rows($query);
if($num)
{
$rows = $db->get_results($query);
foreach($rows as $k=>$row1) {
//... change this with $response2
$response2[$k]['id'] = $row1['id'];
$response2[$k]['category'] = $row1['category'];
$response2[$k]['text'] = $row1['text'];
$response2[$k]['image'] = $row1['image'];
}
}
else{
//... and this
$response2['message']='No user Found';
$response2['status']='fail';
}
//
echo json_encode($response);
echo json_encode($response2);
If you don't populate $response2
you never get at the end for json_encode