2010-10-27 5 views
0

это продолжается с другой поставленный вопрос я: Listing out JSON data?Структура вывода PHP JSON

моего поиска возвращает только один элемент, им вполне уверен, что проблема лежит где-то в моем 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(); 
} 
+0

Можете ли вы показать нам вывод, который вы получаете? –

ответ

2

Вы, кажется, увеличивающиеся ваши $ я переменной после цикла Еогеасп. Следовательно, $ i всегда равно 0 во всем цикле, поэтому вы всегда устанавливаете значения заголовка и ссылки для $ matches [0].

+0

whoah, человек, глупый, нужно есть больше рыбы или что-то, спасибо большое! – Thor

+0

Нет проблем, мы все время пропустили очевидное время от времени ;-) –

+0

Если этот ответ удовлетворяет вашему вопросу, пожалуйста, отметьте его как ответ. – putolaruan

0

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

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(); 
} 

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

Смежные вопросы