В настоящее время я использую JSON-кодированный массив для отображения пользователей в моей базе данных для функции автоматического предложения.
Это выглядит примерно так:
$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);
Это возвращает:
[{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"}]
My Вопрос несколько двоякий:
Во-первых , как мне вручную добавить дополнительный объект к этому выводу? Например, допустим, я хотел добавить: {"id": "444", "name": "A New Name"}
Таким образом, это будет выглядеть так:
[{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"},{"id":"444","name":"A New Name"}]
Второй , допустим, я также хотел добавить больше объектов в массив из отдельной таблицы, например:
$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);
Таким образом, я мог бы заполнить обе таблицы в массиве JSON, таким образом, показывая в качестве дополнительных опций в моем autosuggest.
Надеюсь, это имеет смысл, поскольку я изо всех сил пытался сформулировать, что я пытаюсь сделать.
Спасибо!
Просто продолжайте нажимать на массив $ data
.
$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;
Затем в самом конце введите json_encode
. Предполагая, что вы не имеете в виду объединение его в самом JS с несколькими вызовами ajax.
А если у вас есть отдельные скрипты, объедините их на одной php-странице.
Я не эксперт ни в одной из этих областей, но я попробую и посмотрю, смогу ли я помочь. Попробуйте одно из следующих:
Вариант 1 (я не знаю, как работают объединения в 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);
Я никогда не занимался PHP, поэтому делаю предположения. Я также никогда не использовал MySql, поэтому есть еще предположения.
Вариант 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);
Надеюсь, это поможет.
Вы можете редактировать JSON (текст), но гораздо проще изменить массив перед его кодированием. Или я что-то упустил?