I am currently using a JSON encoded array to display the users in my database for an auto-suggest feature.

It looks something like this:

$sth = mysql_query("SELECT id, name FROM users");$json = array();

while($row = mysql_fetch_assoc($sth)) {
$json['name'] =$row['name'];
$json['id'] =$row['id'];
$data[] =$json;
}

print json_encode($data); This returns: [{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"}] My question is somewhat 2-fold: First, how would I manually add an additional object to this output? For example, let's say I wanted to add: {"id":"444","name":"A New Name"} Thus, it'd look like: [{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"},{"id":"444","name":"A New Name"}] Second, let's say I also wanted to add more objects to the array from a separate table as well, such as: $sth = mysql_query("SELECT id, title FROM another_table");

$json = array(); while($row = mysql_fetch_assoc($sth)) {$json['name'] = $row['title'];$json['id'] = $row['id'];$data[] = $json; } print json_encode($data);

This way I could have both tables populated in the JSON array, thus, showing up as additional options in my autosuggest.

Hopefully this makes sense, as I've tried hard to articulate what I am trying to accomplish.

Thanks!

-
And why don't you add them to your array before you do the json_encode? That would make more sense to me. –  wimvds Aug 17 '10 at 15:46

Just keep pushing to the $data array. $json = array();

while($row = mysql_fetch_assoc($sth)) {
$json['name'] =$row['name'];
$json['id'] =$row['id'];
$data[] =$json;
}

$custom = array('name'=>'foo', 'id' => 'bar');$data[] = $custom; Then at the very end, do your json_encode. Assuming you're not referring to merging it in the JS itself with multiple ajax calls. And if you have separate scripts, combine them in one php page. - Thanks Meder. Easier than I thought it'd be. – Dodinas Aug 17 '10 at 17:04 You could edit the JSON (text), but it's much easier to modify the array before you encode it. Or am I missing something? -  I'm not an expert in any of these fields, but I'll try and see if I can help. Try one of these: Option 1 (I don't know how unions work in mysql): $sth = mysql_query("SELECT id, name FROM users union SELECT id, name FROM (SELECT id, title as name from another_table) as T2"); $json = array(); while($row = mysql_fetch_assoc($sth)) {$json['name'] = $row['name'];$json['id'] = $row['id']; }$json['name'] = 'A new name'; $json['id'] = '444';$data[] = $json; print json_encode($data); I've never done PHP, so I'm making assumptions. I've also never used MySql, so there's more assumptions. Option 2: $sth = mysql_query("SELECT id, name FROM users");$json = array(); while($row = mysql_fetch_assoc($sth)) { $json['name'] =$row['name']; $json['id'] =$row['id']; } $sth = mysql_query("SELECT id, title from another_table"); while($row = mysql_fetch_assoc($sth)) {$json['name'] = $row['title'];$json['id'] = $row['id']; }$json['name'] = 'A new name'; $json['id'] = '444';$data[] = $json; print json_encode($data); Hope this helps.

I am currently using a JSON encoded array to display the users in my database for an auto-suggest feature.

It looks something like this:

$sth = mysql_query("SELECT id, name FROM users");$json = array();

while($row = mysql_fetch_assoc($sth)) {
$json['name'] =$row['name'];
$json['id'] =$row['id'];
$data[] =$json;
}

print json_encode($data); This returns: [{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"}] My question is somewhat 2-fold: First, how would I manually add an additional object to this output? For example, let's say I wanted to add: {"id":"444","name":"A New Name"} Thus, it'd look like: [{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"},{"id":"444","name":"A New Name"}] Second, let's say I also wanted to add more objects to the array from a separate table as well, such as: $sth = mysql_query("SELECT id, title FROM another_table");

$json = array(); while($row = mysql_fetch_assoc($sth)) {$json['name'] = $row['title'];$json['id'] = $row['id'];$data[] = $json; } print json_encode($data);

This way I could have both tables populated in the JSON array, thus, showing up as additional options in my autosuggest.

Hopefully this makes sense, as I've tried hard to articulate what I am trying to accomplish.

Thanks!

-
And why don't you add them to your array before you do the json_encode? That would make more sense to me. –  wimvds Aug 17 '10 at 15:46

Just keep pushing to the $data array. $json = array();

while($row = mysql_fetch_assoc($sth)) {
$json['name'] =$row['name'];
$json['id'] =$row['id'];
$data[] =$json;
}

$custom = array('name'=>'foo', 'id' => 'bar');$data[] = $custom; Then at the very end, do your json_encode. Assuming you're not referring to merging it in the JS itself with multiple ajax calls. And if you have separate scripts, combine them in one php page. - Thanks Meder. Easier than I thought it'd be. – Dodinas Aug 17 '10 at 17:04 You could edit the JSON (text), but it's much easier to modify the array before you encode it. Or am I missing something? -  I'm not an expert in any of these fields, but I'll try and see if I can help. Try one of these: Option 1 (I don't know how unions work in mysql): $sth = mysql_query("SELECT id, name FROM users union SELECT id, name FROM (SELECT id, title as name from another_table) as T2"); $json = array(); while($row = mysql_fetch_assoc($sth)) {$json['name'] = $row['name'];$json['id'] = $row['id']; }$json['name'] = 'A new name'; $json['id'] = '444';$data[] = $json; print json_encode($data); I've never done PHP, so I'm making assumptions. I've also never used MySql, so there's more assumptions. Option 2: $sth = mysql_query("SELECT id, name FROM users");$json = array(); while($row = mysql_fetch_assoc($sth)) { $json['name'] =$row['name']; $json['id'] =$row['id']; } $sth = mysql_query("SELECT id, title from another_table"); while($row = mysql_fetch_assoc($sth)) {$json['name'] = $row['title'];$json['id'] = $row['id']; }$json['name'] = 'A new name'; $json['id'] = '444';$data[] = $json; print json_encode($data); Hope this helps.

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客