2010-10-27 8 views
0

cela se poursuit d'une autre question que je posais: Listing out JSON data?Structure de la production php JSON

ma recherche retourne seulement 1 point, im assez sûr que le problème se situe quelque part dans mon php, je ne suis pas trop sûr si im ajouter à la tableau correctement, ou il pourrait être le javascript que vous pouvez voir sur le lien ci-dessus, mais j'en doute.

mon code 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

Pouvez-vous nous montrer le résultat que vous obtenez? –

Répondre

2

Vous semblez être incrémenter la variable i $ après la boucle foreach. Par conséquent, $ i est toujours 0 pendant toute la durée de votre boucle, donc vous définissez toujours les valeurs de titre et de lien pour $ matches [0].

+0

whoah, mec im stupide, besoin de manger plus de poisson ou quelque chose, merci beaucoup! – Thor

+0

Aucun problème, nous manquons tous de temps en temps ;-) –

+0

Si cette réponse répond à votre question, veuillez la marquer comme réponse. – putolaruan

0

Essayez ceci:

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 était pas incrémentant le code tel qu'il était en dehors de la boucle foreach. En faisant un second tableau comme ci-dessus, vous n'en avez pas besoin de toute façon ... (espérons que cela fonctionne) ...