Структура вывода php JSON - PullRequest
       5

Структура вывода php JSON

0 голосов
/ 27 октября 2010

это продолжение другого вопроса, который я задал: Перечисление данных JSON?

мой поиск возвращает только 1 элемент, я уверен, что проблема лежит где-то в моем php, я не слишкомконечно, если я добавляю в массив правильно, или это может быть javascript, который вы можете увидеть по ссылке выше, но я сомневаюсь в этом.

мой php код:


function mytheme_ajax_response() {
  $search = $_GET["search_text"];
  $result = db_query("SELECT nid FROM {node} WHERE title LIKE '%s%' AND type = 'product_collection'", $search);

  $noder = array();
  while ($record = db_fetch_object($result)) {
 $noder[] = $record;
  }

  $matches = array();
 $i = 0;
  foreach ($noder as $row) {
    $node = node_load($row->nid);
    $termlink = db_fetch_object(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $row->nid));
    $matches[$i]['title'] = $node->title;
 $matches[$i]['link'] = $termlink->tid;
  }
 ++$i;
 $hits = array();
 $hits['matches'] = $matches;
  print json_encode($hits);
  exit();
}

Ответы [ 2 ]

2 голосов
/ 27 октября 2010

Вы, похоже, увеличиваете свою переменную $ i ПОСЛЕ цикла foreach.Следовательно, $ i всегда равно 0 во всем цикле, поэтому вы всегда устанавливаете значения заголовка и ссылки для $ match [0].

0 голосов
/ 27 октября 2010

Попробуйте это:

function mytheme_ajax_response() {
  $search = $_GET["search_text"];
  $result = db_query("SELECT nid FROM {node} WHERE title LIKE '%s%' AND type = 'product_collection'", $search);

  $noder = array();
  while ($record = db_fetch_object($result)) {
 $noder[] = $record;
  }

  $matches = array();
  foreach ($noder as $row) {
    $node = node_load($row->nid);
    $termlink = db_fetch_object(db_query("SELECT tid FROM {term_node} WHERE nid = %d", $row->nid));
    $matches[] = array('title' => $node->title, 'link' => $termlink->tid);
  }
 $hits = array();
 $hits['matches'] = $matches;
  print json_encode($hits);
  exit();
}

Код $ i не увеличивал код, поскольку он находился вне цикла foreach. Создав второй массив, как указано выше, он вам все равно не нужен ... (надеюсь, это сработает) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...